Measuring green operation

From Green software

Revision as of 12:44, 15 September 2010 by Green (Talk | contribs)
Jump to: navigation, search

When measuring the greenness of software during operation, only energy consumption is considered because it is the only environmental impact the execution of software has.

Contents

Tools

The following tools measure this energy consumption.

SimplePower

SimplePower [6] is an energy estimation tool based on transition-sensitive energy models. It assumes a five-stage pipelined data path and consists of the fetch stage, the instruction decode stage, the execution stage, the memory access stage and the write-back stage. For every functional unit a switch capacitance table is created that describes the amount of energy used to process a type of input. After that, the estimated type of output is used as the new input for the evaluation of the next cycle. This lookup mechanism is very rough but also very fast. In the paper describing SimplePower the authors compare their own tool with a commercial tool HSPICE. All test results were within 15% of the HSPICE results, but performance differed from 556 seconds for HSPICE to 0.1 second for SimplePower. The authors took a shortcut by not uncovering real power measurements of the tested algorithms to compare their estimations with, but instead settle for comparing to the HSPICE tool. Any inaccuracy in the HSPICE tool may hide the higher or even lower accuracy of SimplePower. In the same paper [6] different energy optimization techniques are presented that, even given the rough accuracy of this tool, are very likely to have a positive impact on energy consumption. The techniques deal with gating pipeline registers and memory/bus optimizations. SimplePower uses a workload, and estimates its output in joules, or watt-hours.

Wattch

Wattch [5] is an architecture level tool used to show compiler writers and software architects effects of high level design decisions, by simulating an application at the granularity of a cycle. As the name suggests, it uses watts to express its result. The framework uses parameterized power models of common structures present in superscalar microprocessors. When compared to a tool like JouleTrack, Wattch does the same thing but is according to its authors a thousand times at the cost of less accuracy. They estimate their findings within 10% of industry tools. This trade-off of accuracy for speed was made to make sure a lot of design decisions can be analyzed in a short time span.

JouleTrack JouleTrack is a web based tool to predict energy consumption of programs running on two popular microprocessors [4]. Despite the tool being taken offline, the concept of JouleTrack remains interesting as such: after a user uploads the C source code, it is compiled, then linked and finally inserted into an energy estimation module that from the binary code can estimate the energy that will be used to execute the program, given a certain workload. The authors found that by just looking at operating frequency and voltage, an estimation within a 7% error margin could already be made. By increasing to a per-cycle derivation of the operations used, the error margin could be reduced to roughly 2%. Besides the instructions also current leakage is accurately included with less than 6% error. JouleTrack, as the name suggests expresses its findings in joulesi. The user of JouleTrack is provided with graphical information about the energy use at different voltages and frequencies. For unknown reasons this tool has been taken offline.

SoftWatt

SoftWatt [7] is an energy profiling tool. It runs software on a custom operating system, called SimOS, to later analyze the kernel logs for power estimation. This tool is especially useful for detecting what parts of the software consume the most energy. This can be very helpful in trying to increase a piece of software‘s energy efficiency. The granularity of SoftWatt is quite large, and energy estimations are of such a rough nature that even the authors only discuss its use for creating heat maps of software. The heat map is calculated by means of proxies; SoftWatt shows how many cycles are used, what kind of hardware is used in those cycles and in what power-state the hardware is during those cycles to come with an estimation expressed in watts.

Joulemeter

Joulemeter is a tool of which only an alpha version has been released for free download. Technically it does the same as SoftWatt, but at a finer granularity. It has been created by researchers of Microsoft, and uses all the newest techniques for kernel log analysis that Windows 7 offers. This tool will mostly be used for energy profiling, and less for measuring/estimation energy consumption. Once the energy consumption characteristics of specific hardware are better known, this tool might prove very good at energy consumption predictions. Joulemeter [7] is shown schematically in figure 2. It shows three major components: workload manager, event logger and energy profiler. The workload manager manages the event tracing and runs the program with some data workload. It uses Event Tracing for Windows (ETW) for kernel level tracing system for generating events that can be logged by the event logger. The event logger uses Xperf for this. The energy profiler parses the final log into human readable text and graphics. Joulemeter could, given a workload, provide the output in watt. When used over a period in time instead of a predetermined workload, it provides output in joules or watt-hours. It is unknown when a beta or full version is released.

Discussion

Power from renewable sources (i.e. wind or solar energy) has a much smaller impact than energy from non-renewable sources (i.e. coal or nuclear plants). This is the arguments with which Scandinavian countries, where 99% of the energy comes from renewable sources, try to persuade companies to build data centers in those countries [1]. When considering energy consumption as a an indicator for greenness (or environmental impact) note that the source of energy is not included in these metrics.

Personal tools