270 likes | 393 Views
Stato di Avanzamento dello sviluppo del modulo Concretizator. Danilo Ardagna, Valerio Manzoni 20/7/2005. Sommario. Richiamo della formulazione del problema ottimizzazione Ri-ottimizzazione periodica Peeling dei cicli Risultati sperimentali Architettura software del Concretizator Demo.
E N D
Stato di Avanzamento dello sviluppo del modulo Concretizator Danilo Ardagna, Valerio Manzoni 20/7/2005
Sommario • Richiamo della formulazione del problema ottimizzazione • Ri-ottimizzazione periodica • Peeling dei cicli • Risultati sperimentali • Architettura software del Concretizator • Demo
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
Scenari di esecuzione Composite Service Execution Path ep1 25% Execution Path ep2 75% t1 t1 t1 t2 t2 t2 t4 t4 t4 t3 t3 t3 C1 not(C1) 75% 25% t5 t6 t5 t6 t7 t7 t7 HP: unfolding dei cicli
Formulazione del Problema: funzione obiettivo Funzione obiettivo Valore di qualità aggregato di un execution path 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 chele 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) ^
Cicli p0 1-p0 not(C1) <process> <sequence> <while cond=C1> <invoke t> </invoke> </while> </sequence> <process> t1 C1 p1 1-p1 t t2 p2 1-p2 . . . • 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à
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
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 • Price=800 • 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
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 Negotiator MAIS registry XML file: • Distribuzione numero iter. while e switch XML file: • vincoli (istanza) • pesi Specifica BPEL4WS semplificata Log file (re-opt): • ultimo task eseguito (stato) XML file: • WS candidati • Associazione task/WS Vincoli aggiuntivi Formulazione problema MILP Global Plan (selezione WS) WS Ranking Local Constr. Enforcement Process Translator Process Tuner lp_Solve / CPLEX Ranking Procedure
BPEL4WS Semplificato BPEL 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 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> </sequence> </switch> <element name = "elemento 9"> </element> </sequence> 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_1"> </webService> <webService name = "ws_4"> </webService> <webService name = "ws_19"> </webService> </task> . . . </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" /> <minTime value="5.767389" /> <price value="0.45754516" /> <reputation value="0.9279902" /> <availability value="0.9791445" /> <dataQuality value="0.91493726" /> </webService> . . . </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> <branch number = "3" value = "0.8"> </branch> </switch> <switch name = "switch 2"> <branch number = "1" value = "0.7"> </branch> <branch number = "2" value = "0.3"> </branch> </switch> <while name = "while 1"> <probability number = "0" value = "0.049"> </probability> <probability number = "1" value = "0.15"> </probability> <probability number = "2" value = "0.22"> </probability> <probability number = "3" value = "0.22"> </probability> <probability number = "4" value = "0.17"> </probability> <probability number = "5" value = "0.1"> </probability> </while> </bounds>
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, …)