Score:1

i3-6100 CPU stays at low frequency during load

lk flag

About a month or two ago, my Ubuntu 22.04 system's performance took a sudden hit out of nowhere. I didn't changed any HW, I didn't messed with any configurations. After investigating a bit, I've found this weird cause. Using watch grep MHz /proc/cpuinfo during idle, the frequencies are jumping between 800 to 3700 and something in between. But when I load the system using 7z b, the frequencies stays at low 800.

What I've tried:

  • Different OSes. I've tried booting to Windows 10 to play some games, and here I've noticed the behaviour is the same. I've also tired booting old Ubuntu 18.04 LTS live, and again: same result. I also did clean install of Ubuntu 22.10, same result.
  • Changing RAM modules. I've tried different configurations, still the same.
  • Reseating the CPU cooling, no change. Also, even before, the tempreatures stays at reasonable 30-40 C, no matter what. So thermal does not seems like an issue.
turbostat version 2022.04.16 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 0x16 CPUID levels
CPUID(1): family:model:stepping 0x6:5e:3 (6:94:3) microcode 0xf0
CPUID(0x80000000): max_extended_levels: 0x80000008
CPUID(1): SSE3 MONITOR - EIST TM2 TSC MSR ACPI-TM HT TM
CPUID(6): APERF, No-TURBO, DTS, PTM, HWP, HWPnotify, HWPwindow, HWPepp, No-HWPpkg, No-EPB
cpu2: MSR_IA32_MISC_ENABLE: 0x00850089 (TCC EIST MWAIT PREFETCH TURBO)
CPUID(7): SGX
cpu2: MSR_IA32_FEATURE_CONTROL: 0x00000005 (Locked )
CPUID(0x15): eax_crystal: 2 ebx_tsc: 308 ecx_crystal_hz: 0
TSC: 3696 MHz (24000000 Hz * 308 / 2 / 1000000)
CPUID(0x16): base_mhz: 3700 max_mhz: 3700 bus_mhz: 100
cpu2: MSR_MISC_PWR_MGMT: 0x00401cc0 (ENable-EIST_Coordination DISable-EPB DISable-OOB)
RAPL: 5140 sec. Joule Counter Range, at 51 Watts
cpu2: MSR_PLATFORM_INFO: 0x80080838f1012500
8 * 100.0 = 800.0 MHz max efficiency frequency
37 * 100.0 = 3700.0 MHz base frequency
cpu2: MSR_IA32_POWER_CTL: 0x0038005d (C1E auto-promotion: DISabled)
cpu2: MSR_TURBO_RATIO_LIMIT: 0x25252525
37 * 100.0 = 3700.0 MHz max turbo 4 active cores
37 * 100.0 = 3700.0 MHz max turbo 3 active cores
37 * 100.0 = 3700.0 MHz max turbo 2 active cores
37 * 100.0 = 3700.0 MHz max turbo 1 active cores
cpu2: MSR_CONFIG_TDP_NOMINAL: 0x00000025 (base_ratio=37)
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: 0x1e008000 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked, pkg-cstate-limit=0 (pc0))
/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 0x33
cpu2: C8: MWAIT 0x40
cpu2: cpufreq driver: intel_pstate
cpu2: cpufreq governor: powersave
cpufreq intel_pstate no_turbo: 1
cpu2: 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: 0x010e2525 (high 37 guar 37 eff 14 low 1)
cpu0: MSR_HWP_REQUEST: 0x00002508 (min 8 max 37 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: MSR_RAPL_POWER_UNIT: 0x000a0e03 (0.125000 Watts, 0.000061 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000198 (51 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x42ffff001dffff (UNlocked)
cpu0: PKG Limit #1: ENabled (4095.875 Watts, 16.000000 sec, clamp ENabled)
cpu0: PKG Limit #2: ENabled (4095.875 Watts, 0.002441* sec, clamp DISabled)
cpu0: MSR_VR_CURRENT_CONFIG: 0x80000000
cpu0: PKG Limit #4: 0.000000 Watts (locked)
cpu0: MSR_DRAM_POWER_LIMIT: 0x00000000 (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: 0x00641400 (100 C) (100 default - 0 offset)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x8846000c (30 C)
cpu0: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x00000003 (100 C, 100 C)
cpu2: MSR_PKGC3_IRTL: 0x0000884e (valid, 79872 ns)
cpu2: MSR_PKGC6_IRTL: 0x00008876 (valid, 120832 ns)
cpu2: MSR_PKGC7_IRTL: 0x00008894 (valid, 151552 ns)
cpu2: MSR_PKGC8_IRTL: 0x000088fa (valid, 256000 ns)
cpu2: MSR_PKGC9_IRTL: 0x0000894c (valid, 339968 ns)
cpu2: MSR_PKGC10_IRTL: 0x00008bf2 (valid, 1034240 ns)
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 3.70 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 800 MHz and 3.70 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 800 MHz (asserted by call to kernel)
  boost state support:
    Supported: no
    Active: no
Busy%   Bzy_MHz IRQ PkgTmp  PkgWatt GFXWatt
3.57    800 6246    29  12.10   0.00
2.48    800 4717    30  12.07   0.00
73.91   800 18038   30  13.56   0.00
99.77   800 17158   30  13.78   0.00
90.46   800 16900   31  13.75   0.00
97.21   800 16835   30  13.79   0.00
99.77   800 16862   31  13.80   0.00
80.01   800 17050   31  13.76   0.00
99.77   800 16750   30  13.80   0.00
85.76   800 15274   31  13.70   0.00
78.03   800 17381   31  13.70   0.00
93.27   800 17339   32  13.81   0.00
99.77   800 16879   31  13.80   0.00
8.20    800 4337    31  12.18   0.00
0.87    800 3126    31  12.04   0.00
1.01    800 3250    30  12.04   0.00
0.79    800 2909    30  12.03   0.00
0.61    800 2473    30  12.02   0.00
Esther avatar
es flag
try switching to "performace" mode instead of "powersave"
Doug Smythies avatar
gn flag
Thank you so much for providing turbostat output. I have not been able to determine what is holding the CPU frequency at 800 MHz. There a couple of MSRs listed by turbostat that are not familiar. It will take awhile for me to decode them. Just as a test, and not likely to fix the issue: 1.) try disabling idle state 2, `echo 1 | sudo tee /sys/devices/system/cpu/cpu*/cpuidle/state2/disable`; 2.) try disabling HWP, requires this `intel_pstate=active intel_pstate=no_hwp` on `GRUB_CMDLINE_LINUX_DEFAULT=` in `/etc/default/grub`, save a copy first, and do `sudo update-grub` after, then re-boot.
Score:1
gn flag

This MSR, listed by turobstat:

cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x8846000c (30 C)

and via bits 2 and 3, indicates that the external PROCHOT bit is set. This will force your CPU to throttle down. The following is copied and pasted from the Intel SDM

• Package PROCHOT# Event (bit 2, RO) — Indicates whether package PROCHOT# is being asserted by
another agent on the platform.
• Package PROCHOT# Log (bit 3, R/WC0) — Sticky bit that indicates whether package PROCHOT# has been
asserted by another agent on the platform since the last clearing of this bit or a reset. If bit 3 = 1, package
PROCHOT# has been externally asserted. Software may clear this bit by writing a zero.

You need to determine why that external bit is being set. For example, Dell LapTop computers set that bit when the charger is faulty or non Dell (at least I think it is that bit).

Answer part 2:

The reason you observe sometimes 800 and sometimes 3700 MHz when you do watch grep MHz /proc/cpuinfo is because it displays the default base CPU frequency, 3.7 GHz in this case, when the actual information is stale due to that CPU being in a deep idle state for an extended time.

Pitel avatar
lk flag
Thank you very much for this! It led me to find a known issue with my MB. There is a switch in the corner of the board labeled SLOW_1, which is somwhow intended for liquid nitrogen extreme cooling or something. Anyway, it's known issue that this switch gets to enabled state on itelf after all those years. So, the solution is to disable Intel Adaptive Themal Monitoring in BIOS, or, rip the swich apart from MB. I did it the BIOS way. :)
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.