D3VS: developer-driven dynamic voltage scaling
Energy consumption has become a primary concern in the last decade. One highly effective way to reduce CPU energy while still executing applications is dynamic voltage scaling (DVS). While DVS makes runtime transitions between power levels possible, thus far the scheduling of DVS has only been implemented at the system levels. The primary reason for this is that a transition has significant time and energy costs and therefore must be restricted. On the other hand, if developers are given control over DVS and the flexibility to apply it as necessary, then DVS scheduling decisions can include application-specific knowledge. We have developed a runtime support module for developer-driven dynamic voltage scaling (D3VS). The module allows applications to be densely populated with DVS scale requests, yet restricts the DVS overhead to 4% under reasonable assumptions. To do this, the module does not make power level transitions at every request. Instead, using the past history as hints, it picks a single power level that is representative of the application's behavior. In this thesis we present the analytical models and simulations used in the design of the D3VS runtime support module.