Nel corso degli ultimi anni i dispositivi tecnologici ed i sistemi informatici si sono molto sviluppati e diventati ormai di uso comune. Questa enorme crescita porta con sé anche alcune problematiche ambientali relative ai consumi energetici diretti ed indiretti (per esempio per gli impianti di condizionamento dei data center), con un conseguente impatto sull’inquinamento terrestre. Per questo motivo è nata una nuova disciplina che si occupa di queste problematiche, ovvero il Green IT. Questo lavoro di tesi rientra nell’ambito di un filone particolare del Green IT, ovvero il Green Software, che si occupa di massimizzare l’efficienza energetica del software. Questo filone risulta ancora poco esplorato in quanto gli sforzi maggiori si sono concentrati soprattutto sul miglioramento dell’efficienza dell’hardware. Il lavoro di tesi si è concentrato sulla ricerca di regole metodologiche in grado di aumentare l’efficienza energetica del software scritto in linguaggio Java. In particolare sono stati eseguiti diversi test riguardanti la gestione delle stringhe, l’utilizzo degli iteratori e il costrutto switch. Sono stati creati dei piccoli programmi contenenti i costrutti obiettivo dell’analisi e le loro versioni alternative, con l’apporto di alcune modifiche. I test hanno permesso di confrontare i tempi di esecuzione di tutte le versioni e quindi di estrapolare alcune regole per la programmazione di applicativi Java in grado di massimizzare l’efficienza energetica. Si è trovato ad esempio che l’utilizzo di uno switch al posto di alcuni if concatenati fra loro (almeno 3) permette di risparmiare fino al 70% sul tempo di esecuzione. Oppure l’utilizzo di un oggetto StringBuilder per il concatenamento tra stringhe permette di risparmiare il 50% rispetto al classico metodo con il simbolo ”+”. Le regole trovate non hanno un valore assoluto, ma dipendono sempre da alcune condizioni. Per esempio si è trovato che un iteratore che esamina gli oggetti contenuti in un vettore risulta più efficiente di un semplice ciclo (risparmio dal 15% al 65%), ma solo se il vettore contiene un certo numero di oggetti. Dato che un risparmio sul tempo di esecuzione non si traduce necessariamente in un risparmio energetico è stato necessario eseguire dei test energetici in laboratorio per la validazione delle regole. Come applicativo esempio è stato scelto Adempiere, un programma ERP Open Source. Sono stati ripetuti i test misurando il consumo energetico effettivo mediante un’apposita strumentazione e questi hanno permesso di confermare la bontà delle regole trovate. I test energetici su un piccolo programma ad hoc implementato seguendo tutte le regole di ottimizzazione trovate ha permesso una riduzione del tempo di esecuzione del 65% ed un risparmio energetico vicino all’80%.

Definizione e validazione sperimentale di regole di scrittura del codice per ottimizzare l'efficienza energetica del software

LUI, MARCO
2010/2011

Abstract

Nel corso degli ultimi anni i dispositivi tecnologici ed i sistemi informatici si sono molto sviluppati e diventati ormai di uso comune. Questa enorme crescita porta con sé anche alcune problematiche ambientali relative ai consumi energetici diretti ed indiretti (per esempio per gli impianti di condizionamento dei data center), con un conseguente impatto sull’inquinamento terrestre. Per questo motivo è nata una nuova disciplina che si occupa di queste problematiche, ovvero il Green IT. Questo lavoro di tesi rientra nell’ambito di un filone particolare del Green IT, ovvero il Green Software, che si occupa di massimizzare l’efficienza energetica del software. Questo filone risulta ancora poco esplorato in quanto gli sforzi maggiori si sono concentrati soprattutto sul miglioramento dell’efficienza dell’hardware. Il lavoro di tesi si è concentrato sulla ricerca di regole metodologiche in grado di aumentare l’efficienza energetica del software scritto in linguaggio Java. In particolare sono stati eseguiti diversi test riguardanti la gestione delle stringhe, l’utilizzo degli iteratori e il costrutto switch. Sono stati creati dei piccoli programmi contenenti i costrutti obiettivo dell’analisi e le loro versioni alternative, con l’apporto di alcune modifiche. I test hanno permesso di confrontare i tempi di esecuzione di tutte le versioni e quindi di estrapolare alcune regole per la programmazione di applicativi Java in grado di massimizzare l’efficienza energetica. Si è trovato ad esempio che l’utilizzo di uno switch al posto di alcuni if concatenati fra loro (almeno 3) permette di risparmiare fino al 70% sul tempo di esecuzione. Oppure l’utilizzo di un oggetto StringBuilder per il concatenamento tra stringhe permette di risparmiare il 50% rispetto al classico metodo con il simbolo ”+”. Le regole trovate non hanno un valore assoluto, ma dipendono sempre da alcune condizioni. Per esempio si è trovato che un iteratore che esamina gli oggetti contenuti in un vettore risulta più efficiente di un semplice ciclo (risparmio dal 15% al 65%), ma solo se il vettore contiene un certo numero di oggetti. Dato che un risparmio sul tempo di esecuzione non si traduce necessariamente in un risparmio energetico è stato necessario eseguire dei test energetici in laboratorio per la validazione delle regole. Come applicativo esempio è stato scelto Adempiere, un programma ERP Open Source. Sono stati ripetuti i test misurando il consumo energetico effettivo mediante un’apposita strumentazione e questi hanno permesso di confermare la bontà delle regole trovate. I test energetici su un piccolo programma ad hoc implementato seguendo tutte le regole di ottimizzazione trovate ha permesso una riduzione del tempo di esecuzione del 65% ed un risparmio energetico vicino all’80%.
CAPRA, EUGENIO
BESSI, MARCO
ING V - Scuola di Ingegneria dell'Informazione
20-dic-2011
2010/2011
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2011_12_Lui.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 2.16 MB
Formato Adobe PDF
2.16 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/38182