cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_available_preferences
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
default performance balance_performance balance_power power
And the output for my CPU frequency governors:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
Thus, my system has 2 CPU frequency scaling governors available: performance & powersave, and 4 energy performance preferences: performance, balance_performance, balance_power & power.
I’m really not sure if amd-pstate-epp, which is active & autonomous by default, changes those settings itself according to how much work the system is doing at the time. I noticed that, after I made the change earlier, when I checked the energy performance settings a couple of hours later, they had reverted from balance_performance back to performance without any action from me.
I’m a bit distracted this afternoon, so I’m finding it hard to focus on this. But here’s a bit of reading about amd-pstate that helps explain the different settings:
https://docs.kernel.org/admin-guide/pm/amd-pstate.html
amd-pstate Driver Operation Modes
amd_pstate CPPC has 3 operation modes: autonomous (active) mode, non-autonomous (passive) mode and guided autonomous (guided) mode. Active/passive/guided mode can be chosen by different kernel parameters.
- In autonomous mode, platform ignores the desired performance level request and takes into account only the values set to the minimum, maximum and energy performance preference registers.
- In non-autonomous mode, platform gets desired performance level from OS directly through Desired Performance Register.
- In guided-autonomous mode, platform sets operating performance level autonomously according to the current workload and within the limits set by OS through min and max performance registers.
Active Mode
amd_pstate=active
This is the low-level firmware control mode which is implemented by amd_pstate_epp driver with amd_pstate=active passed to the kernel in the command line. In this mode, amd_pstate_epp driver provides a hint to the hardware if software wants to bias toward performance (0x0) or energy efficiency (0xff) to the CPPC firmware. then CPPC power algorithm will calculate the runtime workload and adjust the realtime cores frequency according to the power supply and thermal, core voltage and some other hardware conditions.
Passive Mode
amd_pstate=passive
It will be enabled if the amd_pstate=passive is passed to the kernel in the command line. In this mode, amd_pstate driver software specifies a desired QoS target in the CPPC performance scale as a relative number. This can be expressed as percentage of nominal performance (infrastructure max). Below the nominal sustained performance level, desired performance expresses the average performance level of the processor subject to the Performance Reduction Tolerance register. Above the nominal performance level, processor must provide at least nominal performance requested and go higher if current operating conditions allow.
Guided Mode
amd_pstate=guided
If amd_pstate=guided is passed to kernel command line option then this mode is activated. In this mode, driver requests minimum and maximum performance level and the platform autonomously selects a performance level in this range and appropriate to the current workload.
The way I interpret the above is that, if amd-pstate-epp is active (the default setting), then it will automatically switch between performance & powersave depending on what the system requires at the time. Nothing needs to be done by the user.