Max CPU Frequency Reported by cpupower Differs Between intel_pstate and acpi_cpufreq drivers

Solution Verified - Updated -

Environment

Reported on:

  • Red Hat Enterprise Linux 7 and later

    • Intel CPUs

Issue

When using the intel_pstate performance scaling driver with turboboost enabled, cpupower frequency-info reports an upper hardware frequency limit of 3.40 GHz.

With the intel_pstate driver disabled and the acpi_cpufreq performance scaling driver in use, the upper hardware frequency limit reported by cpupower frequency-info is 2.40 GHz when turboboost is also enabled.

Resolution

Use turbostat to verify the CPU frequency and ensure that the turboboost frequencies are being reached. Make sure that the frequencies are checked under load, or else lower idle frequencies may be reported.

Root Cause

cpupower frequency-info reports the CPU frequency for theintel_pstate and acpi_cpufreq drivers as provided by hardware to the kernel. The intel_pstate driver is able to report the turboboost frequency limit in cpupower as turboboost is a feature of the Intel CPU. The actual frequency being used under load can be seen in turbostat output, where frequencies higher than the acpi_cpufreq limit of 2.40 GHz can be seen.

Diagnostic Steps

  1. Check the cpupower frequency-info output to see which driver is being used, the reported maximum frequency limit, and whether or not turboboost is enabled:

    # 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:  Cannot determine or is not supported.
      hardware limits: 800 MHz - 3.40 GHz
      available cpufreq governors: performance powersave
      current policy: frequency should be within 800 MHz and 3.40 GHz.
                      The governor "performance" may decide which speed to use
                      within this range.
      current CPU frequency: Unable to call hardware
      current CPU frequency: 800 MHz (asserted by call to kernel)
      boost state support:
        Supported: yes
        Active: yes
    
  2. Looking at the Bzy_MHz in turbostat output we see CPU reaching frequencies higher than 2.4 GHz. Make sure that the frequencies are checked under load, or else lower idle frequencies may be reported:

    usec    Time_Of_Day_Seconds     Package Core    CPU     APIC    X2APIC  Avg_MHz Busy%   Bzy_MHz TSC_MHz IPC     IRQ
    20289   1677128715.127062       -       -       -       -       -       1       0.04    2374    2397    1.22    24751
      121   1677128715.106894       0       0       0       0       0       1       0.13    1085    2394    0.87    212
       51   1677128715.106956       0       0       76      1       1       0       0.01    1137    2394    0.39    63
       60   1677128715.107094       0       1       4       2       2       0       0.03    1239    2394    0.26    52
    [...cut...]
       51   1677128715.117144       1       1       81      131     131     5       0.15    3277    2394    1.24    1612
       61   1677128715.117285       1       2       9       132     132     1       0.02    2761    2394    0.69    84
       49   1677128715.117346       1       2       85      133     133     2       0.05    3134    2394    1.19    521
    
  3. With the intel_pstate driver disabled, validate the acpi_cpufreq driver is being used, that turboboost is enabled, and that the maximum frequency in cpupower frequency-info is reported as 2.4 GHz:

    # cpupower_frequency-info 
    analyzing CPU 0:
      driver: acpi-cpufreq
      CPUs which run at the same hardware frequency: 0
      CPUs which need to have their frequency coordinated by software: 0
      maximum transition latency: 10.0 us
      hardware limits: 800 MHz - 2.40 GHz
      available frequency steps:  2.40 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
      available cpufreq governors: conservative ondemand userspace powersave performance schedutil
      current policy: frequency should be within 800 MHz and 2.40 GHz.
                      The governor "performance" may decide which speed to use
                      within this range.
      current CPU frequency: 2.40 GHz (asserted by call to hardware)
      boost state support:
        Supported: yes
        Active: yes
    
  4. turbostat output shows that the Bzy_MHz is in excess of 2.40 GHz. Make sure that the frequencies are checked under load, or else lower idle frequencies may be reported:

    usec    Time_Of_Day_Seconds     Package Core    CPU     APIC    X2APIC  Avg_MHz Busy%   Bzy_MHz TSC_MHz IPC     IRQ  
    19981   1677127967.727236       -       -       -       -       -       0       0.02    2087    2398    1.17    13252  
      272   1677127967.707527       0       0       0       0       0       1       0.06    2086    2394    0.64    115
       53   1677127967.707593       0       0       76      1       1       2       0.08    2670    2394    0.54    100     
       63   1677127967.707739       0       1       4       2       2       0       0.01    2293    2394    0.26    47      
       50   1677127967.707802       0       1       80      3       3       2       0.06    3101    2394    0.10    124
    

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments