My CPU is a mobile Intel Core i9-13980HX (13th gen. Raptor Lake) which has the following capabilities when it comes to max frequencies
Frequency: 2.2 GHz
Turbo Clock: up to 5.6 GHz
P-Core Boost 3.0: 5.5 GHz
E-Core Frequency: 1600 MHz up to 4 GHz
The driver in use is of course intel_pstate
According to Intel XTU application and laptop’s manufacturer (MSI) when Turbo Boost is enabled:
- 2 out of 8 P-cores (CPU 2 and CPU 3/CPU 4-5 and CPU 6-7 when hyper-threading is enabled) are capable of reaching up to 5,6Ghz
- the rest 6 out of 8 P-cores can go up to 5,4Ghz
- 16 E-cores can go up to 4,0Ghz
The problem is I’m getting some stability issues when P-cores 2 and 3 are reaching max 5,6Ghz, so the idea is to limit max possible frequency of all P-cores to 5,4Ghz. I can do that temporarily with a command
sudo cpupower frequency-set -u 5400000
Unfortunately there are two limitations to this approach:
- it’s only temporary and it’s being reset after every reboot and also (!) after some time when i.e. playing a game.
- it has to be done manually with the command mentioned above
What I’ve tried to do is modyfing cpupower config file /etc/default/cpupower
# Limit frequency range
# Valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="0.80GHz"
max_freq="5.4GHz"
and running cpupower.service
● cpupower.service - Apply cpupower configuration
Loaded: loaded (/usr/lib/systemd/system/cpupower.service; enabled; preset: disabled)
Active: active (exited) since Sun 2025-03-09 09:19:31 CET; 39s ago
Invocation: 3c19902ea7f94bb5a7b78be1e1f85969
Process: 2542 ExecStart=/usr/lib/systemd/scripts/cpupower (code=exited, status=0/SUCCESS)
Main PID: 2542 (code=exited, status=0/SUCCESS)
Mem peak: 2M
CPU: 14ms
mar 09 09:19:31 CachyOS systemd[1]: Starting Apply cpupower configuration...
mar 09 09:19:31 CachyOS systemd[1]: Finished Apply cpupower configuration.
The problem this doesn’t work as expected - cpupower.service does not set the proper max frequencies automatically after every reboot, although it does so when I restart it manually after login in, and the values are still being reset after some time. What could be the possible reason for that behaviour?