Computing the optimal speed schedule satisfying certain performance constraints requires knowledge of task CPU use distribution, which typically an application lacks. RightSpeed keeps track of how long tasks of each type have taken, and uses this information to compute such an optimal speed schedule with PACE.
In [11], we described how to compute an optimal
schedule assuming a linear relationship between energy and speed
squared. Since the processors on which RightSpeed runs do not satisfy
this property, we developed a more general formula that does not rely on
it. We discovered that the optimal speed schedule satisfies
where
is the speed to run after
completing
cycles of a task,
is the probability the task
takes more than
cycles,
is the energy consumption at
speed
, and
is a constant chosen to satisfy the performance
constraint. For more details about this formula and a proof that it
works, see [9, pp. 83-99].
In [11], we assumed that the CPU had arbitrarily variable speed settings that could be changed at arbitrary times. Our real systems have only a limited number of speed settings, and Windows 2000 only allows us to change speed at certain fixed times, once per millisecond. Thus, for RightSpeed we need an algorithm that takes these realities into account yet still computes a near-optimal schedule. Our algorithm uses the following four steps.
As an optimization, we precompute a set of parameterized speed schedules
when RightSpeed is installed, based solely on the CPU characteristics.
Thus, determining a speed schedule involves only a binary search through
the schedules to find the lowest-energy one that nevertheless satisfies
the constraint. With this optimization, the algorithm takes time
where
is the number of worthwhile speed settings. For details of
this and other optimizations, see [9, pp. 224-226] and
the code at the website associated with this paper.