CPU jumps only between two frequencies

Hi there, after using Arch for a couple of years I wanted to give Tumbleweed a try on a second partition on my laptop. After settin everything up I first noticed, that the device ran significantly hotter. A quick look into systemmonitor revealed, that CPU constantly jumps between 800MHz and 2.6GHz without any frequencies in between, even on idle. Contrary on Arch, the CPU frequencies adjust much more granular. I’ll attach a screenshot to show you what I mean.

On Arch, I haven’t set up anything regarding power management, so no tlp or anyhting.
The outputs of cpupower frequency-info are the same on both systems:

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 5.00 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 800 MHz and 5.00 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 800 MHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

So now the question, what is openSuse doing differently and how can I get my CPU to run the same as on Arch?

Might be related to power-profiles-damon which Plasma exposes in Power management settings. Beyond that, compare these settings:

$ grep . /sys/devices/system/cpu/intel_pstate/*
$ grep . /sys/devices/system/cpu/cpufreq/policy0/*

I suppose you’ll find different values for energy_performance_preference.

Thanks for the answer.

power-profiles-daemonwas never on installed on both systems. You’re right that energy_performance_preference differs.

### Arch

/sys/devices/system/cpu/intel_pstate/hwp_dynamic_boost:0
/sys/devices/system/cpu/intel_pstate/max_perf_pct:100
/sys/devices/system/cpu/intel_pstate/min_perf_pct:16
/sys/devices/system/cpu/intel_pstate/no_turbo:0
/sys/devices/system/cpu/intel_pstate/num_pstates:43
/sys/devices/system/cpu/intel_pstate/status:active
/sys/devices/system/cpu/intel_pstate/turbo_pct:56
/sys/devices/system/cpu/cpufreq/policy0/affected_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/base_frequency:2600000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq:5000000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq:800000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency:0
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_available_preferences:default performance balance_performance balance_power power 
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference:balance_performance
/sys/devices/system/cpu/cpufreq/policy0/related_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors:performance powersave
/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq:1875609
/sys/devices/system/cpu/cpufreq/policy0/scaling_driver:intel_pstate
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor:powersave
/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq:5000000
/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq:800000
/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed:<unsupported>

### Suse

/sys/devices/system/cpu/intel_pstate/hwp_dynamic_boost:0
/sys/devices/system/cpu/intel_pstate/max_perf_pct:100
/sys/devices/system/cpu/intel_pstate/min_perf_pct:16
/sys/devices/system/cpu/intel_pstate/no_turbo:0
/sys/devices/system/cpu/intel_pstate/num_pstates:43
/sys/devices/system/cpu/intel_pstate/status:active
/sys/devices/system/cpu/intel_pstate/turbo_pct:56
/sys/devices/system/cpu/cpufreq/policy0/affected_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/base_frequency:2600000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq:5000000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq:800000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency:0
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_available_preferences:default performance balance_performance balance_power power 
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference:balance_power
/sys/devices/system/cpu/cpufreq/policy0/related_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors:performance powersave
/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq:2600000
/sys/devices/system/cpu/cpufreq/policy0/scaling_driver:intel_pstate
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor:powersave
/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq:5000000
/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq:800000
/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed:<unsupported>

These where both queried on battery. Interestingly, suse changes to balance_performance when AC is plugged in. The frequency behaviour does not change though.
Additional note, checking EPB values with x86_energy_perf_policy shows a value of 6 on both.

A possible explanation is that currently power-profiles-daemon conflicts with tlp, and tlp is probably being recommended for your laptop. So it changes when you plug in AC. No idea why frequency scaling behaves the same though. Have you done a stress test? Even arch doesn’t reach the high end of the frequency range.

Bummer :frowning_face:

Not stress tests per se, but you can see the CPU ramp up to higher clocks depending on the task.
What’s funny is, that on tumbleweed animations feel slightly mor sluggish, although clocks run higher, I assume constantly switching is hurting the performance here. On Arch, everything is buttery smooth, even when all clocks just above 800MHz :confused:

Any other ideas where someone could turn some knobs?

man x86_energy_perf_policy details a few more options to tweak.