The need for minimizing energy consumption continues to be compelling in embedded, mobile, and server systems such as handheld devices, robots, spaceships, laptops, cluster servers, etc. This is due to the direct impact of constrained energy sources (e.g., battery size and weight), as well as cooling expenses in cluster-based systems to reduce heat dissipation. Energy management therefore plays a paramount role in not only hardware design but also in user-application, middleware and operating system design. This project focuses on techniques, algorithms and OS support to scale down energy needs whenever the system performance can be relaxed. Specifically, the project will study energy-aware resource reservations and slack-stealing algorithms to satisfy both performance needs and energy constraints.
Many energy management schemes also focus on a single resource that is dedicated to real-time or non-real-time processing. Unfortunately, in many practical systems such as Personal Digital Assistants (PDA), cellular phones, robots and personal computers, the combination of hard and soft real-time periodic tasks, aperiodic real-time tasks, interactive tasks and batch tasks must be supported. Each task may also require access to multiple resources. Therefore, this project will tackle the NP-hard problem of providing timely and simultaneous access to multiple resources by the use of practical abstractions and near-optimal heuristics aided by cooperative scheduling. Approaches where power management is carried out in different islands separately will also be compared against non-partitioning approaches. Finally, the project will address the need for explicit power management in system software for sensor networks.