Tesi di laurea specialistica Anno Accademico 2008/09 Relatore Ch.mo Prof. Stefano Russo Correlatori Ing. Roberto Natella Ing. Roberto Pietrantuono Candidato Berniero Volzone Matr.: 885/288 1
Contesto Software dependability: la capacità del sistema di erogare un servizio che può essere ritenuto legittimamente fidato [Laprie et al., 2004]; è un requisito rilevante per i sistemi mission/business critical: applicazioni radar per il controllo del traffico aereo; apparecchiature medicali; software per il controllo remoto di veicoli senza conducente; applicazioni di e-commerce, ecc.. in scenari long running è minacciata dal fenomeno del software aging. 2
Definizione Software aging Fenomeno che riduce la dependability del software long running, che può manifestarsi attraverso: una lenta e progressiva degradazione delle prestazioni (esaurimento delle risorse); improvvisi stalli o crash. Cause Potenziali condizioni di errore derivate da: memory leaking e memory bloating; frammentazione dei dischi; lock su file non rilasciati; accumulo di errori di round-off, ecc.. Soluzione Software rejuvenation riavvio dell applicazione periodico (frequenza di esecuzione costi); preventivo (prima del fallimento). 3
Contributo Sviluppo di uno strumento in grado di monitorare lo stato di salute del SO Linux miglioramento delle prestazioni delle future versioni del kernel. Analisi del fenomeno di software aging, tramite lo strumento realizzato, al fine di: identificare le aree del kernel maggiormente legate all aging riduzione dei tempi e dei costi per le operazioni di debugging; stimare il Time To Exhaustion (TTE) delle risorse schedulazione ottimale delle operazioni di ripristino. Implementazione di: un tracer in kernel space una funzione in user space uno script in ambiente Matlab monitoring delle informazioni di sistema; acquisizione e formattazione dei dati; valutazione dei risultati sperimentali. 4
Analisi del software aging nel SO Linux Il metodo utilizzato è measurement-based monitoring e raccolta periodica delle informazioni; analisi dei dati reperiti. 5
Strumento di monitoring 6
Procedura sperimentale Monitoring del sistema Dati raccolti Analisi dei dati Salvataggio Prelievo Sperimentatore 7
Esecuzione dell esperimento esperimento Settaggio del carico imposto con il toolstress (scelto tramite capacity test): 50 processi per lo stress della CPU; 50 processi per l I/O; 100 processi per malloc e free (blocchi di 4 MB); 100 processi per write ed unlink (blocchi di 4 MB). abilitazione del tracer; attivazione della funzione per il reperimento delle informazioni in user space; esecuzione del test per un tempo minimo di 5 giorni. 8
Analisi dei dati raccolti Individuazione dei trend di aging significativi test di Mann-Kendall; metodo di Sen. Decorrelazione dei dati Principal Component Analysis. Identificazione dei parametri di workload più rilevanti. 9
Trend di aging individuati Sono stati individuati 3 trend di aging (riguardanti il sottosistema di memory management) relativi a: memory depletion; throughput loss; time loss. 10
TTE estimation Per ogni trend individuato sono stati calcolati: slope (coefficiente angolare della retta rappresentante il trend); variazione percentuale dell indicatore di aging; TTE dell indicatore di aging. Memory depletion [kb/min] Parametri Slope (x10-5 ) V.P. (in 5 gg) TTE (giorni) FreeMem -0.5267-7.5% 64 Throughput loss memory management [op/min] n. tot. di mmap, munmap, brk -0.0063-11% 49 Time loss memory management [cicli clock/min] latenza tot. di mmap, munmap, brk 0.3537 4.8% 100 11
Identificazione dei parametri rilevanti Per ogni sottosistema è stato selezionato il set di PC in grado di ricoprire almeno il 98% della varianza delle informazioni monitorate. Le PC individuate rappresentano variabili (senza corrispettivo fisico) non ridondanti (decorrelate) e più rappresentative (con varianza maggiore). Dall analisi dei coefficienti di combinazione lineare delle PC è stato possibile individuare, quindi, un insieme di parametri di workload rilevanti. File system I/O Disk I/O driver Memory management Process management PC1 nr_access nr_softirq byte_request byte_alloc nr_task_runnable PC2 - nr_tasklet nr_flush nr_prelazioni - PC3 nr_write - - - PARAMETRI DI WORKLOAD 12
Conclusioni Conclusioni e sviluppi futuri Sono stati realizzati strumenti per il tracing e l analisi dei dati, grazie ai quali è stato possibile riscontrare il fenomeno del software aging nel SO Linux. L aging ha riguardato la quantità di memoria libera, il throughput e la latenza delle informazioni del sottosistema di memory management. È stata effettuata una stima del TTE ed è stato selezionato un subset di parametri di workload legato ai trend di aging individuati. Sviluppi futuri Esecuzione di ulteriori esperimenti per analizzare la variazione dei trend di aging al variare del carico. Sviluppo di tecniche di rejuvenation dei SO che sfruttino le metriche ed i parametri individuati. 13