CPU doesn't work on "full power" during a game

Ubuntu Version

Ubuntu 26.04 LTS Flavors

Desktop Environment (if applicable)

KDE Plasma

Problem Description

When I play World of Tanks (from Steam), most of the time my CPU is at .8-1.4GHz (instead of closer to 4GHz, it’s i7-12700h, max is ~4.2GHz, it’s NOT locked to any frequency).

it sometimes work on a full power , and recently stays in low state, of course it affects the game :confused:

Relevant System Information

cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference
returns:
performance

sensors return:
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +62.0°C (high = +100.0°C, crit = +100.0°C)

Linux 7.0.0-30-generic #30-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 18:22:54 UTC 2026 x86_64 GNU/Linux

I don’t remember such problems with 25.10 and previous Kubuntus.
I can see that even on desktop with just browsers, CPU stays in <1.4GHz state, which is really annoying …

I wonder if your processor has throttled down for some reason?

What CPU frequency scaling driver is being used? Do, for example:

doug@s19:~$ cat /sys/devices/system/cpu/cpufreq/policy*/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate
intel_pstate

What CPU frequency scaling governor is being used? Do, for example:

doug@s19:~$ cat /sys/devices/system/cpu/cpufreq/policy*/scaling_governor
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave

If you can, provide the initial spew of information from the turbostat command. Example:

doug@s19:~$ sudo turbostat --Summary --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp
turbostat version 2026.04.21 - Len Brown <lenb@kernel.org>
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-7.3.0-rc1-stock root=UUID=823b5f2c-38f5-4b05-92f6-6cb77b157c8a ro ipv6.disable=1 consoleblank=300 msr.allow_writes=on cpuidle.governor=teo
CPUID(0): GenuineIntel 0x16 CPUID levels
CPUID(1): family:model:stepping 0x6:a5:5 (6:165:5) microcode 0x100
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR SMX EIST TM2 No-HV TSC MSR ACPI-TM HT TM
CPUID(6): APERF, TURBO, DTS, PTM, HWP, HWPnotify, HWPwindow, HWPepp, No-HWPpkg, EPB
cpu0: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): SGX No-Hybrid
cpu0: MSR_IA32_FEATURE_CONTROL: 0x00020005 (Locked )
CPUID(0x15): eax_crystal: 2 ebx_tsc: 342 ecx_crystal_hz: 0
TSC: 4104 MHz (24000000 Hz * 342 / 2 / 1000000)
CPUID(0x16): base_mhz: 4100 max_mhz: 4800 bus_mhz: 100
cpu0: MSR_PLATFORM_INFO: 0x808083af1012900
8 * 100.0 = 800.0 MHz max efficiency frequency
41 * 100.0 = 4100.0 MHz base frequency
cpu0: MSR_TURBO_RATIO_LIMIT: 0x303030303030
48 * 100.0 = 4800.0 MHz max turbo 6 active cores
48 * 100.0 = 4800.0 MHz max turbo 5 active cores
48 * 100.0 = 4800.0 MHz max turbo 4 active cores
48 * 100.0 = 4800.0 MHz max turbo 3 active cores
48 * 100.0 = 4800.0 MHz max turbo 2 active cores
48 * 100.0 = 4800.0 MHz max turbo 1 active cores
cpu0: MSR_CONFIG_TDP_NOMINAL: 0x00000029 (base_ratio=41)
cpu0: MSR_CONFIG_TDP_LEVEL_1: 0x002602f8 (PKG_MIN_PWR_LVL1=0 PKG_MAX_PWR_LVL1=0 LVL1_RATIO=38 PKG_TDP_LVL1=760)
cpu0: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 ()
cpu0: MSR_CONFIG_TDP_CONTROL: 0x00000000 ( lock=0)
cpu0: MSR_TURBO_ACTIVATION_RATIO: 0x00000000 (MAX_NON_TURBO_RATIO=0 lock=0)
cpu0: cpufreq driver: intel_pstate
cpu0: cpufreq governor: powersave
cpufreq intel_pstate no_turbo: 0
cpu0: MSR_MISC_PWR_MGMT: 0x00401cc0 (ENable-EIST_Coordination DISable-EPB DISable-OOB)
cpu0: MSR_PM_ENABLE: 0x00000001 (HWP)
cpu0: MSR_HWP_CAPABILITIES: 0x010b2930 (high 48 guar 41 eff 11 low 1)
cpu0: MSR_HWP_REQUEST: 0x80003008 (min 8 max 48 des 0 epp 0x80 window 0x0 pkg 0x0)
cpu0: MSR_HWP_INTERRUPT: 0x00000001 (EN_Guaranteed_Perf_Change, Dis_Excursion_Min)
cpu0: MSR_HWP_STATUS: 0x00000000 (No-Guaranteed_Perf_Change, No-Excursion_Min)
cpu0: EPB: 6 (balanced)
cpu0: MSR_IA32_POWER_CTL: 0x003c005d (C1E auto-promotion: DISabled)
cpu0: MSR_PKG_CST_CONFIG_CONTROL: 0x1e000000 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, UNlocked, pkg-cstate-limit=0 (pc0))
/dev/cpu_dma_latency: 2000000000 usec (default)
current_driver: intel_idle
current_governor: teo
current_governor_ro: teo
cpu0: POLL: CPUIDLE CORE POLL IDLE
cpu0: C1ACPI: ACPI FFH MWAIT 0x0
cpu0: C2ACPI: ACPI FFH MWAIT 0x30
cpu0: C3ACPI: ACPI FFH MWAIT 0x60
cpu0: MSR_PKGC3_IRTL: 0x0000884e (valid, 79872 ns)
cpu0: MSR_PKGC6_IRTL: 0x00008876 (valid, 120832 ns)
cpu0: MSR_PKGC7_IRTL: 0x00008894 (valid, 151552 ns)
cpu0: MSR_PKGC8_IRTL: 0x000088fa (valid, 256000 ns)
cpu0: MSR_PKGC9_IRTL: 0x0000894c (valid, 339968 ns)
cpu0: MSR_PKGC10_IRTL: 0x00008bf2 (valid, 1034240 ns)
Uncore Frequency package0 die0: 800 - 4300 MHz (800 - 4300 MHz) 3900 MHz
RAPL: 2097 sec. Joule Counter Range, at 125 Watts
intel-rapl:0: package-0 8.0s:125W,max:125W 2.4ms:136W
intel-rapl:0/intel-rapl:0:2: dram disabled
intel-rapl:0/intel-rapl:0:0: core disabled
intel-rapl:0/intel-rapl:0:1: uncore disabled
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x000003e8 (125 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x428440001b83e8 (UNlocked)
cpu0: PKG Limit #1: ENabled (125.000 Watts, 8.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (136.000 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x00000000
cpu0: PKG Limit #4: 0.000000 Watts (UNlocked)
cpu0: MSR_DRAM_POWER_LIMIT: 0x5400de00000000 (UNlocked)
cpu0: DRAM Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: Cores Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: GFX Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x14641422 (80 C) (100 default - 20 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88420000 (34 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C)
cpu0: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt
0.06    1556    553     33      1.37
0.02    800     164     31      1.33
^C0.05  800     40      31      1.33
doug@s19:~$
1 Like

I would quickly check these three:

1: “sudo dmesg | grep -iE 'throttle|prochot`” - see if your motherboard had a panic attack, pulled the emergency BD PROCHOT brake, and locked your CPU at 800 MHz because it thinks 62°C is the surface of the frying pan.

2: “sudo systemctl stop thermald” - give Ubuntu’s thermal nanny a chill pill and see if your clocks immediately bounce back from broken OEM power limits.

3: “cat /sys/devices/system/cpu/intel_pstate/no_turbo” - just in case Turbo Boost silently filed for divorce (if this returns “1”, your CPU banned itself from having fun :))

cat /sys/devices/system/cpu/cpufreq/policy*/scaling_governor
powersave
cat /sys/devices/system/cpu/cpufreq/policy*/scaling_driver
intel_pstate
sudo turbostat --Summary --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp
turbostat version 2026.02.14 - Len Brown <lenb@kernel.org>
Kernel command line: BOOT_IMAGE=/vmlinuz-7.0.0-30-generic root=UUID=4c7ef5ec-fe5a-4711-abbd-457737314c23 ro rootflags=subvol=@ quiet cryptdevice=UUID=31a342b2-4430-42bb-a4a7-66ebe57503b4:luks-31a342b2-4430-42bb-a4a7-66ebe57503b4 root=/dev/mapper/luks-31a342b2-4430-42bb-a4a7-66ebe57503b4 splash preempt=full threadirqs
CPUID(0): GenuineIntel 0x20 CPUID levels
CPUID(1): family:model:stepping 0x6:9a:3 (6:154:3) microcode 0x43b
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR SMX EIST TM2 No-HV TSC MSR ACPI-TM HT TM
CPUID(6): APERF, TURBO, DTS, PTM, HWP, HWPnotify, HWPwindow, HWPepp, HWPpkg, EPB
cpu0: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): No-SGX Hybrid
CPUID(0x15): eax_crystal: 2 ebx_tsc: 140 ecx_crystal_hz: 38400000
TSC: 2688 MHz (38400000 Hz * 140 / 2 / 1000000)
CPUID(0x16): base_mhz: 2700 max_mhz: 3500 bus_mhz: 100
cpu0: MSR_PLATFORM_INFO: 0x804043df0811b00
4 * 100.0 = 400.0 MHz max efficiency frequency
27 * 100.0 = 2700.0 MHz base frequency
cpu0: MSR_TURBO_RATIO_LIMIT: 0x292929292c2c2f2f
41 * 100.0 = 4100.0 MHz max turbo 8 active cores
41 * 100.0 = 4100.0 MHz max turbo 7 active cores
41 * 100.0 = 4100.0 MHz max turbo 6 active cores
41 * 100.0 = 4100.0 MHz max turbo 5 active cores
44 * 100.0 = 4400.0 MHz max turbo 4 active cores
44 * 100.0 = 4400.0 MHz max turbo 3 active cores
47 * 100.0 = 4700.0 MHz max turbo 2 active cores
47 * 100.0 = 4700.0 MHz max turbo 1 active cores
cpu0: MSR_SECONDARY_TURBO_RATIO_LIMIT: 0x2121212123232323
33 * 100.0 = 3300.0 MHz max turbo 8 active cores
33 * 100.0 = 3300.0 MHz max turbo 7 active cores
33 * 100.0 = 3300.0 MHz max turbo 6 active cores
33 * 100.0 = 3300.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
35 * 100.0 = 3500.0 MHz max turbo 2 active cores
35 * 100.0 = 3500.0 MHz max turbo 1 active cores
cpu0: MSR_CONFIG_TDP_NOMINAL: 0x00000017 (base_ratio=23)
cpu0: MSR_CONFIG_TDP_LEVEL_1: 0x000f0118 (PKG_MIN_PWR_LVL1=0 PKG_MAX_PWR_LVL1=0 LVL1_RATIO=15 PKG_TDP_LVL1=280)
cpu0: MSR_CONFIG_TDP_LEVEL_2: 0x001b0208 (PKG_MIN_PWR_LVL2=0 PKG_MAX_PWR_LVL2=0 LVL2_RATIO=27 PKG_TDP_LVL2=520)
cpu0: MSR_CONFIG_TDP_CONTROL: 0x00000000 ( lock=0)
cpu0: MSR_TURBO_ACTIVATION_RATIO: 0x00000016 (MAX_NON_TURBO_RATIO=22 lock=0)
cpu0: cpufreq driver: intel_pstate
cpu0: cpufreq governor: powersave
cpufreq intel_pstate no_turbo: 0
cpu0: MSR_MISC_PWR_MGMT: 0x000030c2 (ENable-EIST_Coordination ENable-EPB DISable-OOB)
cpu0: MSR_PM_ENABLE: 0x00000001 (HWP)
cpu0: MSR_HWP_CAPABILITIES: 0x01101e3b (high 59 guar 30 eff 16 low 1)
cpu0: MSR_HWP_REQUEST: 0x00003b06 (min 6 max 59 des 0 epp 0x0 window 0x0 pkg 0x0)
cpu0: MSR_HWP_REQUEST_PKG: 0x8000ff01 (min 1 max 255 des 0 epp 0x80 window 0x0)
cpu0: MSR_HWP_INTERRUPT: 0x00000005 (EN_Guaranteed_Perf_Change, Dis_Excursion_Min)
cpu0: MSR_HWP_STATUS: 0x00000000 (No-Guaranteed_Perf_Change, No-Excursion_Min)
cpu0: EPB: 0 (performance)
cpu0: MSR_IA32_POWER_CTL: 0x00e4005b (C1E auto-promotion: ENabled)
cpu0: MSR_PKG_CST_CONFIG_CONTROL: 0x74008008 (UNdemote-C1, demote-C1, locked, pkg-cstate-limit=8 (unlimited))
/dev/cpu_dma_latency: 2000 usec (constrained)
current_driver: intel_idle
current_governor: menu
current_governor_ro: menu
cpu0: POLL: CPUIDLE CORE POLL IDLE
cpu0: C1E: MWAIT 0x01
cpu0: C6: MWAIT 0x20
cpu0: C8: MWAIT 0x40
cpu0: C10: MWAIT 0x60
cpu0: MSR_PKGC3_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC6_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC8_IRTL: 0x00000000 (NOTvalid, 0 ns)
cpu0: MSR_PKGC10_IRTL: 0x00000000 (NOTvalid, 0 ns)
Uncore Frequency package0 die0: 400 - 4000 MHz (400 - 4000 MHz) 600 MHz
RAPL: 5825 sec. Joule Counter Range, at 45 Watts
intel-rapl:1: psys disabled
intel-rapl:0: package-0 56.0s:200W,max:45W 2.4ms:115W
intel-rapl:0/intel-rapl:0:0: core disabled
intel-rapl:0/intel-rapl:0:1: uncore disabled
intel-rapl-mmio:0: package-0 28.0s:15W,max:45W 2.4ms:115W
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000168 (45 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x43839800df8640 (UNlocked)
cpu0: PKG Limit #1: ENabled (200.000 Watts, 56.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (115.000 Watts, 0.002441* sec, clamp ENabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x000006b8
cpu0: PKG Limit #4: 215.000000 Watts (UNlocked)
cpu0: MSR_DRAM_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: DRAM Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 9
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: Cores Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 13
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: GFX Limit: DISabled (0.000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x80640000 (100 C) (100 default - 0 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88220c00 (66 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x02000003 (100 C, 100 C)
cpu0: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
Busy%   Bzy_MHz IRQ     PkgTmp  PkgWatt
81.11   807     139384  64      14.99
81.89   803     142537  64      15.00
86.46   800     156509  63      15.01
84.95   802     154415  62      14.97
85.82   795     150262  61      15.02
83.17   816     143794  62      15.00
80.58   825     137781  61      15.00
80.89   828     136628  60      14.99
76.60   2131    253566  74      39.10
74.49   2493    888192  78      45.15

this is after restart, but for sure intel_pstate and powersave was always there. (and profile performance). for now it works correctly, up to 4GHz and more. I’ll run it again when I see problems.

Well, Ubuntu defaults to ondemand (and always did since we integarted support for cpufreq some time around 2005/6), some tool or script you used must have changed it …

The real clue in your turbostat log is the power column -

While stuck at 800 MHz, your package power was pinned at exactly 15.00W:

“intel-rapl-mmio:0: package-0 28.0s:15W,max:45W”

That’s a RAPL MMIO power clamp! The controller choked your PL1 down to 15W instead of 45W, forcing the CPU down to 800 MHz. As soon as the 15W limit cleared, it shot straight back up to 45W and normal clocks.

Try to check if thermald or GNOME’s power profiles are dropping that 15W clamp on you

but it’s not pinned to any freq. (and I never said that), yesterday it was constantly changing (as normal behaviour) between 400MHz and ~1400MHz.

now it changes between 400MHz and ~2.6GHz (but I do nothing, while I write this), and when I launched WoT (game) today, freq. was up to 4GHz (and more).

It’s a fresh Kubuntu with 26.04 (installed 2 months ago?) , and I didn’t install any additional power management tools.

Try to check if thermald or GNOME’s power profiles are dropping that 15W clamp on you

how to check this? I use KDE, and it’s set to “performance” (as mentioned in the first post)

also turbostat returns different values, like

intel-rapl-mmio:0: package-0 28.0s:66W,max:45W 2.4ms:115W

That is not true for the intel_pstate CPU frequency scaling driver. Powersave is the default governor with Ubuntu. And it is very similar to the ACPI CPU frequency driver using the ondemand CPU frequency scaling governor.

OOPS, you are correct and I stand corrected :slight_smile:
(it is admittedly years ago that I touched that area of the distro last, obviously the world has changed since)

but now…. when I run the game again,

26.65   2649    187635  73      27.40
30.36   2500    197885  74      27.08
30.60   2493    190830  76      27.05
26.82   2611    184592  79      27.28
28.73   2608    197487  77      28.15
29.44   2471    189748  89      28.51
23.69   2818    424194  71      34.79
31.00   1334    196729  67      14.93
42.50   1147    144263  68      14.49
64.14   891     189646  67      14.92
63.18   893     191448  66      14.90
53.48   999     186367  65      14.69
50.25   1102    185044  64      14.81
48.81   1215    189525  63      15.14

48.42   1137    16382   63      15.08

45.27   1114    6953    62      14.20

44.70   1182    5284    62      14.18
50.52   1167    188973  63      14.92
49.77   1181    183997  62      15.07

package Watt dropped to 15W !

but when I quit the game, and I’m on desktop watching youtube, PkgWatt goes up again (I see >30 values).

This is while running geekbench7 (looks ok)

Your processor is overheating and throttling back to protect itself. In your screenshot observe the processor hitting 100 degrees. I think clock modulation is involved, but am not certain.

Thermal management is incredibly important. I suggest that you learn about your system and setup safeguards to prevent the processor from getting to hot. While not all intel processors that have the ability are included in the TCC offset method list, that is my preferred method, by far. Observe in my earlier post of my turbostat start up spew that I have my TCC offset set for an 80 degrees maximum processor temperature or an offset of 20 degrees. You can also use thermald, but typically the TCC Offset method reacts faster. See a post of mine from ask for additional info.

EDIT: From your screenshot, I observe that you are running thermald. Its configuration needs some improvement because it isn’t preventing the processor temperature going to high. I don’t use thermald and as previously mentioned prefer the TCC Offset method.

good catch, i just started a game, and yes. it reached high temps and throttled.

interestingly I CAN’T HEAR fans !! ok, after moving my head to PC I can hear something, but… low speed fans


a minute later

it looks ok (like more power), and now fans work faster

I’m still playing, let’s see.


powerprofilesctl                                                                

* performance:
    CpuDriver:  intel_pstate
    PlatformDriver:     platform_profile
    Degraded:   no

  balanced:
    CpuDriver:  intel_pstate
    PlatformDriver:     platform_profile

  power-saver:
    CpuDriver:  intel_pstate
    PlatformDriver:     platform_profile

cat /sys/firmware/acpi/platform_profile

performance

cat /sys/firmware/acpi/platform_profile_choices

cool quiet balanced performance

it looks better now, freq. is not maxed, cuz the game is limited to 60fps. before I didn’t hear “problem” with fans cuz I use headphones.

there is still something funky happening. This is last ~5 mins of my game

packageWatt stayed for long time at ~17W, then jumped high, and went back to 15W for some time, and later went up again. (and you can see CPU freq limited.)

all this during 5mins game, nothing else changed.

There might be mulitple reasons your processor is throttling back. See the post from @steelf about RAPL MMIO power clamp as that seems, as least to me, to be coming into play in this example. I don’t have intel-rapl-mmio on my processor so am unable to experiment with it.

Alright, I tested this on my test bench.

@dsmythies is right about the 100C spike, but keeping a 12th gen i7 at only 15W when it is already cool at 65C is just painful :slight_smile:

You have two RAPL bosses here: MSR (intel-rapl:0) and MMIO (intel-rapl-mmio:0). The CPU always listens to whoever gives less power. When the CPU got hot because the fans were late, the EC panicked, locked MMIO to 15W, and forgot to unlock it.

I checked the sysfs paths on my 26.04 test box - powercap counts in microwatts, so 15W is 15000000 uW:

$ grep -H . /sys/class/powercap/*/constraint_*_name /sys/class/powercap/*/constraint_*_power_limit_uw

/sys/class/powercap/intel-rapl:0/constraint_0_name:long_term

/sys/class/powercap/intel-rapl:0/constraint_0_power_limit_uw:15000000

Next time your game drops to 15W, check who pulled the emergency brake: grep -H . /sys/class/powercap/*/constraint_*_power_limit_uw

If intel-rapl-mmio shows 15000000 or 17000000, that is your culprit.

Two ways to test this-

1- Send thermald to take a break and see if it stops: sudo systemctl stop thermald

2- If the laptop EC is doing this in hardware, you can just disable MMIO limits: echo 0 | sudo tee /sys/class/powercap/intel-rapl-mmio:0/enabled

Starring:

the rule that CPU always takes MIN(MSR, MMIO)
https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html

sysfs tree layout
https://www.kernel.org/doc/html/latest/power/powercap/powercap.html

ok. I’ve just run the game, it was a bit slower at the beginning.

55.41   1008    178273  65      15.03
54.26   1009    180273  65      14.84
46.98   1079    179745  64      14.88
47.26   1025    179757  64      14.97
45.08   1118    27202   64      14.14
45.50   1186    9007    64      14.93
54.03   1192    143     65      19.05
40.78   1275    146382  64      14.93
45.06   1199    178292  65      14.89
44.15   1207    184325  64      14.97
26.41   2128    155157  77      25.68
20.46   2959    156534  72      31.89
20.18   2960    154599  76      31.77
21.09   2951    154684  78      32.62
21.01   2911    154567  75      31.95

and limit 15W

/sys/class/powercap/intel-rapl-mmio:0/constraint_0_power_limit_uw:15000000
/sys/class/powercap/intel-rapl-mmio:0/constraint_1_power_limit_uw:115000000
/sys/class/powercap/intel-rapl-mmio:0/constraint_2_power_limit_uw:215000000

20 sec later

/sys/class/powercap/intel-rapl-mmio:0/constraint_0_power_limit_uw:33125000
/sys/class/powercap/intel-rapl-mmio:0/constraint_1_power_limit_uw:115000000
/sys/class/powercap/intel-rapl-mmio:0/constraint_2_power_limit_uw:215000000

limit rised to 33W

stopping it sudo systemctl stop thermald didn’t change anything.

disabling the limit echo 0 | sudo tee /sys/class/powercap/intel-rapl-mmio:0/enabled

seems like might work? or enabling it again, CPU slows down or goes up, but with ~10 sec lag? (is it normal?) I’ll test more.

Your thermald configuration is overreacting, I think.

Do you have the TCC Offset method? Do, for example, this:

doug@s19:~$ grep "TCC Offset" /sys/devices/virtual/thermal/cooling_device*/type
/sys/devices/virtual/thermal/cooling_device22/type:TCC Offset

If you have it (your processor has it for sure, but not all models are included in the kernel list) then my recommendation is to stop and disable thermald and use my instructions for “Method 2” on my previously posted link to one of my old “ask” answers. Note that thermald doesn’t always restore conditions when it is stopped, so you have to disable the service and re-boot. But then you have to be extremely careful that your processor doesn’t get too hot because of the disabled thermal protection. Perhaps get the TCC OFFSET method working first, then disable thermald. Use a ridiculously low trip point temperature while debugging, then gradually increase it (decrease the Offset) until you find something that allows the systems time to react before the temperature overshoot causes troubles.

Exactly as predicted - you caught it!

That 15000000 (15W) in intel-rapl-mmio was the emergency brake suffocating your CPU at 1.0-1.2 GHz in those first 20 seconds.
The second MMIO relaxed to 33.1W, your clocks boosted to 2.95 GHz and power rose to 32W.

To test if we can skip that initial 20-second slowdown completely, run this right before launching the game:

echo 0 | sudo tee /sys/class/powercap/intel-rapl-mmio:0/enabled

This disables the MMIO clamp entirely, so your CPU will only follow standard MSR limits and should run at full speed 33W / 2.95 GHz from second one.

no TCC offset

cat /sys/devices/virtual/thermal/cooling_device*/type                                                                                         ✔  20:42:57 
PCIe_Port_Link_Speed_0000:00:01.0
Processor
Processor
Processor
Processor
Processor
Processor
Processor
Processor
Processor
Processor
PCIe_Port_Link_Speed_0000:00:1c.0
Processor
Processor
PCIe_Port_Link_Speed_10000:e0:06.0
PCIe_Port_Link_Speed_10000:e0:06.2
dell-smm-fan1
dell-smm-fan2
intel_powerclamp
Processor
Processor
Processor
Processor
Processor
Processor
Processor
Processor

Hahaha, you should’ve told us it was a Dell right away! :-)))

dell-smm-fan explains everything - its a Dell Embedded Controller quirk.

Just run what I wrote in the post above

1 Like