7

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
  • 3,933
  • What is the model of your i7 processor? Do you have thermald? If yes try with it disabled (but monitor temperature). Please try the acpi-cpufreq driver (GRUB_CMDLINE_LINUX_DEFAULT= "intel_pstate=disable"). 14.04 used acpi-cpufreq by default and 14.10 uses intel_pstate by default. – Doug Smythies Mar 01 '15 at 15:49
  • What do you mean by fan runs constantly? You mean very fast? Did you try to disable speedstep and enable smart fan control in bios by default it's disabled choose enable and change the lowest temp measure value e.g. from 30C to 40C and check then, it will reduce fan rpm full speed activation point. – JoKeR Mar 01 '15 at 19:47
  • Have you tried sudo cpufreq-set -g performance -r? What happens once issued? Tru also to set all the frequencies manually: sudo cpufreq-set -f 3.5GHz -r – kos Mar 02 '15 at 14:27
  • https://software.intel.com/en-us/articles/enhanced-intel-speedstepr-technology-and-demand-based-switching-on-linux – j0h Mar 02 '15 at 17:30
  • I don't remember ever having a problem like this, did you try reinstalling 14.04? – NoBugs Mar 05 '15 at 02:17
  • What i7 has 7 processors? – NoBugs Mar 05 '15 at 05:44

2 Answers2

14

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.

Doug Smythies
  • 15,448
  • 5
  • 44
  • 61
  • 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. – Witek Mar 05 '15 at 14:17
  • 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. – HD189733b Apr 04 '17 at 15:29
  • @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. – Doug Smythies Apr 04 '17 at 17:00
  • @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? – HD189733b Apr 05 '17 at 18:10
  • @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. – Doug Smythies Apr 05 '17 at 18:47
  • @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. – HD189733b Apr 06 '17 at 19:18
  • I am using a Latitude 5511 with a WD19 Dell Dock (180W). I am experiencing this issue... How can I check my docking station? – Udi May 06 '22 at 15:42
3

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.

Doug Smythies
  • 15,448
  • 5
  • 44
  • 61
  • 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. :-( – Witek Mar 02 '15 at 20:41
  • 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 Mar 02 '15 at 21:26
  • 1
    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. – Doug Smythies Mar 02 '15 at 21:53
  • Stopping thermald did not help. Still running at 800 MHz all the time, no matter what I do. – Witek Mar 03 '15 at 06:55
  • 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 Mar 03 '15 at 07:29
  • 1
    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" – Doug Smythies Mar 03 '15 at 07:47
  • 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. – Witek Mar 03 '15 at 10:48
  • After installing cpufreqd, I get suspicious messages in syslog. I have updated my question. – Witek Mar 03 '15 at 12:18
  • what do you get for "cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit" – Doug Smythies Mar 03 '15 at 15:55
  • bios_limit shows 800000 (800 MHz) for all CPUs. What does this mean? How to increase it? – Witek Mar 04 '15 at 21:45