State of the Art on Software Energy Consumption

Get Complete Project Material File(s) Now! »

Measuring Software Energy Consumption

Achieving software energy efficiency is an iterative process that consists in many enhancements and improvements to obtain a better source code and/or better execution environment without impacting software functionalities, evolution and maintainability. In order to produce an energy-efficient software, one first needs to faithfully assess software energy consumption and record its evolution over time. Numerous tools have been presented in the literature to measure software energy con-sumption. One can distinguish 2 categories of tools: hardware tools and software tools.

Hardware tools

This category of tools requires a dedicated hardware to measure the energy consumption, generally known to be very precise, but not fine-grained (give the general EC) and incur an instrumentation phase, possibly an additional financial cost. In most cases, they are digital measurement devices/boards that assess the energy consumed from the power supply in joules or Wh. Similar tools have been used in the literature to measure software energy consumption. The way these tools are used consists of measuring the energy consumption of a computer or a server before and during the software’s execution. Software energy consumption is thus inferred by subtracting the extra energy consumption that was induced by the software.
First, WattsUp Pro [56] is a device that has been used in several works [62, 96]. It is usually installed between each computer/server and its power source to record the total energy consumption at a maximum sampling rate of 1 sample per second and a maximum current of 15 amperes. The device has an internal memory that can be used to log the measures. The measures can cover a wide variety of data, including maximum potential, current, power, and cumulative costs. The memory-stored data can be downloaded to a computer via a USB cable. The product also works with a separate computer software Logger Pro or LabQuest App to create graphs, calculations, and device profiles. If the need is to measure the energy consumption of a cluster simultaneously, many WattsUp Pro devices might be necessary. The price of a WattsUp Pro device fluctuates between 50$ and 120$.1 It can thus be very expensive for a large project to acquire a set of devices.
PowerMon [20] and PowersMon2 [19] are other examples of hardware energy measure-ment boards. These power monitoring devices operate between a system’s power supply and a motherboard, to analyze the power consumption tradeoffs in software and computer applica-tions. PowerMon monitors voltage and current on six DC rails and reports measurements at a rate of up to 50 samples per second through a USB interface, allowing monitoring by the target host or a separate host. PowerMon2 is a bit smaller, compared to its predecessor, allowing it to be used in a 1U server chassis in the same 3.5 inch hard drive form factor. It also has 2 more DC rails (for a total of 8) for additional peripherals, such as disks and GPUs. PowerMon2 also uses a USB cable to report the power measurements at a maximum rate of 3 KHz. The price of a single PowerMon device is higher than 150$.2 Similarly to PowerMon devices, PowerInsight [75] is another tool built on an external board based on an ARM Cortex Processor. It is designed by Penguin Computing to accomplish component-level power and energy instrumentation of commodity hardware. PowerInsight can be connected to up to 15 components (disks, GPUs, etc.). It is also designed to work within a cluster.
Each board inserted between a computer’s motherboard and its power supply is equipped with an Ethernet port. This port is used to send and acquire data from/to the main node that aggregates and saves data for the cluster’s energy consumption. Measurements have been tested with the PowerInsight tool with a sampling rate of 1 sample per second.
GreenMiner [54] is a well-known measurement tool used in the literature, mainly to measure the energy consumption of mobile applications [52, 134]. It is a hardware/software test suite that runs tests on numerous devices and measures the energy consumption and the power usage of the entire device. The GreenMiner client side is a Raspberry Pi that acts as a testbed. It uses an Android test device to run the tests and collects the results from an Arduino board that monitors the energy consumption. Energy is measured via an INA219 energy measurement chip that samples and aggregates measurements with a frequency of 5 MHz. The testbed records and uploads the INA219 measurements to the GreenMiner web service that represents the server side, responsible for treating and analyzing the energy measurement data.
Other works have also used some other hardware tools to measure the software energy consumption in their studies, such as a 1500$ analog-to-digital data acquisition (DAQ) card (Na-tional Instruments USB-6215) that samples the amount of power consumed by the component at a 10 KHz frequency [90].

READ  D2D-BasedCellular Traffic Offloading: An Energy-Aware ScalableHeuristic Scheme 

Energy Consumption Variations

By energy variations, we refer to the problem of steadiness and stability when measuring software energy consumption. This means that ruining the exact same job or application within the exact same environment and configuration can result in different measures in energy consumption due to many factors [53].
This variation has often been related to the manufacturing process [31] of CPU and com-ponents, but has also been a subject of many studies, considering several aspects that could impact and vary the energy consumption across executions. The correlation between the pro-cessor temperature and the energy consumption was one of the most explored paths. Joakim v Kisroski et al. reported that identical processors can exhibit significant energy consumption variation with no close correlation with the processor temperature and performance [63]. The registered differences in energy consumption were most significant for idle and high load states with up to 29.6% and 19.5% variations respectively. However, Wang et al. [150] claimed that the processor thermal effect is one of the most contributing factors to the energy variation, and that the correlation between the CPU temperature and the energy consumption variation is very tight. The Spearman correlation coefficient between CPU temperature and energy consumption was higher than 0.93 for all experiments. This makes the processor temperature a delicate factor to consider when comparing energy consumption variations.
The ambient temperature was also discussed in other papers as a candidate factor for the energy variation of a processor. Varsamopoulos et al. [143] claimed that energy consumption may vary due to fluctuations caused by the external environment. These fluctuations may alter the processor temperature and its energy consumption. However, the temperature inside a data center did not show major variations from one node to another.
Diouri et al. [38], the study showed that switching the spot of two servers does not sub-stantially affect their energy consumption (this was also confirmed by Wang et al. [150], where the rack placement and power supply only introduced a maximum of 2.8 % variation on the observed energy consumption). Moreover, changing hardware components, such as the hard drive, the memory or even the power supply, does not affect the energy variation of a node,
making it mainly related to the processor. The authors also noticed during their experiments that old CPU versions could constitute a cause for a higher variation.
Beyond hardware components, the accuracy of power meters has also been questioned. Inadomi et al. [59] used three different power measurement tools: RAPL, Power Insight and BlueGene/Q EMON. The study showed that the variations in energy consumption are not related to energy monitoring tools. In fact, all of the three tools recorded the same 10 % of energy variation on the executed benchmarks. The authors related those variations mainly to the manufacturing process.

Table of contents :

1 Introduction 
1.1 Problem Statement
1.2 Objectives
1.3 Organization
2 State of the Art on Software Energy Consumption 
2.1 Measuring Software Energy Consumption
2.1.1 Hardware tools
2.1.2 Software tools
2.1.3 Energy Consumption Variations
2.1.4 Summary
2.2 Understanding Software Energy Consumption
2.3 Reducing Software Energy Consumption
2.3.1 At Execution Environment Level
2.3.2 At Code Level
2.3.3 Summary
3 Understanding the Hurdles and Requirements to Optimize Energy Consumption 
3.1 Overview
3.2 Methodology
3.2.1 Interviews
3.2.2 Transcription
3.2.3 Analysis
3.3 Observations and Findings
3.3.1 Developers Awareness and Knowledge About Software Energy Consumption
3.3.2 Constraints and Tooling Problems
3.3.3 Promoting SEC
3.4 Implications
3.4.1 For Developers
3.4.2 For Decision Makers
3.4.3 For Tool Makers
3.4.4 For Researchers
3.5 Threats To Validity
3.6 Summary
4 Controlling the Measurement of Energy Consumption 
4.1 Overview
4.2 Research Questions
4.3 Experimental Setup
4.3.1 Hardware Platform
4.3.2 Systems Benchmarks
4.3.3 Measurement Tools and Methodology
4.4 Energy Variation Analysis
4.4.1 RQ 1: Benchmarking Protocol
4.4.2 RQ 2: Processor Features
4.4.3 RQ 3: Processor Generation
4.4.4 RQ 4: Operating System
4.5 Experimental Guidelines
4.6 Threats to Validity
4.7 Summary
5 Measuring and Evaluating the Energy Consumption of JVMs 
5.1 Overview
5.2 Experimental Protocol
5.3 Experiments and Results
5.3.1 Energy Impact of JVM Distributions
5.3.2 Energy Impact of JVM Settings
5.4 Threats to Validity
5.5 Summary
6 Evaluating the Impact of Java Code Refactoring on Energy 
6.1 Overview
6.2 Experimental Protocol
6.2.1 Hardware Environment
6.2.2 Projects Under Study
6.2.3 Methodology and Tools
6.3 Refactoring Impact Analysis
6.3.1 Software Energy Consumption Evolution
6.3.2 Refactoring Rules Impact
6.4 Threats to Validity
6.5 Summary
7 Reducing the Energy Consumption of Java Software I/O 
7.1 Overview
7.2 Methodology
7.2.1 Environment Settings
7.2.2 Experiments Design
7.3 Experiments and Results
7.3.1 Behavior of I/O Methods
7.3.2 Refactoring I/O Methods
7.4 Threats to Validity
7.5 Summary
8 Conclusion 
8.1 Contributions
8.2 Short-Term Perspectives
8.3 Long-Term Perspectives
Bibliography

GET THE COMPLETE PROJECT

Related Posts