Energy Performance Analysis of Software Applications on Servers
The increasing demand of computing resources of today's data centers lead to important issues in energy management as the power cost of running a data center is a significant portion of its total annual operating budget. Although the hardware subsystems, namely, processors, memory, disk, and network interfaces of a server actually consume power, it is the software activities that drive the operations of the hardware subsystems leading to varying dynamic power cost. With the aim of reducing power bills of data centers, "Green Computing" has emerged with the primary goal of making software more energy efficient without compromising the performance. Developers play an important role in controlling the energy cost of data center software while writing code. Bearing green principles in mind during design and coding stages of the software lifecycle can have a great impact on the energy efficiency of the final software product. There are a number of ways to optimize application programs at their design stages but it is difficult for the developers to analyse their applications in terms of power cost on the real servers.
In the first part of this thesis, we present the design of an automated test bench to measure the power cost of an application running on a server. We show how our test bench can be used by software developers to measure and improve the energy cost of two Java file access methods. Another benefit of our test bench has been demonstrated by comparing the energy footprint measurements of compression and decompression features provided by two popular Linux packages: 7z and rar. This information will be helpful in choosing a Green Software among others to perform a desired function.
In the second part, we show how software developers can contribute to energy efficiency of servers by choosing energy efficient APIs (Application Programming Interface) with the optimal choice of parameters while implementing file reading, file copy, file compression and file decompression operations in Java. We performed extensive measurements of energy cost of those operations on a Dell Power Edge 2950 machine running Linux and Windows servers. Measurement results show that energy costs of various APIs for those operations are sensitive to the buffer size selection. In addition, there is a trade-off between compression ratio and energy cost: because of more compression ratio, xz compression API consumes more energy than zip and gzip compression APIs. The third part of the thesis presents a design of a framework in which one developer generates energy cost models for the common design options. Then in future, other developers can make use of those models to find the energy costs for the same design options instead of direct measurements.
Overall, this thesis makes a contribution to reduce the perception gap between high level programs and the concept of energy efficiency.