I have an HP laptop with Core i5-8300h and it almost doesn't use all-core turbo after couple minutes after boot. When I run a single threaded task, it maintains frequencies of 3.5-4 GHz, but as I run anything on all cores the clock drops to rates near the base frequency of 2.3 GHz (runs at 1.7-2.5Ghz). The first couple minutes after boot all cores run on full multi-core boost frequency of 3.9 GHz if loaded. It can't be a thermal issue as the temperature drops to about 55°C and the fans go almost silent (much more quiet than under single-core load).
The issue was present on 18.04 and original 20.04, disappeared with some update in 20.04 branch (the laptop would maintain 3.9 GHz turbo on all cores) and now returned in 22.04 and 22.10 (I've tried various DE flavors). Under the Windows the full multi-core turbo sustains for indefinite time during non SIMD workloads.
Switching governors makes no difference. I've tried disabling intel_pstate, turning thermald on or off, throttled and auto-cpufreq custom daemons and nothing helped.
Update: turbostat output
turbostat version 2022.04.16 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 0x16 CPUID levels
CPUID(1): family:model:stepping 0x6:9e:a (6:158:10) microcode 0xf0
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR - EIST TM2 TSC MSR ACPI-TM HT TM
CPUID(6): APERF, TURBO, DTS, PTM, HWP, HWPnotify, HWPwindow, HWPepp, No-HWPpkg, EPB
cpu1: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): SGX
cpu1: MSR_IA32_FEATURE_CONTROL: 0x00020005 (Locked )
CPUID(0x15): eax_crystal: 2 ebx_tsc: 192 ecx_crystal_hz: 0
TSC: 2304 MHz (24000000 Hz * 192 / 2 / 1000000)
CPUID(0x16): base_mhz: 2300 max_mhz: 4000 bus_mhz: 100
cpu1: MSR_MISC_PWR_MGMT: 0x00401cc0 (ENable-EIST_Coordination DISable-EPB DISable-OOB)
RAPL: 5825 sec. Joule Counter Range, at 45 Watts
cpu1: MSR_PLATFORM_INFO: 0x8083bf1011700
8 * 100.0 = 800.0 MHz max efficiency frequency
23 * 100.0 = 2300.0 MHz base frequency
cpu1: MSR_IA32_POWER_CTL: 0x002c005d (C1E auto-promotion: DISabled)
cpu1: MSR_TURBO_RATIO_LIMIT: 0x272727282828
39 * 100.0 = 3900.0 MHz max turbo 6 active cores
39 * 100.0 = 3900.0 MHz max turbo 5 active cores
39 * 100.0 = 3900.0 MHz max turbo 4 active cores
40 * 100.0 = 4000.0 MHz max turbo 3 active cores
40 * 100.0 = 4000.0 MHz max turbo 2 active cores
40 * 100.0 = 4000.0 MHz max turbo 1 active cores
cpu1: MSR_CONFIG_TDP_NOMINAL: 0x00000017 (base_ratio=23)
cpu1: MSR_CONFIG_TDP_LEVEL_1: 0x00120118 (PKG_MIN_PWR_LVL1=0 PKG_MAX_PWR_LVL1=0 LVL1_RATIO=18 PKG_TDP_LVL1=280)
cpu1: MSR_CONFIG_TDP_LEVEL_2: 0x00000000 ()
cpu1: MSR_CONFIG_TDP_CONTROL: 0x00000000 ( lock=0)
cpu1: MSR_TURBO_ACTIVATION_RATIO: 0x00000016 (MAX_NON_TURBO_RATIO=22 lock=0)
cpu1: MSR_PKG_CST_CONFIG_CONTROL: 0x1e008008 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked, pkg-cstate-limit=8 (unlimited))
/dev/cpu_dma_latency: 16000 usec (constrained)
current_driver: intel_idle
current_governor: menu
current_governor_ro: menu
cpu1: POLL: CPUIDLE CORE POLL IDLE
cpu1: C1: MWAIT 0x00
cpu1: C1E: MWAIT 0x01
cpu1: C3: MWAIT 0x10
cpu1: C6: MWAIT 0x20
cpu1: C7s: MWAIT 0x33
cpu1: C8: MWAIT 0x40
cpu1: C9: MWAIT 0x50
cpu1: C10: MWAIT 0x60
cpu1: cpufreq driver: intel_pstate
cpu1: cpufreq governor: powersave
cpufreq intel_pstate no_turbo: 0
cpu1: MSR_MISC_FEATURE_CONTROL: 0x00000000 (L2-Prefetch L2-Prefetch-pair L1-Prefetch L1-IP-Prefetch)
cpu0: MSR_PM_ENABLE: 0x00000001 (HWP)
cpu0: MSR_HWP_CAPABILITIES: 0x01091728 (high 40 guar 23 eff 9 low 1)
cpu0: MSR_HWP_REQUEST: 0x00002808 (min 8 max 40 des 0 epp 0x0 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: 0 (performance)
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: 0x420270001e8640 (UNlocked)
cpu0: PKG Limit #1: ENabled (200.000 Watts, 32.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: DISabled (78.000 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x00000348
cpu0: PKG Limit #4: 105.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: 0x05640000 (95 C) (100 default - 5 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x88310c08 (51 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C)
cpu1: MSR_PKGC3_IRTL: 0x0000884e (valid, 79872 ns)
cpu1: MSR_PKGC6_IRTL: 0x00008876 (valid, 120832 ns)
cpu1: MSR_PKGC7_IRTL: 0x00008894 (valid, 151552 ns)
cpu1: MSR_PKGC8_IRTL: 0x000088fa (valid, 256000 ns)
cpu1: MSR_PKGC9_IRTL: 0x0000894c (valid, 339968 ns)
cpu1: MSR_PKGC10_IRTL: 0x00008bf2 (valid, 1034240 ns)
Update 2: I've ran turbostat gradually increasing the number of busy cores (output below). What really drew my attention was the PkgWatt hitting the wall at 15 watts despite the TDP of the CPU being 45W.
Busy% Bzy_MHz IRQ PkgTmp PkgWatt CorWatt GFXWatt RAMWatt
0.58 3885 1064 43 2.01 0.67 0.03 0.54
0.84 3864 1886 43 2.53 1.05 0.14 0.60
0.57 3908 1190 43 2.05 0.68 0.05 0.55
7.62 3843 3330 58 9.04 7.40 0.27 0.67
13.04 3929 2909 62 14.22 12.87 0.03 0.53
13.04 3930 2726 63 14.22 12.89 0.02 0.53
13.02 3934 2689 63 14.23 12.88 0.03 0.53
13.02 3933 2606 62 14.20 12.86 0.03 0.53
13.24 3902 2861 59 14.25 12.89 0.05 0.54
22.98 3372 4764 58 14.82 13.30 0.17 0.61
25.44 3346 4029 57 14.96 13.63 0.02 0.53
25.42 3349 4044 58 14.96 13.63 0.02 0.53
25.40 3351 3886 58 14.96 13.63 0.02 0.53
30.53 3087 5929 54 14.96 13.40 0.20 0.63
37.88 2909 5572 52 14.96 13.63 0.02 0.53
37.80 2913 5397 53 14.96 13.63 0.02 0.53
37.81 2909 5309 52 14.96 13.63 0.02 0.53
42.84 2710 7427 51 14.95 13.40 0.19 0.63
50.53 2562 7191 51 14.98 13.64 0.02 0.53
50.57 2558 7388 52 14.96 13.63 0.02 0.53
50.58 2554 7251 52 14.96 13.63 0.02 0.53
50.86 2544 7542 52 14.96 13.62 0.02 0.53
56.26 2489 9034 53 14.96 13.42 0.18 0.62
63.43 2506 9970 53 14.96 13.61 0.02 0.54
62.99 2514 8526 53 14.96 13.61 0.02 0.53
62.90 2513 8688 54 14.96 13.61 0.02 0.53
72.34 2434 10175 54 14.96 13.41 0.18 0.62
75.43 2461 9689 54 14.96 13.60 0.02 0.53
75.41 2463 9651 54 14.96 13.60 0.02 0.53
75.35 2461 9635 54 14.96 13.61 0.02 0.53
79.21 2401 10834 54 14.96 13.40 0.18 0.62
87.83 2400 10601 55 14.96 13.60 0.02 0.53
87.51 2408 10517 55 14.96 13.61 0.02 0.53
87.64 2409 10582 56 14.96 13.61 0.02 0.53
90.13 2356 11453 56 14.96 13.41 0.18 0.62
99.59 2374 10697 56 14.96 13.60 0.02 0.53
99.62 2377 10485 56 14.96 13.61 0.02 0.53
99.62 2375 10520 56 14.96 13.60 0.02 0.53
99.64 2377 10429 56 14.96 13.60 0.02 0.53
ubuntu-bug linux
. – Pilot6 Feb 26 '23 at 11:06sudo turbostat --Summary --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,RAMWatt,GFXWatt,CorWatt --interval 15
. – Doug Smythies Feb 27 '23 at 01:53thermald
ortlp
, running? If yes, what are their trip point temperatures? It looks like thermal throttling to a low low set point of about 55 degrees. Check for external throttling viagrep . /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
. If it is another reason within the processor itself, then we need to read and decode the "reasons" MSR manually. For unknown reasons turbostat doesn't read and decode it for all Intel processor versions. Under full load, and while throttling, do :sudo rdmsr -u 0x64F
, post here and I'll decode it. – Doug Smythies Mar 11 '23 at 15:53sudo rdmsr --hexadecimal 0x64F
– Doug Smythies Mar 11 '23 at 16:00