AMD idle speed higher with kernel 6.13 than with 6.12

It is probably to do with the recent change to the amd-pstate-epp governor which sets the idle speed to the lowest non-linear frequency rather than the lowest frequency:

[PATCH 0/3] cpufreq/amd-pstate: Set initial min_freq to lowest_nonlinear_freq

According to the AMD architectural programmer’s manual volume 2 [1], in section 17.6.4.1 CPPC_CAPABILITY_1" lowest_nonlinear_perf is described as “Reports the most energy efficient performance level (in terms of performance per watt). Above this threshold, lower performance levels generally result in increased energy efficiency. Reducing performance below this threshold does not result in total energy savings for a given computation, although it reduces instantaneous power consumption”. So lowest_nonlinear_perf is the most power efficient performance level, and going below that would lead to a worse performance/watt.

Also setting the minimum frequency to lowest_nonlinear_freq (instead of lowest_freq) allows the CPU to idle at a higher frequency which leads to more time being spent in a deeper idle state (as trivial idle tasks are completed sooner). This has shown a power benefit in some systems. In other systems, power consumption has increased but so has the throughput/watt.

I haven’t used kernel 6.12 for a while (I was using the 6.13RC from November until today), but I do recall my idle speed being lower on 6.12 than 6.13. I also recall my System Monitor sensor widget showing my CPU constantly switching between the min & max frequencies while idle, whereas now it sits near the lowest_nonlinear_freq most of the time when idle.

4 Likes