Note · 2025-02-11 · measured on the desk machine and the shelf server
What four governors cost at idle
A machine doing nothing is the easiest thing in the building to measure and the hardest thing to make anyone care about. Here is what the choice of frequency governor costs, in watts at the wall, when there is no work at all.
How I measured it
Both machines are described on the notes page and were in exactly that state: display off, no graphics card in the server, one disk spun up, link negotiated at a gigabit. I set the governor on every core, waited four minutes, then logged mains draw once a second for ten minutes. Five windows per governor, taken in a rotating order rather than one governor after another, so that a warming room could not quietly bias one of them. The figure below is the median of the five medians.
The one rule that cost me a day to learn: do not stay logged in. A single idle remote shell on the shelf server costs 1.1 W all by itself, because the terminal keeps the machine waking up to do nothing. I now start the logger, log out, and come back.
The numbers
| Governor | Desk, W | Shelf, W | p99, ms |
|---|---|---|---|
| performance | 24.6 | 41.2 | 7.8 |
| ondemand | 20.1 | 34.8 | 11.9 |
| schedutil | 19.3 | 33.6 | 8.4 |
| powersave | 18.4 | 32.9 | 41.3 |
Two things fall out of that table and neither is subtle.
First, pinning every core to its top frequency to idle there is expensive and buys nothing: 5.3 W on the desk machine, 7.6 W on the server, for 0.6 ms of tail latency against the governor that does the sensible thing. On a rack of forty such boards that is three hundred watts of nothing.
Second, the last 0.9 W is a trap. Going from schedutil to powersave saves less than a watt and multiplies the tail by five, because the governor will not raise the clock until the queue has already built up. If somebody tells you they saved power by clamping the maximum frequency, ask them for the latency plot. They usually have the power plot.
What I changed afterwards
Both my machines sit on schedutil and have done since this measurement. At the hosting company I did the same thing across a batch of nine hundred-odd nodes in 2022, for 4.8 W a node, which is written up in the work page rather than here because the interesting part there was the argument, not the measurement.
What this note does not say
- Nothing here is about a busy machine. Under sustained load the governor hardly matters, because every governor converges on «go fast».
- These are two machines, not a population. The gap between performance and schedutil was 22 % on one and 18 % on the other; I would not bet on either figure holding for your hardware, only on the sign.
- The meter measures the whole machine. If your power supply is 83 % efficient at 20 W, a good part of what I called a saving is the supply having an easier time.
The next note is about the layer underneath this one: what the processor does between the governor’s decisions, and why a polling idle loop undoes everything on this page.