With the advent of portable and wireless devices and with the thermal problems originating from high-power processors, we are facing a growing awareness of the need for dynamic energy management. The operating system is the interface between the hardware, whose energy consumption should be controlled, and the application software, which consumes energy implicitly by activating hardware components. Because of the operating system's role as a mediator, it is predestined for energy resource management and makes energy a first class resource.
Modern CPUs increasingly use specialized accelerators to execute specific operations more efficiently. The additional power consumption of these accelerators, however, can lead to a reduction of the maximum possible processor frequency. We have developed a mechanism to detect and measure preventable influence of frequency reductions caused by AVX2 and AVX-512 instructions.
Our approach enables energy awareness if the resource-management subsystem is distributed among multiple operating-system modules. There are four key achievements: a model for modularization-aware energy management; the support for exposed and distributed energy accounting and allocation; the use of different energy-management interaction protocols; and, finally, the support virtualization of energy effects.
As a metric to guide temperature-aware and energy-efficient scheduling, we have proposed task activity vectors. An activity vector provides information to the scheduler about which CPU resources a particular task uses. The scheduler can use this knowledge to make more informed scheduling decisions and use the chip's resources more efficiently.
With Cooperative I/O, applications can declare I/O operations as deferrable and abortable. This enables the operating system to coalesce requests and reduce the number of power mode switches. Online monitoring of network traffic characteristics allows dynamically adapting the sleep interval of wireless network devices.
Scaling the processor frequency is a common technique to reduce power consumption and extend battery life. We propose an energy-aware scheduling policy that is directed by the CPU's event counters and only minimally impedes application performance.