Modern IT systems offer hundreds of tunable knobs that impact their performances. Manually finding a well-performing configuration is a daunting task, especially when considering that the performance associated with a knob configuration varies with the workload to which the system is exposed. Hence, many machine-learning-based approaches have been proposed to find optimized configurations. However, they usually target a specific application, need huge knowledge bases (which must be updated periodically) or perform many performance tests to find well-performing configurations. Usually, these performance tests are run in a performance test environment, where we can evaluate as many configurations as we desire. In many situations, this is not feasible, as the test environment is not available, and we must evaluate the configurations directly in the production environment while exposed to the real live workload, over which we have no control. This thesis proposes a configuration tuning methodology addressing these issues based on Bayesian Optimisation. In particular, the proposed approach is generic and holistic in that it is not tailored around a specific application and considers multiple layers of the IT stack. We model the external working conditions (such as the workload) via Contextual Gaussian Processes. We use a forecasting module to decide when to schedule performance testing experiments in the production environment. Finally, we give special consideration to satisfying service level agreement (SLA) constraints. We evaluate the approach on various tunable systems, such as database management systems and java web applications.

I moderni sistemi informatici offrono centinaia di parametri di configurazione che ne modificano comportamento e prestazioni. Cercare manualmente una configurazione ben performante è un compito estremamente difficile, specialmente considerando che la prestazione del sistema dipende sia dalla configurazione applicata che dal carico a cui il sistema è esposto. In letteratura esistono diversi approci basati su intellligenza artificiale per cercare configurazioni ottimizzate. Tuttavia, queste soluzioni spesso sono indirizzate verso applicazioni specifiche, necessitano di grandi quantità di dati (che devo essere periodicamente aggiornate) o richiedono di eseguire numerosi test di performance per poter trovare configurazioni ben performanti. Tipicamente, questi test di performance sono eseguiti in un ambiente di test, dove è possibile valutare tutte le configurazioni desiderate. In molti casi reali, tuttavia, questo non è possibile visto che non esiste un ambiente di test, e le configurazioni devono essere valutate direttamente nell'ambiente di produzione, con l'applicazione soggetta al carico reale su cui non abbiamo alcun controllo. Questa tesi indirizza queste problematiche proponendo una metodologia di ottimizzazione di tipo Bayesiano. Nello specifico, l'approccio proposto è generico ed olistico in quanto non indirizzato verso un'applicazione o tecnologia specifica, e capace di considerare i diversi componenti di un tipico stack IT. Le condizioni di lavoro (come il carico) vengono modellate attraverso dei processi Gaussiani contestuali. Un modulo di predizione modella il carico in ingresso all'applicazione, consentendo di decidere automaticamente quando è più opportuno eseguire i test di performance nell'ambiente di produzione. Viene inoltre dedicata particolare attenzione a rispettare diversi vincoli sulle prestazioni dell'aplicazione. Il modello viene valutato su diversi sistemi, come database e applicazioni Java.

Constraint-aware performance autotuning in live production environment

Cereda, Stefano
2022/2023

Abstract

Modern IT systems offer hundreds of tunable knobs that impact their performances. Manually finding a well-performing configuration is a daunting task, especially when considering that the performance associated with a knob configuration varies with the workload to which the system is exposed. Hence, many machine-learning-based approaches have been proposed to find optimized configurations. However, they usually target a specific application, need huge knowledge bases (which must be updated periodically) or perform many performance tests to find well-performing configurations. Usually, these performance tests are run in a performance test environment, where we can evaluate as many configurations as we desire. In many situations, this is not feasible, as the test environment is not available, and we must evaluate the configurations directly in the production environment while exposed to the real live workload, over which we have no control. This thesis proposes a configuration tuning methodology addressing these issues based on Bayesian Optimisation. In particular, the proposed approach is generic and holistic in that it is not tailored around a specific application and considers multiple layers of the IT stack. We model the external working conditions (such as the workload) via Contextual Gaussian Processes. We use a forecasting module to decide when to schedule performance testing experiments in the production environment. Finally, we give special consideration to satisfying service level agreement (SLA) constraints. We evaluate the approach on various tunable systems, such as database management systems and java web applications.
PIRODDI, LUIGI
GATTI, NICOLA
13-dic-2022
Constraint-aware performance autotuning in live production environment
I moderni sistemi informatici offrono centinaia di parametri di configurazione che ne modificano comportamento e prestazioni. Cercare manualmente una configurazione ben performante è un compito estremamente difficile, specialmente considerando che la prestazione del sistema dipende sia dalla configurazione applicata che dal carico a cui il sistema è esposto. In letteratura esistono diversi approci basati su intellligenza artificiale per cercare configurazioni ottimizzate. Tuttavia, queste soluzioni spesso sono indirizzate verso applicazioni specifiche, necessitano di grandi quantità di dati (che devo essere periodicamente aggiornate) o richiedono di eseguire numerosi test di performance per poter trovare configurazioni ben performanti. Tipicamente, questi test di performance sono eseguiti in un ambiente di test, dove è possibile valutare tutte le configurazioni desiderate. In molti casi reali, tuttavia, questo non è possibile visto che non esiste un ambiente di test, e le configurazioni devono essere valutate direttamente nell'ambiente di produzione, con l'applicazione soggetta al carico reale su cui non abbiamo alcun controllo. Questa tesi indirizza queste problematiche proponendo una metodologia di ottimizzazione di tipo Bayesiano. Nello specifico, l'approccio proposto è generico ed olistico in quanto non indirizzato verso un'applicazione o tecnologia specifica, e capace di considerare i diversi componenti di un tipico stack IT. Le condizioni di lavoro (come il carico) vengono modellate attraverso dei processi Gaussiani contestuali. Un modulo di predizione modella il carico in ingresso all'applicazione, consentendo di decidere automaticamente quando è più opportuno eseguire i test di performance nell'ambiente di produzione. Viene inoltre dedicata particolare attenzione a rispettare diversi vincoli sulle prestazioni dell'aplicazione. Il modello viene valutato su diversi sistemi, come database e applicazioni Java.
File allegati
File Dimensione Formato  
thesis.pdf

accessibile in internet per tutti

Descrizione: Tesi
Dimensione 4.51 MB
Formato Adobe PDF
4.51 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/195585