Energy management has been a critical problem since the earliest days of mobile computing. The amount of work one can perform while mobile is fundamentally constrained by the limited energy supplied by one's battery. Although a large research investment in low-power circuit design and hardware power management has led to more energy-efficient systems, there is a growing realization that more is needed---the higher levels of the system, the operating system and applications, must also contribute to energy conservation.
This dissertation puts forth the claim that energy-aware adaptation, the dynamic balancing of application quality and energy conservation, is an essential part of a complete energy management strategy. Energy-aware applications identify possible tradeoffs between energy use and application quality, but defer decisions about which tradeoffs to make until runtime. The operating system uses additional information available during execution, such as resource supply and demand, to advise applications which tradeoffs are best.
This dissertation first shows how one can measure the energy impact of the higher levels of the system. It describes the design and implementation of PowerScope, an energy profiling tool that maps energy consumption to specific code components. PowerScope helps developers increase the energy-efficiency of their software by focusing attention on those processes and procedures that are responsible for the bulk of energy use.
PowerScope is used to perform a detailed study of energy-aware adaptation, focusing on two dimensions: reduction of data and computation quality, and relocation of execution to remote machines. The results of the study show that applications can significantly extend the battery lifetimes of the systems on which they execute by modifying their behavior. On some platforms, quality reduction and remote execution can decrease application energy usage by up to 94%. Further, the study results show that energy-aware adaptation is complementary to existing hardware energy-management techniques.
The operating system can best support energy-aware applications by using goal-directed adaptation, a feedback technique in which the system monitors energy supply and demand to select the best tradeoffs between quality and energy conservation. Users specify a desired battery lifetime, and the system triggers applications to modify their behavior in order to ensure that the specified goal is met. Results show that goal-directed adaptation can effectively meet battery lifetime goals that vary by as much as 30%.