Idle CPUs show 800 MHz in /proc/cpuinfo due to a kernel 5.11+ optimization. Use cpupower or turbostat for accurate frequency readings.
Problem description
When an instance is idle, the /proc/cpuinfo file might report a CPU frequency of 800 MHz for some CPUs. This value differs from the frequency listed in the instance specification, as shown below.
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 2996.976
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 3192.046
cpu MHz : 800.000
cpu MHz : 3200.000
cpu MHz : 800.000
cpu MHz : 2975.717
cpu MHz : 800.000
cpu MHz : 3005.653
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
This solution also applies to the following kernels and operating systems:
Cause
Starting with Linux kernel 5.11, a patch (commit ID: 3fcd6a230fa7d03bffcb831a81b40435c146c12b) was added to improve system performance and CPU response.
x86/cpu: Avoid cpuinfo-induced IPIing of idle CPUs
Currently, accessing /proc/cpuinfo sends IPIs to idle CPUs in order to
learn their clock frequency. Which is a bit strange, given that waking
them from idle likely significantly changes their clock frequency.
This commit therefore avoids sending /proc/cpuinfo-induced IPIs to
idle CPUs.
When /proc/cpuinfo is accessed, the rcu_is_idle_cpu function checks whether the CPU is idle. If so, it returns min_freq, which defaults to 800 MHz. Some kernel versions report this min_freq value as the CPU base frequency.
Solution
The idle-state frequency displayed may not match the specification, but actual performance is unaffected because the CPU still reaches its specified frequency under load.
For accurate frequency readings, use tools such as cpupower or turbostat.
For example, run cpupower to check the frequency:
sudo cpupower frequency-info
The output shows that the current CPU frequency is 3.20 GHz.
[ecs-user@iZ2zxxx187kyZ ~]$ sudo 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.80 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 3.20 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
Some instance types may not support this frequency query. See Instance family overview for the base frequency of your specific instance.