When operating systems and hardware manage power and energy, they must be conservative in order to deliver requested resources while maintaining an expected rate of system throughput. Application-level energy management is more flexible, because applications can choose to request fewer resources or expect less performance, effectively trading accuracy or runtime for power. We propose to leverage this flexibility with energy exchanges, a C++ library extension that allows software to dynamically react to measured power and energy use by reducing functionality. 1. Background and Problem Given energy’s status as a precious commodity, many have ideas about how to police its use. Solutions for power and energy management abound, from hardware to the operating system to the virtual machine and the compiler. At the base of the stack, hardware has become dynamically adjustable, offering a range of supply voltages, operating frequencies, and sleep states. In the middle, operating systems tune hardware based on the measured and expected needs of applications running above. For example, Linux has policies to manage processor idle states and frequency scaling [5], power-aware scheduling algorithms have been proposed to schedule applications such that resource slow-downs can be made for longer periods or at a larger scale [4]. Such hardware and operating system adjustments need no application-level changes. Sometimes, this is desirable: many application developers cannot or will not modify their programs. However, keeping applications out of the energy management picture limits efficiency potentials, because applications have three energy control mechanisms that lower levels do not. First, only applications have the ability to request fewer processing and memory resources; hardware
[1]
Song Liu,et al.
Flikker: saving DRAM refresh-power through critical data partitioning
,
2011,
ASPLOS XVI.
[2]
Ming Zhang,et al.
Where is the energy spent inside my app?: fine grained energy accounting on smartphones with Eprof
,
2012,
EuroSys '12.
[3]
Dan Grossman,et al.
EnerJ: approximate data types for safe and general low-power computation
,
2011,
PLDI '11.
[4]
Kathryn S. McKinley,et al.
The latency, accuracy, and battery (LAB) abstraction: programmer productivity and energy efficiency for continuous mobile context sensing
,
2013,
OOPSLA.
[5]
Woongki Baek,et al.
Green: a framework for supporting energy-conscious programming using controlled approximation
,
2010,
PLDI '10.
[6]
Mark D. Corner,et al.
Eon: a language and runtime system for perpetual systems
,
2007,
SenSys '07.
[7]
Christian Bienia,et al.
Benchmarking modern multiprocessors
,
2011
.
[8]
Jordi Torres,et al.
GreenSlot: Scheduling energy consumption in green datacenters
,
2011,
2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC).