idle policy
-d disables one idle state, chosen by its index number. -D disables every idle state whose exit latency is at or above the value you give.
| Option | Argument | Effect |
|---|---|---|
-d N (--disable) |
State number | Disables only that one state. |
-D X (--disable-by-latency) |
Latency in µs | Disables all states with latency ≥ X, and enables all states with latency < X. |
The second half of -D matters. It also re-enables states below the threshold, so it can undo a disable you did earlier. -d touches only the state you name.
idle-info output gives these latencies:
| Index | State | Latency (µs) |
|---|---|---|
| 0 | POLL | 0 |
| 1 | C1 | 1 |
| 2 | C1E | 2 |
| 3 | C6 | 190 |
sudo cpupower idle-set -d 2disables only C1E. C6 stays as it is now (disabled).sudo cpupower idle-set -D 2disables C1E (latency 2) and C6 (190). It enables POLL and C1 (below 2).sudo cpupower idle-set -D 3disables only C6. It re-enables C1E, because 2 is below 3.sudo cpupower idle-set -D 1disables C1, C1E and C6, and leaves only POLL. This keeps CPUs busy-polling when idle, so power use and heat rise a lot. Avoid it unless you need it.
Use -D 2 if you want C1E and C6 both off with one command. It is also portable across machines, since it uses latency instead of state numbers, which can differ between CPUs. SUSE’s guide uses -D 80 as an example of disabling all states at or above 80 µs.
Use -d when you want exact control over one state. You can chain it, for example -d 2 and then -d 3.
Both changes are runtime only and are lost on reboot. Without -c, they apply to all CPUs, and you can limit them with cpupower -c 0-15 idle-set .... Afterwards, run cpupower idle-info to confirm the (DISABLED) flags.