I recently noticed one of my Ubuntu Laptops had started to run very slow. After doing some searching here for tools to check CPU status and comparing with another PC with the same version I can see the slow laptop is only running at minimum CPU speed.
When I go to Settings -> Power
I only see Balanced
and Power Saver
there is no Performance
mode. Other PCs running the same Ubuntu show a Performance
mode. Any ideas why it is missing? power-profiles-daemon
is installed and running/active.
I installed cpufrequtils
and running cpufreq-info
I can see all threads are using the governor ondemand
but always running at 798 MHz (the CPU minimum=800 Mhz) regardless of the power setting of Balanced
or Power Saver
:
analyzing CPU 7:
driver: intel_cpufreq
CPUs which run at the same hardware frequency: 7
CPUs which need to have their frequency coordinated by software: 7
maximum transition latency: 20.0 us.
hardware limits: 800 MHz - 3.50 GHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
current policy: frequency should be within 800 MHz and 3.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 798 MHz.
Also, When I run sudo cpufreq-set -r -g performance
to supposedly set all cores to performance
governor, it has no affect on the results above.
The laptop is HP Omen 15-5000na Intel Core i7-4710HQ @ 2.50Ghz x 8 running Ubuntu 22.04.1 LTS
This laptop has always been running BIOS version F.40
without issues in the past. There is a newer BIOS (F.48 Rev.A
) but HP only supply a Windows .exe
EDIT 1:
The echo performance...
command suggested below does make a change to the output of cpufreq-info
in that it now says The governor "performance" may decide which speed to use
but the CPU frequency is still set to the minimum all the time. And the suggested grep
shows ondemand
for all threads, until the echo performance
then it shows performance
for all threads.
Results of sudo turbostat --Summary --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,RAMWatt,GFXWatt,CorWatt --interval 5
:
turbostat version 21.05.04 - Len Brown <[email protected]>
CPUID(0): GenuineIntel 0xd CPUID levels
CPUID(1): family:model:stepping 0x6:3c:3 (6:60:3) microcode 0x28
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR - EIST TM2 TSC MSR ACPI-TM HT TM
CPUID(6): APERF, TURBO, DTS, PTM, No-HWP, No-HWPnotify, No-HWPwindow, No-HWPepp, No-HWPpkg, EPB
cpu2: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): No-SGX
cpu2: MSR_MISC_PWR_MGMT: 0x00400000 (ENable-EIST_Coordination DISable-EPB DISable-OOB)
RAPL: 5578 sec. Joule Counter Range, at 47 Watts
cpu2: MSR_PLATFORM_INFO: 0x80838f3011900
8 * 100.0 = 800.0 MHz max efficiency frequency
25 * 100.0 = 2500.0 MHz base frequency
cpu2: MSR_IA32_POWER_CTL: 0x0004005d (C1E auto-promotion: DISabled)
cpu2: MSR_TURBO_RATIO_LIMIT: 0x21212223
33 * 100.0 = 3300.0 MHz max turbo 4 active cores
33 * 100.0 = 3300.0 MHz max turbo 3 active cores
34 * 100.0 = 3400.0 MHz max turbo 2 active cores
35 * 100.0 = 3500.0 MHz max turbo 1 active cores
cpu2: MSR_CONFIG_TDP_NOMINAL: 0x00000019 (base_ratio=25)
cpu2: MSR_CONFIG_TDP_LEVEL_1: 0x00000000 ()
cpu2: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 ()
cpu2: MSR_CONFIG_TDP_CONTROL: 0x80000000 ( lock=1)
cpu2: MSR_TURBO_ACTIVATION_RATIO: 0x00000000 (MAX_NON_TURBO_RATIO=0 lock=0)
cpu2: MSR_PKG_CST_CONFIG_CONTROL: 0x1e008405 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked, pkg-cstate-limit=5 (pc7s))
/dev/cpu_dma_latency: 2000000000 usec (default)
current_driver: intel_idle
current_governor: menu
current_governor_ro: menu
cpu2: POLL: CPUIDLE CORE POLL IDLE
cpu2: C1: MWAIT 0x00
cpu2: C1E: MWAIT 0x01
cpu2: C3: MWAIT 0x10
cpu2: C6: MWAIT 0x20
cpu2: C7s: MWAIT 0x32
cpu2: cpufreq driver: intel_cpufreq
cpu2: cpufreq governor: performance
cpufreq intel_pstate no_turbo: 0
cpu2: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
cpu0: EPB: 4 (custom)
cpu0: MSR_CORE_PERF_LIMIT_REASONS, 0x3d210001 (Active: PROCHOT, ) (Logged: Transitions, MultiCoreTurbo, PkgPwrL2, PkgPwrL1, Amps, Auto-HWP, PROCHOT, )
cpu0: MSR_GFX_PERF_LIMIT_REASONS, 0x0c010000 (Active: ) (Logged: PROCHOT, PkgPwrL1, PkgPwrL2, )
cpu0: MSR_RING_PERF_LIMIT_REASONS, 0x09010000 (Active: ) (Logged: PROCHOT, Amps, PkgPwrL2, )
cpu0: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000178 (47 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x804281d600dc8178 (locked)
cpu0: PKG Limit #1: ENabled (47.000000 Watts, 28.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: ENabled (58.750000 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: Cores Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x00000000 (UNlocked)
cpu0: GFX Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x04641000 (100 C)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x8827080c (61 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C)
cpu2: MSR_PKGC3_IRTL: 0x00008842 (valid, 67584 ns)
cpu2: MSR_PKGC6_IRTL: 0x0000886a (valid, 108544 ns)
cpu2: MSR_PKGC7_IRTL: 0x00008891 (valid, 148480 ns)
Busy% Bzy_MHz IRQ PkgTmp PkgWatt CorWatt GFXWatt
29.84 800 17045 60 12.01 2.78 0.49
23.35 800 11239 62 11.89 2.54 0.43
33.84 800 18221 61 12.51 3.07 0.72
28.59 800 13540 61 12.39 2.80 0.82
29.03 800 16247 60 12.15 2.85 0.62
18.48 800 12915 58 11.90 1.77 1.44
EDIT 2 / UPDATE / SOLVED:
The answer below regarding PROCHOT
flag being set by my hardware was indeed the reason for the CPU throttling. So marked as correct. Many thanks.
As for why the hardware was setting the flag - a bit more information in case it helps others in future as I did the two things below and so far no more PROCHOT. So one of the below things seemed to do the trick I am just not sure which:
(1) I opened up the case to check fans and remove any dust. The two fans were working fine and some dust but not too much. I also sat the laptop on something to sit it higher and hopefully improve airflow underneath as that's where the air intakes are.
(2) My laptop battery had died over a year ago and since then Ubuntu power stats was not even showing a battery was present. But as I use it as a desktop on AC it was not a problem, and no slowdown until recently. However, I had seen some posts where people said that failing/failed battery can sometimes cause PROCHOT
so I thought I would actually physically remove the battery from the laptop.
The performance limiting (throttling) reasons are listed in the turbostat startup spew of information when the
--quiet
command line parameter is not specified. So the lines relevant to this question are:And the most relevant part is
Active: PROCHOT
indicating that the processor externalPROCHOT
bit was active when the sample was taken, and is the reason the processor CPU clock frequency was throttled to minimum.The implementation of the
PROCHOT
bit and what is asserting it is hardware dependant.It is also interesting that both power limit bits show as logged, but not currently active, and the processor temperature seems a little high for minimum CPU clock frequency.