Energy consumption is now emerging as a dominant performance measure in computer systems. In recent years, significant progress in improving energy efficiency has been accomplished by a combination of better hardware design and software tools. Yet the design of future energy-efficient computer systems will ultimately require the development of fundamental models and algorithmic tools that can be used to guide practical solutions.
This project is to study algorithmic methods for improving energy efficiency of data processing and storage in computer systems. The basic approach is to model the operation of various system components in the language of combinatorial optimization, with the objective function representing energy consumption, and to solve these problems using exact or approximate efficient algorithms. Many of those problems can be formulated in terms of task scheduling, where the objective is to optimize the CPU energy consumption required to complete a collection of tasks, while meeting some performance requirements. Other examples include minimizing energy consumption of memory systems, both the internal and external memories, by optimizing power levels and sophisticated paging or caching strategies. In addition to addressing some specific energy optimization problems, this work is expected to produce new algorithmic techniques, as well as deeper understanding of the adequacy of standard performance enhancement tools, like caching and load balancing, for improving energy efficiency. The study on energy complexity will also shed some light on the relation between computation and energy.
Some algorithms developed in the course of this research will be implemented, tested empirically on the FreeBSD-based platform, and made available to practitioners. The educational component includes research projects for graduate and undergraduate students, and developing a course on sustainable computing.