Stato di Avanzamento dello sviluppo del modulo Concretizator Danilo Ardagna, Valerio Manzoni 20/7/2005
Richiamo della formulazione del problema ottimizzazione Sommario Richiamo della formulazione del problema ottimizzazione Ri-ottimizzazione periodica Peeling dei cicli Risultati sperimentali Architettura software del Concretizator Demo
Variabilità di ambiente e contesto: MAIS Concretizator Obiettivi: determinare a tempo di esecuzione l’insieme di servizi concreti in modo da ottimizzare la QoS percepita dall’utente per l’esecuzione dell’istanza del singolo processo applicativo Ottimizzazione globale e garanzia di vincoli globali Variabilità di ambiente e contesto: Variabilità delle performance dei servizi concreti (carico, availability, nuovi servizi,…) Context switch dell’end-user Variabilità sul numero di esecuzione dei cicli Ri-ottimizzazione periodica del piano di esecuzione
HP: unfolding dei cicli Scenari di esecuzione t1 t2 t4 t5 t7 t3 t6 Composite Service C1 not(C1) 25% 75% Execution Path ep1 25% t1 t2 t4 t5 t7 t3 Execution Path ep2 75% t1 t2 t4 t7 t3 t6 HP: unfolding dei cicli
Formulazione del Problema: funzione obiettivo Valore di qualità aggregato di un execution path Funzione obiettivo Il valore aggregato di QoS associato ad ogni Execution Path è ottenuto con tecnica SAW (normalizzazione e somma pesata) Obiettivo: massimizzare la QoS considerando tutti i possibili scenari di esecuzione
Formulazione del Problema: vincoli Sono garantiti per ogni scenario di esecuzione i seguenti vincoli: Tempo di esecuzione ≤ R Tempo di esecuzionef ≤RD Availability ≥A Price ≤ B Reputation ≥T Data Quality ≥Q HP: la formulazione MILP richiede che le regole di valutazione delle dimensioni di qualità per il servizio composto introducano somme pesate (medie), prodotti, minimo e massimo
Formulazione del Problema Il problema è NP-Hard, è equivalente ad un problema di zaino Multiple Choice Multiple Dimension
Riottimizzazione Differenza tra valore corrente e predizione dimensioni qualità, |Qk-Qk|>Dk (variabilità delle prestazioni) Fallimento dell’invocazione di un’operazione (piano sub-ottimo) Periodicamente, con periodo adattativo in una time window (variabilità dei servizi disponibili) Context switch dell’utente (diversa scelta dei pesi) Dopo la valutazione di una condizione di switch (piano sub-ottimo) Al termine dell’esecuzione di un ciclo (se il numero di iterazioni è inferiore al massimo atteso, il piano individuato è sub-ottimo) ^
Peeling dei cicli e distribuzione di probabilità Vincoli aggiuntivi per le dimensioni di qualità che per i servizi composti vengono valutate come media (reputation e data quality) Peeling dei cicli e distribuzione di probabilità t1 1-p0 p0 t2 1-p1 p1 1-p2 p2 . t C1 not(C1) <process> <sequence> <while cond=C1> <invoke t> </invoke> </while> </sequence>
Tecniche di ottimizzazione Tecnica 1: Effettuare il peeling del ciclo corrente, unfolding degli altri cicli sulla base del numero massimo di iterazioni Tecnica 2: Effettuare il peeling di tutti i cicli. Problema: il numero di cammini cresce in modo esponenziale Tecnica 3: non viene effettuato il peeling ma solo l’unfolding dei cicli (Zeng et al., Canfora, Barreiro) Implementazione della Tecnica 1, Tecniche 2 e 3 benchmark
Peeling dei cicli risultati preliminari Distribuzioni di probablità di riferimento: geometrica, Poisson e uniforme
Peeling dei cicli risultati preliminari Confronto tecniche 1 e 3 (Peeling ciclo corrente vs. unfolding) Il miglioramento ottenibile con il peeling sono più evidenti quando i vincoli sono più stringenti I risultati preliminari mettono in evidenza che il peeling è più efficiente per distribuzioni geometriche e uniforme Miglioramento variabile tra il 5 e 45% Vantaggi: se il numero di iterazioni è inferiore al valor medio allora è possibile evitare di effettuare il re-planning Il peeling consente di ridurre l’overhead dovuto alla ri-ottimizzazione
Tempi di Esecuzione (CPLEX)
Negoziazione Obiettivi: Identificare una soluzione ammissibile se il problema di ottimizzazione iniziale non ammette soluzione Migliorare un piano di esecuzione negoziando i parametri di esecuzione dei servizi
Identificare una soluzione ammissibile HP: esiste un vincolo di budget ed è soddisfacibile Complessivamente il problema ha N vincoli Individuare il massimo numero K di vincoli che ammette soluzione valutando al più i 2(N-1)-2 rilassamenti del problema (analisi esaustiva delle combinazioni di vincoli) Negoziazione multi attributo per le dimensioni dei restanti N-K-1 vincoli violati Ripartizione del margine di prezzo: Tra i vincoli proporzionalmente in base alla violazione percentuale All’interno dello stesso vincolo, principio bottleneck removal: qualità positive: in modo inversamente proporzionale al valore assunto dalla dimensione di qualità qualità negative: in modo proporzionale al valore assunto dalla dimensione di qualità
Esempio Max Data Quality Tempo di esecuzione ≤ 7 Availability ≥0.99 Price ≤ 1000 Reputation ≥0.8 t1 t2 Il problema non ammette soluzione Il rilassamento che introduce unicamente il vincolo di prezzo è ammissibile, Price=200 Vengono valutati i seguenti rilassamenti: Price + T esec OK Price + Avail OK Price + Rep OK Price + Tesec + Avail No Price + Tesec + Rep No Price + Avail + Rep OK
Rilassamento Price+Avail+Rep Margine prezzo 200 Soluzione: WS11, WS21 t11+t21=6+2=8>7 Negoziazione: margine t11 proporzionale a 6/8 margine t21 proporzionale a 2/8
Migliorare un piano di esecuzione Esiste una soluzione ottima del problema Negoziare il valore delle dimensioni di qualità dell’ottimo individuato in modo da migliorare il valore della funzione obiettivo Il margine di prezzo viene ripartito tra le dimensioni di qualità proporzionalmente al valore delle derivate f/ Qkj della funzione obiettivo rispetto al valore della dimensione di qualità k assunta dalla soluzione ottima del task j
Formulazione del Problema
Ripartizione del margine di prezzo Il valore di qualità per la soluzione ottima del task j è intermedio tra i valori ammissibili di qualità del task (Qkj,min<Qkj<Qkj,max): La dimensione di qualità è positiva e per il task j l’ottimo globale coincide con l’ottimo locale: La dimensione di qualità è positiva e Qkj=Qkj,min: La dimensione di qualità è negativa e per il task j l’ottimo globale coincide con l’ottimo locale: La dimensione di qualità è negativa e Qkj=Qkj,max:
Architettura Software Concretizator XML file: WS candidati Associazione task/WS Negotiator MAIS registry XML file: vincoli (istanza) pesi Specifica BPEL4WS semplificata XML file: Distribuzione numero iter. while e switch Vincoli aggiuntivi Log file (re-opt): ultimo task eseguito (stato) Local Constr. Enforcement Process Translator Process Tuner Formulazione problema MILP lp_Solve / CPLEX Global Plan (selezione WS) Ranking Procedure WS Ranking
BPEL4WS Semplificato BPEL BPEL-like Attività primitive invoke receive replay wait assign throw terminate empty Attività strutturate sequence switch while pick flow scope BPEL-like Attività primitive element Attività strutturate sequence switch while flow
Un esempio t1 t2 t3 t4 t7 t5 t6 t8 t9 Rappresentazione XML <?xml version="1.0" ?> <sequence name = "sequenza 1"> <element name = "elemento 1"> </element> <switch name = "switch 1"> <sequence name = "sequenza 2"> <element name = "elemento 2"> </element> <switch name = "switch 2"> <element name = "elemento 5"> </element> <element name = "elemento 6"> </element> </switch> </sequence> <element name = "elemento 3"> </element> <sequence name = "sequenza 3"> <element name = "elemento 4"> </element> <while name = "while 1"> <element name = "elemento 7"> </element> <element name = "elemento 8"> </element> </while> <element name = "elemento 9"> </element> t2 t3 t4 t7 t5 t6 t8 t9
Qualità dei WS ed associazione task/WS WS candidati Associazione task/WS <?xml version="1.0" ?> <tasks> <task name = "task_1"> <webService name = "ws_1"> </webService> <webService name = "ws_2"> </webService> <webService name = "ws_3"> </webService> <webService name = "ws_22"> </webService> </task> <task name = "task_2"> <webService name = "ws_4"> </webService> <webService name = "ws_19"> </webService> . </tasks> <?xml version="1.0" ?> <webServices> <webService name="ws_1"> <maxTime value="6.767389" /> <minTime value="5.767389" /> <price value="0.123061776" /> <reputation value="0.82627237" /> <availability value="0.9903379" /> <dataQuality value="0.9857625" /> </webService> <webService name="ws_2"> <maxTime value="7.9125476" /> <price value="0.45754516" /> <reputation value="0.9279902" /> <availability value="0.9791445" /> <dataQuality value="0.91493726" /> . </webServices>
Vincoli, pesi, distribuzioni di probabilità Pesi e vincoli Annotazione specifica BPEL <?xml version="1.0" ?> <Users> <User name = "XXX"> <avTimeWeight value = "1"> </avTimeWeight> <priceWeight value ="0"> </priceWeight> <reputationWeight value = "0"> </reputationWeight> <availabilityWeight value = "0"> </availabilityWeight> <dataQualityWeight value = "0"> </dataQualityWeight> <restarTime value = "0.5"> </restarTime> <avTimeConstraint value = "2000"> </avTimeConstraint> <priceConstraint value ="15"> </priceConstraint> <reputationConstraint value = "0.0005"> </reputationConstraint> <availabilityConstraint value = "0.00000001"> </availabilityConstraint> <dataQualityConstraint value = "0.01"> </dataQualityConstraint> <degDurationConstraint value = "20000000"> </degDurationConstraint> </User> </Users> <?xml version="1.0" ?> <bounds> <switch name = "switch 1"> <branch number = "1" value = "0.1"> </branch> <branch number = "2" value = "0.1"> <branch number = "3" value = "0.8"> </switch> <switch name = "switch 2"> <branch number = "1" value = "0.7"> <branch number = "2" value = "0.3"> <while name = "while 1"> <probability number = "0" value = "0.049"> </probability> <probability number = "1" value = "0.15"> <probability number = "2" value = "0.22"> <probability number = "3" value = "0.22"> <probability number = "4" value = "0.17"> <probability number = "5" value = "0.1"> </while> </bounds>
DEMO
To dos Analisi Sperimentali! Estensione del modello: considerare l’invocazione di una singola operazione ed introdurre nuovi vincoli (provider dei servizi) Offrire il Concretizator come Web Service Rendere configurabile la scelta dell’ottimizzatore MILP (lp_solve, CPLEX, Symphony,COIN-OR, …)