0

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
Andrew
  • 1
  • What is the question? You can report a kernel bug. – Pilot6 Feb 26 '23 at 09:51
  • The question is how to make the CPU scale frequency to full turbo again – Andrew Feb 26 '23 at 10:36
  • It is managed by Linux kernel. If it doesn't work properly, report it. – Pilot6 Feb 26 '23 at 10:37
  • Should I report it to some Ubuntu bugtracker of kernel developers'? – Andrew Feb 26 '23 at 11:05
  • You can do both. Reporting to Ubuntu is done by running ubuntu-bug linux. – Pilot6 Feb 26 '23 at 11:06
  • It would be good if you could post the initial spew of output from turbostat (included in the linux tools common package, I think). It will list the max CPU frequency verses active cores for your processor, as well as power limits. It is also a good tool to use in a controlled experiment while loading CPUs and watching power and temperature, watching for throttling. A suggested command: sudo turbostat --Summary --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,RAMWatt,GFXWatt,CorWatt --interval 15. – Doug Smythies Feb 27 '23 at 01:53
  • @DougSmythies, I added turbostat output to the post, is it what was needed? – Andrew Feb 28 '23 at 18:31
  • Yes, thanks. Your "PKG Limit #1:" is way way too high, but that wouldn't explain what you are observing. Indeed, your all cores active max turbo frequency is 3.9 GHz. I would still suggest a controlled experiment watching turbostat outputs as load in gradually increased, watching for what eventually causes throttling (suggest change the interval to 5 seconds or even lower for this part). – Doug Smythies Feb 28 '23 at 21:32
  • @DougSmythies, do you mean gradually increasing the number of loaded cores with something like stress utility? – Andrew Mar 01 '23 at 17:04
  • Yes, adding energy load can be done incrementally via adding one CPU load at a time. You can also set the CPU max freq to minimum, load down all CPUs, then gradually increase the CPU max frequency. You can also do a manually forced idle injection method, starting with max injection of 50% and gradually reduce it, with all CPU's fully loaded (suggest performance governor for this method). – Doug Smythies Mar 01 '23 at 23:27
  • @DougSmythies Sorry for the delay. I've added the output of the turbostat with gradually increasing number of busy cores. What surprised me was the PkgWatt that stopped at 15W although the TDP is 45W. – Andrew Mar 11 '23 at 10:50
  • Do you have a thermal daemon, such as thermald or tlp, 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 via grep . /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:53
  • Sorry, I should have written sudo rdmsr --hexadecimal 0x64F – Doug Smythies Mar 11 '23 at 16:00
  • @DougSmythies I updated BIOS and that appears to have helped. Than you for your advice – Andrew Mar 19 '23 at 10:29

0 Answers0