Ubuntu is very slow when Intel SpeedStep is enabled (CPU is not used in full speed)

13,806

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.

Share:
13,806

Related videos on Youtube

Witek
Author by

Witek

Updated on September 18, 2022

Comments

  • Witek
    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 prints 800000 (800 MHz) for all CPUs. Where does this limit come from? How to increase it?

  • Witek
    Witek about 9 years
    After 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
    Doug Smythies about 9 years
    Do 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
    Doug Smythies about 9 years
    Of 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
    Witek about 9 years
    Stopping thermald did not help. Still running at 800 MHz all the time, no matter what I do.
  • Doug Smythies
    Doug Smythies about 9 years
    Do you learn anything by running thermald not as a daemon and in debug mode? "sudo thermald --no-daemon --loglevel=debug" see also
  • Doug Smythies
    Doug Smythies about 9 years
    At 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
    Witek about 9 years
    sudo 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
    Doug Smythies about 9 years
    what do you get for "cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit"
  • Witek
    Witek about 9 years
    bios_limit shows 800000 (800 MHz) for all CPUs. What does this mean? How to increase it?
  • Witek
    Witek about 9 years
    Bingo! 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
    HD189733b about 7 years
    I 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
    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
    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
    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
    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
    Admin about 2 years
    I am using a Latitude 5511 with a WD19 Dell Dock (180W). I am experiencing this issue... How can I check my docking station?