I've got a frustrating mystery and I'm hoping that someone can point me in the right direction.
Problem:
- Under load, my system doesn't increase CPU frequency to meet demand after some period of time passes after boot.
- I first observed this during video calls where the audio degrades and my laptop generally becomes sluggish.
- I mostly assess frequency and load in my manual tests with
s-tui
andstress
. - This actually happens under windows and linux but I'm running linux right now and have no intention of going back to windows, and I assume the tools and options are better on linux.
Properties of my system:
- lscpu:
- Intel(R) Core(TM) i7-10610U CPU @ 1.80GHz
- CPU max MHz: 2301.0000
- CPU min MHz: 400.0000
- Lenovo P15s ThinkPad Gen 1 . The listing claimed gen2 but I guess it was a lie.
- Ubuntu 22.04,
- Bios version 1.27. Apparently the latest available.
- uname -a Linux 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
lsmod | grep intel
snd_soc_intel_hda_dsp_commonintel_tcc_coolingintel_rapl_msrintel_powerclampsnd_sof_pci_intel_cnlsnd_sof_intel_hda_commonsoundwire_intelsoundwire_generic_allocationsoundwire_cadencesnd_sof_intel_hdasnd_sof_pcisnd_sof_xtensa_dspsnd_sofsnd_soc_hdac_hdasnd_hda_ext_coresnd_soc_acpi_intel_matchsnd_soc_acpisoundwire_bussnd_soc_corekvm_intelkvmsnd_hda_intelsnd_intel_dspcfgbtintelsnd_intel_sdw_acpibluetoothsnd_hda_codecintel_cstateintel_wmi_thunderboltsnd_hda_coresnd_pcmintel_rapl_commonintel_soc_dts_iosfintel_pch_thermalsndintel_hidsparse_keymapghash_clmulni_intelaesni_intelcrypto_simdcryptdwmi
lsmod | grep acpi
snd_soc_acpi_intel_matchsnd_soc_acpisnd_intel_sdw_acpithinkpad_acpinvramledtrig_audioucsi_acpitypec_ucsisndplatform_profileacpi_thermal_relacpi_padvideo
- Output of
sudo cpupower frequency-info
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us
hardware limits: 400 MHz - 2.30 GHz
available frequency steps: 2.30 GHz, 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 900 MHz, 800 MHz, 700 MHz, 500 MHz, 400 MHz
available cpufreq governors: conservative ondemand userspace powersave performance schedutil
current policy: frequency should be within 400 MHz and 1.80 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency: 1.80 GHz (asserted by call to hardware)
boost state support:
Supported: yes
Active: yes
Thinks I've tried so far:
- Enabling/Disabling intel pstate driver by adding
intel_pstate=disbale
to grub. I don't think my system even uses it though. - ondemand and performance governor. Nothing changes.
- Enabling/Disabling all of the power/CPU related BIOS options (intel speed step, etc)
- Manually setting min/max freq and governor using
cpupower frequency-set --governor
andcpufreq-set -r --min=0.8GHz --max=2.3GHz
- Using tools like (throttlestop)[https://github.com/agoose77/throttlestop] to see if it was a thermal issue, even though the tempts never get higher than 48 degrees.
- Manually unplugging my battery and holding the power button for 30 seconds (I got desperate).
- Enabling acpi driver with
sudo apt install acpi-support acpid acpi
. I've tried removing these as well. freq-info claims I'm using acpi even if I remove these so I probably had no effect.
Things I don't understand:
- The min/max frequencies reported by
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
andcpupower frequency-info
don't seem to be true. I can see the frequencies go as high as 4.2ghz ins-tui
before this bad state kicks in. - If I reboot and run
s-tui
and start stress testing I actually see what I want, all cores go up to 3.5ghz -4.2ghz. At some point after they only go to .8ghz - 1.1ghz. They actually get higher just being idle before the stress test, then lock in at the lower freq. - The amazon listing actually claims an 11th gen cpu and I just noticed lscpu is claiming a 10th gen, so I guess I got ripped off.
- Setting frequencies and governors doesn't actually change anything after I get into this bad state, even though the change are reflected in
cpupower frequency-info
. The CPU freq under load won't go up. - While in this bad state, if I start a load test then the freq does momentarily jump to 3.5-4, but then drops down to the capped lower freq.
Any pointers would be greatly appreciated.
EDIT:
I gave up and bought a new laptop. No more thinkpads for a while.
lscpu is claiming a 10th gen
- what does the BIOS say?sudo dmidecode -s bios-version
saysN2XET37W (1.27 )
. I'll have to find out how to do the update from linux and see if that does anything. @Freddythermald
and see if that helps. I spent ages getting mine to work and have kept notes, so feel free to ping me in chat and I might be able to help. If it looks like this is a promising avenue to explore, I'll post a write up of what ended up working for my machine as an answer.