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

14.04cpufreqintelperformance

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?

Best Answer

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.