[Unstable Update] August 2025

@stephane & @Jaypee

The available amd-pstate-epp power preferences are: performance, power, balance_power & balance_performance

You can check your current setting with:

cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference

You can change the amd-pstate-epp governor to balance performance with the following command:

echo balance_performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference

I just ran the above command and this is what mine now says:

cat /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference

balance_performance

And that setting is confirmed with cpupower:

cpupower frequency-info

analyzing CPU 12:
  driver: amd-pstate-epp
  CPUs which run at the same hardware frequency: 12
  CPUs which need to have their frequency coordinated by software: 12
  energy performance preference: balance_performance
  hardware limits: 403 MHz - 4.47 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.10 GHz and 4.47 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: 2.89 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
  amd-pstate limits:
    Highest Performance: 166. Maximum Frequency: 4.47 GHz.
    Nominal Performance: 119. Nominal Frequency: 3.20 GHz.
    Lowest Non-linear Performance: 41. Lowest Non-linear Frequency: 1.10 GHz.
    Lowest Performance: 15. Lowest Frequency: 400 MHz.
    Preferred Core Support: 1. Preferred Core Ranking: 196.

You maybe missed their point, look at the only available governor with amd-pstate-epp

Is your governor really set to the governor you set, or does it say your governor is balance_performance because you wrote it in the file?

What is the output of cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_available_preferences

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.

1 Like

so check this morning on Zen3 ( 5600x ) and on Zen5 (9900x )

for Zen3 , for both 6.12.44 lts and 6.16.4-2 ,
energy performance preference: balance_performance

for Zen5 for both 6.12.44 lts and 6.16.4-2 and 6.17rc3,
energy performance preference: balance_performance

balance_performance , means use powersave or performance from context use cpu

cpupower frequency-info
analyse du CPU 0 :
  driver: amd-pstate-epp
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  energy performance preference: balance_performance
  limitation matérielle : 614 MHz - 5.66 GHz
  régulateurs disponibles : performance powersave
  tactique actuelle : la fréquence doit être comprise entre 614 MHz et 5.66 GHz.
                  Le régulateur "powersave" est libre de choisir la vitesse
                  dans cette plage de fréquences.
  current CPU frequency: 3.63 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
  amd-pstate limits:
    Highest Performance: 166. Maximum Frequency: 5.66 GHz.
    Nominal Performance: 129. Nominal Frequency: 4.40 GHz.
    Lowest Non-linear Performance: 18. Lowest Non-linear Frequency: 614 MHz.
    Lowest Performance: 18. Lowest Frequency: 600 MHz.
    Preferred Core Support: 1. Preferred Core Ranking: 211.

not the case for EPYC ( performance )

1 Like

==> ERROR: module not found: 'crc32c_intel' on Linux kernel 6.17 -rc3-4, on 6.16.x no error.

The module has been discontinued for some time now.

modinfo crc32                                                                                                                 
crc32          crc32-generic

Thank you for the answer.