This is just a notice to everyone searching for things like “why is my computer always booting in powersave / power save mode?”
I had the same “problem” going on with my computer, but finally found a single line that explains why that is expected behavior if you have an Intel CPU/processor using the intel_pstate
driver.
So when I started this journey, I initially noticed a message showing up in the journal during boot:
ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
Normal? But I had set the power profile in KDE to performance if it was on AC (and it is). Why is it changing to normal?
Now, if I install cpupower
and set it to performance mode (or via sysfs
similar to below), it still changes the energy performance bias to performance. On kernels older than 5.18, I do notice a slight improvement by changing this value manually (or automatically via a script, but doesn’t seem to auto-change based on power state).
>>> cat /sys/devices/system/cpu/cpu*/power/energy_perf_bias
File: /sys/devices/system/cpu/cpu0/power/energy_perf_bias
6
...
A value of 6 is normal, lower values down to 0 goes to performance, and higher values are for powersave. 6 appears to be the default.
I then discovered other values like scaling governor.
>>> cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
File: /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
powersave
...
Powersave? I thought it should be performance?
After digging around the internet and seeing most documentation pointing to tlp
refering to what values this could be (and noting that intel_pstate
only has the values powersave and performance available). However, tlp
is not installed by default and isn’t anymore. It provides roughly the same function as power-profiles-daemon
, but the latter is required for KDE’s power settings to work. You can’t have both installed, they conflict.
So I went to the power-profiles-daemon
gitlab page.
Partway down the page under the “Operations on Intel-based machines” heading, there is a small paragraph:
Finally, if the Intel P-State scaling driver is used in
active
mode, the P-State scaling governor will be changed topowersave
as it is the only P-State scaling governor that allows for the “Energy vs Performance Hints” to be taken into consideration, ie. the only P-State scaling governor that allows power-profiles-daemon to work.
So the CPU governor value is expected to be powersave
if you have the intel_pstate
driver as it’s the only one that will work properly with the power profile daemon. When I change it to performance
manually I notice some strange stuttering happening.
As far as the other stuff… I suppose the ENERGY_PERF_BIAS
value largely has little effect when intel_pstate
driver is used.
If you want to see what power profile daemon is set to, you can use powerprofilesctl
:
>>> powerprofilesctl
* performance:
Driver: intel_pstate
Degraded: no
balanced:
Driver: intel_pstate
power-saver:
Driver: intel_pstate
The asterisk (*) is the one that is currently in use, so clearly it is set to performance which is what I expect… even if the other values for /sys/devices/system/cpu/cpu*/
are not what you would expect.
TLDR: The driver seems to ignore some hinting values and requires the governor to be powersave
to work properly with the software performance hinting libraries, so you don’t need to worry about those.