Whereas hardware is physically responsible for power consumption, hardware operations are guided by software, which is indirectly responsible of energy consumption. Research on Information Technology (IT) energy efficiency has mainly focused on hardware. This thesis focus on software energy consumption with the goal of providing a methodology to identify and reduce energy inefficiencies. In our approach, we estimate the energy consumption of application software independent of the infrastructure on which the software is deployed. Our methodology make a distinction between the usage of computational resources and the unit energy consumption of each resource. In this way, usage of resources and unit energy consumption can be measured independently. As thoroughly discussed in the thesis, this separation allows the definition of energy consumption benchmarks for homogenous clusters of transactions or software applications. These metrics can be used to define classes of energy efficiency within each cluster, thus enabling the comparison of the energy efficiency of similar applications/transactions. Benchmarks are used to identify energy inefficient software applications. The thesis proposes a memoization-based approach to improve the energy efficiency of inefficient software that does not require a refactoring of code. Optimizing code has a direct beneficial impact on energy efficiency, but it requires domain knowledge and an accurate analysis of the algorithms, which may not be feasible and is always too costly to perform for large code bases. We present an approach based on dynamic memoization to increase software energy efficiency without a need for a direct optimization of existing code. We analyze code automatically to identify a subset of pure functions that can be tabulated and automatically store results. The basic idea of our memoization-based approach is to fetch previously computed results from memory to avoid computation. This idea raises a number of research challenges. The thesis discusses a software framework that provides a tool-set to apply memoization to any software application tested on a sample of financial functions provided by a large Italian corporation that have accepted to participate in the empirical testing of our methodology as a pilot case set. Empirical results show how our approach can provide significant energy and time savings at limited costs, with a considerably positive economics impact.

Ormai da qualche anno si parla diffusamente dell’efficienza energetica dell’IT, ma raramente si affronta il problema del ruolo rivestito dal software nel determinare il consumo energetico dell’IT. Considerando che l’hardware è fisicamente responsabile per il consumo di potenza e che le operazioni hardware sono guidate dal software, allora possiamo affermare che il software è indirettamente responsabile del consumo di energia. La ricerca relativa all’efficienza energetica nel mondo IT si è concentrata principalmente su hardware. Questo lavoro di tesi pone l’attenzione sul consumo di energia del software con l’obiettivo di fornire una metodologia per identificare e ridurre le sue inefficienze energetiche. E’ stata definita quindi una metodologia per la stima del consumo di energia del software applicativo indipendentemente dall’infrastruttura su cui viene installato il software. Il nostro approccio si basa sulla distinzione tra l’utilizzo di risorse computazionali imputabili all’uso dell’applicazione e il consumo unitario di ogni risorsa utilizzata. In questo modo, l’utilizzo delle risorse e il consumo unitario energetico possono essere misurati in modo indipendente. Questa separazione permette la definizione di parametri di riferimento del consumo di energia per cluster omogenei di transazioni o di applicazioni software. Questi parametri possono essere utilizzati per definire classi di efficienza energetica all’interno di ciascun cluster, permettendo così il confronto dell’efficienza energetica di transazioni o operazioni similari. I parametri di riferimento precedentemente calcolati sono quindi utilizzati per identificare le applicazioni software inefficienti dal punto di vista energetico. Questo lavoro di tesi propone un approccio basato sulla memoizzazione dinamica per migliorare l’efficienza energetica dei software inefficienti, senza richiedere un refactoring di codice. L’eventuale ottimizzazione manuale del codice di un’applicazione ha un impatto positivo diretto sulla efficienza energetica, ma richiede la conoscenza di dominio e di una accurata analisi degli algoritmi, che non sempre è fattibile ed è molto costosa da eseguire per le grandi basi di codice. Il nostro approccio basato sulla memoizzazione permette di migliorare l’efficienza energetica del software senza la necessità di una ottimizzazione diretta del codice esistente. Il codice viene analizzato automaticamente per identificare un sottoinsieme di funzioni pure che possano essere tabulate per memorizzarne automaticamente i risultati. L’idea di base del nostro approccio è quello di recuperare dalla memoria i risultati precedentemente calcolati per evitare l’uso della CPU per effettuare calcoli aggiuntivi. La tesi presenta inoltre il framework che implementa la metodologia fornendo un set di strumenti per applicare la memoizzazione a qualsiasi applicazione software. Il framework è stato testato su un campione di funzioni finanziarie fornite da una grande azienda italiana che ha accettato di partecipare come un caso pilota alla verifica empirica della nostra metodologia. I risultati mostrano come il nostro approccio può fornire un notevole risparmio energetico e di tempo a costi contenuti, con un impatto economico molto positivo.

A methodology to improve the energy efficiency of software

BESSI, MARCO

Abstract

Whereas hardware is physically responsible for power consumption, hardware operations are guided by software, which is indirectly responsible of energy consumption. Research on Information Technology (IT) energy efficiency has mainly focused on hardware. This thesis focus on software energy consumption with the goal of providing a methodology to identify and reduce energy inefficiencies. In our approach, we estimate the energy consumption of application software independent of the infrastructure on which the software is deployed. Our methodology make a distinction between the usage of computational resources and the unit energy consumption of each resource. In this way, usage of resources and unit energy consumption can be measured independently. As thoroughly discussed in the thesis, this separation allows the definition of energy consumption benchmarks for homogenous clusters of transactions or software applications. These metrics can be used to define classes of energy efficiency within each cluster, thus enabling the comparison of the energy efficiency of similar applications/transactions. Benchmarks are used to identify energy inefficient software applications. The thesis proposes a memoization-based approach to improve the energy efficiency of inefficient software that does not require a refactoring of code. Optimizing code has a direct beneficial impact on energy efficiency, but it requires domain knowledge and an accurate analysis of the algorithms, which may not be feasible and is always too costly to perform for large code bases. We present an approach based on dynamic memoization to increase software energy efficiency without a need for a direct optimization of existing code. We analyze code automatically to identify a subset of pure functions that can be tabulated and automatically store results. The basic idea of our memoization-based approach is to fetch previously computed results from memory to avoid computation. This idea raises a number of research challenges. The thesis discusses a software framework that provides a tool-set to apply memoization to any software application tested on a sample of financial functions provided by a large Italian corporation that have accepted to participate in the empirical testing of our methodology as a pilot case set. Empirical results show how our approach can provide significant energy and time savings at limited costs, with a considerably positive economics impact.
FIORINI, CARLO ETTORE
PERNICI, BARBARA
AGOSTA, GIOVANNI
28-apr-2014
Ormai da qualche anno si parla diffusamente dell’efficienza energetica dell’IT, ma raramente si affronta il problema del ruolo rivestito dal software nel determinare il consumo energetico dell’IT. Considerando che l’hardware è fisicamente responsabile per il consumo di potenza e che le operazioni hardware sono guidate dal software, allora possiamo affermare che il software è indirettamente responsabile del consumo di energia. La ricerca relativa all’efficienza energetica nel mondo IT si è concentrata principalmente su hardware. Questo lavoro di tesi pone l’attenzione sul consumo di energia del software con l’obiettivo di fornire una metodologia per identificare e ridurre le sue inefficienze energetiche. E’ stata definita quindi una metodologia per la stima del consumo di energia del software applicativo indipendentemente dall’infrastruttura su cui viene installato il software. Il nostro approccio si basa sulla distinzione tra l’utilizzo di risorse computazionali imputabili all’uso dell’applicazione e il consumo unitario di ogni risorsa utilizzata. In questo modo, l’utilizzo delle risorse e il consumo unitario energetico possono essere misurati in modo indipendente. Questa separazione permette la definizione di parametri di riferimento del consumo di energia per cluster omogenei di transazioni o di applicazioni software. Questi parametri possono essere utilizzati per definire classi di efficienza energetica all’interno di ciascun cluster, permettendo così il confronto dell’efficienza energetica di transazioni o operazioni similari. I parametri di riferimento precedentemente calcolati sono quindi utilizzati per identificare le applicazioni software inefficienti dal punto di vista energetico. Questo lavoro di tesi propone un approccio basato sulla memoizzazione dinamica per migliorare l’efficienza energetica dei software inefficienti, senza richiedere un refactoring di codice. L’eventuale ottimizzazione manuale del codice di un’applicazione ha un impatto positivo diretto sulla efficienza energetica, ma richiede la conoscenza di dominio e di una accurata analisi degli algoritmi, che non sempre è fattibile ed è molto costosa da eseguire per le grandi basi di codice. Il nostro approccio basato sulla memoizzazione permette di migliorare l’efficienza energetica del software senza la necessità di una ottimizzazione diretta del codice esistente. Il codice viene analizzato automaticamente per identificare un sottoinsieme di funzioni pure che possano essere tabulate per memorizzarne automaticamente i risultati. L’idea di base del nostro approccio è quello di recuperare dalla memoria i risultati precedentemente calcolati per evitare l’uso della CPU per effettuare calcoli aggiuntivi. La tesi presenta inoltre il framework che implementa la metodologia fornendo un set di strumenti per applicare la memoizzazione a qualsiasi applicazione software. Il framework è stato testato su un campione di funzioni finanziarie fornite da una grande azienda italiana che ha accettato di partecipare come un caso pilota alla verifica empirica della nostra metodologia. I risultati mostrano come il nostro approccio può fornire un notevole risparmio energetico e di tempo a costi contenuti, con un impatto economico molto positivo.
Tesi di dottorato
File allegati
File Dimensione Formato  
03. Bessi_PhD_Thesis_Online.pdf

accessibile in internet per tutti

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