Ubuntu – How to enable Turbo-boost

16.04intelturbo-boost

I have a Dell XPS 13 (developer edition) which I bought some years ago with Ubuntu 12.04 preinstalled.

I've upgraded to Ubuntu 16.04 and since then I noticed my computer became way slower than before on certain heavy tasks.

I also noticed that my computer became much less noisy on heavy tasks, and it looks like my i7's Turbo boost does not kick in.

Sending work to 4 procs, turbostat shows:

 CPU Avg_MHz   %Busy Bzy_MHz TSC_MHz
   -     602  100.00     603    2595
   0     611  100.00     611    2597
   1     594  100.00     595    2594
   2     610  100.00     612    2594
   3     594  100.00     595    2594

I'm not an expert but it looks like turbo does not work, right?

How am I supposed to make it work? All the stuff I found online only say to use turbostat, but that does not really help to solve the problem.

Any idea?

I use burnK7 to generate CPU load. Note that at the beginning the Bzy_MHz column goes close to 3 Ghz, but then stabilizes near 1 Ghz. Is this normal?

My processor: Intel® Core™ i7-3687U CPU @ 2.10GHz × 4

OS: Ubuntu 16.04.1 LTS 64 bits

Under heavy-load i7z displays:

i7z

It says turbo mode is enabled, but the frequency is very low, and I'm sure for the exact same task (here compiling Scala code) the computer was much more noisy/fast before upgrading Ubuntu. Why does it happen?

I turned off thermald with:

sudo service thermald stop

I also get the following output from cpupower:

cpupower frequency-info
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: 0.97 ms.
  hardware limits: 800 MHz - 3.30 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 1.98 GHz and 1.98 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 1.10 GHz.
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

I noticed that frequency should be within 1.98 GHz and 1.98 GHz. is actually a moving target range, and may be affected by thermald start/stops.

I now get a weird result:

  current policy: frequency should be within 3.30 GHz and 3.30 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.

Note that the values in files like /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq seem to be constantly changing.


Some extra turbostat outputs.

The first is at the beginning of a load phase. At the beginning the frequency is high.

$ sudo turbostat --debug sleep 10
turbostat version 4.8 26-Sep, 2015 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 13 CPUID levels; family:model:stepping 0x6:3a:9 (6:58:9)
CPUID(6): APERF, DTS, PTM, EPB
RAPL: 3855 sec. Joule Counter Range, at 17 Watts
cpu2: MSR_PLATFORM_INFO: 0x80815f0011a00
8 * 100 = 800 MHz max efficiency frequency
26 * 100 = 2600 MHz base frequency
cpu2: MSR_IA32_POWER_CTL: 0x0014005d (C1E auto-promotion: DISabled)
cpu2: MSR_TURBO_RATIO_LIMIT: 0x1f1f1f21
31 * 100 = 3100 MHz max turbo 4 active cores
31 * 100 = 3100 MHz max turbo 3 active cores
31 * 100 = 3100 MHz max turbo 2 active cores
33 * 100 = 3300 MHz max turbo 1 active cores
cpu2: MSR_CONFIG_TDP_NOMINAL: 0x00000015 (base_ratio=5)
cpu2: MSR_CONFIG_TDP_LEVEL_1: 0x00080070 (PKG_MIN_PWR_LVL1=0 PKG_MAX_PWR_LVL1=0 LVL1_RATIO=8 PKG_TDP_LVL1=112)
cpu2: MSR_CONFIG_TDP_LEVEL_2: 0x001a00c8 (PKG_MIN_PWR_LVL2=0 PKG_MAX_PWR_LVL2=0 LVL2_RATIO=10 PKG_TDP_LVL2=200)
cpu2: MSR_CONFIG_TDP_CONTROL: 0x00000000 ( lock=0)
cpu2: MSR_TURBO_ACTIVATION_RATIO: 0x00000014 (MAX_NON_TURBO_RATIO=20 lock=0)
cpu2: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x1e008405 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked: pkg-cstate-limit=5: pc7s)
cpu0: MSR_IA32_ENERGY_PERF_BIAS: 0x00000006 (balanced)
cpu0: MSR_RAPL_POWER_UNIT: 0x000a1003 (0.125000 Watts, 0.000015 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000088 (17 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x800080fa00dc80c8 (locked)
cpu0: PKG Limit #1: ENabled (25.000000 Watts, 28.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: ENabled (31.250000 Watts, 0.000977* sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x80000000 (locked)
cpu0: Cores Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x80000000 (locked)
cpu0: GFX Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00691200 (105 C)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x880a0908 (95 C)
cpu0: MSR_IA32_THERM_STATUS: 0x880c0008 (93 C +/- 1)
cpu2: MSR_IA32_THERM_STATUS: 0x880a0008 (95 C +/- 1)
    Core     CPU Avg_MHz   %Busy Bzy_MHz TSC_MHz     SMI  CPU%c1  CPU%c3  CPU%c6  CPU%c7 CoreTmp  PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc7 PkgWatt CorWatt GFXWatt
       -       -    1900   79.17    2406    2594       0   15.12    0.11    0.00    5.60      93      93    0.00    0.00    0.00    0.00   10.51    6.86    0.37
       0       0    1893   78.90    2405    2594       1   16.29    0.16    0.00    4.65      89      93    0.00    0.00    0.00    0.00   10.51    6.86    0.37
       0       1    2016   84.01    2406    2594       1   11.18
       1       2    1982   82.61    2405    2594       1   10.78    0.06    0.00    6.55      93
       1       3    1710   71.16    2408    2594       1   22.23
10.001067 sec

The second is after a while under load – the frequency decreases:

$ sudo turbostat --debug sleep 10
turbostat version 4.8 26-Sep, 2015 - Len Brown <lenb@kernel.org>
CPUID(0): GenuineIntel 13 CPUID levels; family:model:stepping 0x6:3a:9 (6:58:9)
CPUID(6): APERF, DTS, PTM, EPB
RAPL: 3855 sec. Joule Counter Range, at 17 Watts
cpu2: MSR_PLATFORM_INFO: 0x80815f0011a00
8 * 100 = 800 MHz max efficiency frequency
26 * 100 = 2600 MHz base frequency
cpu2: MSR_IA32_POWER_CTL: 0x0014005d (C1E auto-promotion: DISabled)
cpu2: MSR_TURBO_RATIO_LIMIT: 0x1f1f1f21
31 * 100 = 3100 MHz max turbo 4 active cores
31 * 100 = 3100 MHz max turbo 3 active cores
31 * 100 = 3100 MHz max turbo 2 active cores
33 * 100 = 3300 MHz max turbo 1 active cores
cpu2: MSR_CONFIG_TDP_NOMINAL: 0x00000015 (base_ratio=5)
cpu2: MSR_CONFIG_TDP_LEVEL_1: 0x00080070 (PKG_MIN_PWR_LVL1=0 PKG_MAX_PWR_LVL1=0 LVL1_RATIO=8 PKG_TDP_LVL1=112)
cpu2: MSR_CONFIG_TDP_LEVEL_2: 0x001a00c8 (PKG_MIN_PWR_LVL2=0 PKG_MAX_PWR_LVL2=0 LVL2_RATIO=10 PKG_TDP_LVL2=200)
cpu2: MSR_CONFIG_TDP_CONTROL: 0x00000000 ( lock=0)
cpu2: MSR_TURBO_ACTIVATION_RATIO: 0x00000014 (MAX_NON_TURBO_RATIO=20 lock=0)
cpu2: MSR_NHM_SNB_PKG_CST_CFG_CTL: 0x1e008405 (UNdemote-C3, UNdemote-C1, demote-C3, demote-C1, locked: pkg-cstate-limit=5: pc7s)
cpu0: MSR_IA32_ENERGY_PERF_BIAS: 0x00000006 (balanced)
cpu0: MSR_RAPL_POWER_UNIT: 0x000a1003 (0.125000 Watts, 0.000015 Joules, 0.000977 sec.)
cpu0: MSR_PKG_POWER_INFO: 0x00000088 (17 W TDP, RAPL 0 - 0 W, 0.000000 sec.)
cpu0: MSR_PKG_POWER_LIMIT: 0x800080fa00dc80c8 (locked)
cpu0: PKG Limit #1: ENabled (25.000000 Watts, 28.000000 sec, clamp DISabled)
cpu0: PKG Limit #2: ENabled (31.250000 Watts, 0.000977* sec, clamp DISabled)
cpu0: MSR_PP0_POLICY: 0
cpu0: MSR_PP0_POWER_LIMIT: 0x80000000 (locked)
cpu0: Cores Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_PP1_POLICY: 0
cpu0: MSR_PP1_POWER_LIMIT: 0x80000000 (locked)
cpu0: GFX Limit: DISabled (0.000000 Watts, 0.000977 sec, clamp DISabled)
cpu0: MSR_IA32_TEMPERATURE_TARGET: 0x00691200 (105 C)
cpu0: MSR_IA32_PACKAGE_THERM_STATUS: 0x881b0908 (78 C)
cpu0: MSR_IA32_THERM_STATUS: 0x881e0008 (75 C +/- 1)
cpu2: MSR_IA32_THERM_STATUS: 0x881b0008 (78 C +/- 1)
    Core     CPU Avg_MHz   %Busy Bzy_MHz TSC_MHz     SMI  CPU%c1  CPU%c3  CPU%c6  CPU%c7 CoreTmp  PkgTmp Pkg%pc2 Pkg%pc3 Pkg%pc6 Pkg%pc7 PkgWatt CorWatt GFXWatt
       -       -      30    2.79    1091    2594       0    6.92    0.30    0.00   89.99      70      71    1.60    0.03    1.48   47.85    3.65    0.71    0.29
       0       0      22    1.97    1133    2594       0    6.34    0.12    0.00   91.58      70      71    1.60    0.03    1.48   47.85    3.65    0.71    0.29
       0       1      38    3.09    1224    2594       0    5.22
       1       2      25    2.45    1016    2594       0    8.67    0.47    0.00   88.40      70
       1       3      37    3.67    1006    2594       0    7.45
10.001501 sec

At the beginning of the load phase, it seems my CPUs can become very hot, close to 105°, which is the junction temp of CPUs, and then a system prevents them to cook themselves and decrease significantly the frequency to a minimum.

I'd like to have a less hot processor on heavy load, and, when it's becoming hot, decrease the processor less significantly. Is that possible?


Related issues I opened to solve my problem (may contain additional information not mentioned here that could be useful):

Best Answer

I wonder if the CPU is being throttled by the powerclamp. If you run top, you may see kidle_inject threads running, if so, the CPU is being power clamped as a thermal constraint, hence you will see apparent 100% utilization combined with a low CPU frequency.

Related Question