Ubuntu is very slow when Intel SpeedStep is enabled (CPU is not used in full speed)
Solution 1
This answer applies to the newly discovered reason of the BIOS limiting the CPU frequency.
Please check the condition of your power adapter and your battery. Are they functioning normally? Is the battery charging normally? Does the Laptop work O.K. on battery only?
Typically, Dell bios forces low CPU frequency when something is wrong with the power and / or it no longer recognizes the power adapter.
There is a way to by-pass the inclusion of the /sys/devices/system/cpu/cpu*/cpufreq/bios_limit, but it should only be done as a very last resort and with clear knowledge that the lowest level protection is being disabled. So let's not go there yet.
Solution 2
For CPU clock frequency governing 14.04 used the acpi-cpufreq driver by default and 14.10 uses intel_pstate driver by default. There are reports of issues similar what you are experiencing.
As a test, please try switching back to the acpi-cpufreq driver. Save a copy of your /etc/default/grub file, just in case:
sudo cp /etc/default/grub /etc/default/grub.original
Edit, as sudo, your /etc/default/grub file and add this parameter to the GRUB_CMDLINE_LINUX_DEFAULT line:
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"
If there are already other parameters on that line, then add the new one. Example:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_pstate=disable crashkernel=384M-:128M"
After you save the file, then update grub:
sudo update-grub
Re-boot the computer.
You could also check if you have thermald running:
sudo service thermald status
And if yes, and just for a quick test, disable it (Note you should monitor temperatures when thermald is disabled):
sudo service thermald stop
If you then get some ability for the CPU frequency to increase under significant load, then something is likely wrong with your /etc/thermald/thermal-conf.xml file.
Related videos on Youtube
Witek
Updated on September 18, 2022Comments
-
Witek over 1 year
I have a Dell notebook with i7 processor and Ubuntu 14.10. When i disable SpeedStep in my BIOS my computer is very fast but the fan runs very often and the battery gets empty fast.
When I activate SpeedStep, then Ubuntu gets very slow. I have tried switching the governor to performance with no effect.
This is what cpufreq-info shows for all 7 CPUs:
analyzing CPU 7: driver: intel_pstate CPUs which run at the same hardware frequency: 7 CPUs which need to have their frequency coordinated by software: 7 maximum transition latency: 0.97 ms. hardware limits: 800 MHz - 3.70 GHz available cpufreq governors: performance, powersave current policy: frequency should be within 3.70 GHz and 3.70 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency is 1.17 GHz.
Strange thing is the frequenccy never goes above 1.2 GHz. I have tried starting firefox or compiling a big project.
This is the CPU related output of
lshw
:*-cpu description: CPU product: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz vendor: Intel Corp. physical id: 43 bus info: cpu@0 version: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz slot: SOCKET 0 size: 3581MHz capacity: 3581MHz width: 64 bits clock: 100MHz capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cpufreq configuration: cores=4 enabledcores=4 threads=8
I got this issue after upgrading from Ubuntu 14.04 to 14.10.
So how to get Ubuntu 14.10 to use my CPU on full speed when needed?
Update: After disabling
intel_pstate
all CPUs run at 800 MHz no matter what I do. Switching governor by applet or command line has no effect.Update: After installing
cpufreqd
,/var/log/syslog
gets these messages in a loop:Mar 3 13:00:03 scala cpufreqd: cpufreqd_set_profile : Couldn't set profile "Performance High" set for cpu0 (2700000-2700000-performance) Mar 3 13:00:03 scala cpufreqd: cpufreqd_loop : Cannot set policy, Rule unchanged ("none").
Update:
cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit
prints800000
(800 MHz) for all CPUs. Where does this limit come from? How to increase it? -
Witek about 9 yearsAfter doing this, everything gets maximum slow. All CPUs run at 800 MHz. Changing speed with applet or cpufreq-set has no effect. Stays at 800 MHz. :-(
-
Doug Smythies about 9 yearsDo you know if you have thermald running? I'll try to figure out how to check and how to disable it (just for a test), and I'll update my answer.
-
Doug Smythies about 9 yearsOf course, without significant load the CPU frequencies will go to 800 MHz. You meant under heavy load right? Compiling a big project, as you mentioned, would be a good test.
-
Witek about 9 yearsStopping thermald did not help. Still running at 800 MHz all the time, no matter what I do.
-
Doug Smythies about 9 yearsDo you learn anything by running thermald not as a daemon and in debug mode? "sudo thermald --no-daemon --loglevel=debug" see also
-
Doug Smythies about 9 yearsAt the most primitive level, check that the acpi-cpufreq driver is not in powersave mode. "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"
-
Witek about 9 yearssudo thermald --no-daemon --loglevel=debug prints "performance" for all CPUs. Nothing suspicious from thermald. What I would like to understand: Why does the CPU always jump back to 800MHz, even when I set it to 2.7GHz. No matter if I set it using the applet or command line.
-
Doug Smythies about 9 yearswhat do you get for "cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit"
-
Witek about 9 yearsbios_limit shows 800000 (800 MHz) for all CPUs. What does this mean? How to increase it?
-
Witek about 9 yearsBingo! It seams to depend on the AC adapter I use. In my docking station, with a "big" adapter, the CPU runs fullspeed/ondemand/whatever. Only when connected to a "small" adapter, the speed is limited.
-
HD189733b about 7 yearsI have the same issue, although I'm confident that the "small" adapter is powerful enough to carry the CPU at top frequency. As a bypass of this restriction, I edit the bit[0] of MSR 0x1FC from 1 to 0 using command wrmsr, which is equivalent to turn of BD PROCHOT in Windows.
-
Doug Smythies about 7 years@HD189733b : I have heard of mixed results when messing with MSR 0x1FC. Furthermore, assertion of the external PROCHOT bit should result in a much lower CPU frequency if the system is using the intel_pstate CPU frequency scaling driver, at least if it is using the performance based code path (not to be confused with the performance governor) and not the load based code path. It doesn't matter if the adapter has enough power, it only matters that Dell recognizes it as the right one for the computer.
-
HD189733b about 7 years@DougSmythies I'm sorry I'm not quite get your point. Because I'm using a different Dell adapter with a bit less power than the right one, my CPU speed is stuck at 800 MHz. I want to by-pass this, so I changed the ox1FC. Do you mean this is very dangerous?
-
Doug Smythies about 7 years@HD189733b : Well, if it is working for you, then O.K. I have also heard of messing with MSR 0x1FC not working for some. Also, if it were the PROCHOT bit, then I would have expected your CPU frequencies to be stuck at about 400 MHz.
-
HD189733b about 7 years@DougSmythies: OK, thanks. I have dual boot Windows 10 and Ubuntu 16.04 on my laptop. Without any modification, the CPU frequency is stuck at 800 MHz on both systems. Using ThrottleStop to turn off the BD PROCHOT solves the problem in Windows, and 0x1FC bit[0] solves the problem in Ubuntu.
-
Admin about 2 yearsI am using a Latitude 5511 with a WD19 Dell Dock (180W). I am experiencing this issue... How can I check my docking station?