Checking CPU speed throttling in Linux shows whether the kernel is letting the processor use its full configured frequency range or holding it below that ceiling. That matters when a system benchmarks slower than expected, feels capped after a firmware or hypervisor change, or runs cooler than expected under sustained load.
Linux exposes frequency scaling through the CPUFreq subsystem. The simplest current check is cpupower frequency-info: current policy shows the minimum and maximum frequency the kernel is currently allowed to request for a policy, while hardware limits shows the full range supported by that policy. When the policy maximum is lower than the hardware maximum, a software or firmware limit is throttling the processor below its full range.
The commands below were verified against current cpupower behavior on Ubuntu 24.04 and CentOS 10 ARM64 guests under Parallels. Both guests exposed the cpupower command but not a live cpufreq driver, so Unable to determine current policy, Not Available, and no or unknown cpufreq driver are the decisive results in that environment. On physical hosts or supported virtual machines that export CPUFreq policy data, the same commands show the active ceiling directly.
Steps to check CPU speed throttling in Linux:
- Query the current policy for the first logical CPU.
$ cpupower -c 0 frequency-info --policy analyzing CPU 0: Unable to determine current policy
When a live cpufreq driver is active, this command prints the current minimum and maximum allowed frequency together with the governor or driver-managed policy. The policy maximum is the active throttle ceiling for that CPUFreq policy.
- Query the hardware range for the same CPU.
$ cpupower -c 0 frequency-info --hwlimits analyzing CPU 0: Not Available
When hardware limits is available, compare its maximum with the maximum from current policy. If the policy maximum is lower, the processor is capped below its full range.
- Show the full CPUFreq summary when either focused query is unavailable.
$ cpupower -c 0 frequency-info analyzing CPU 0: no or unknown cpufreq driver is active on this CPU CPUs which run at the same hardware frequency: Not Available CPUs which need to have their frequency coordinated by software: Not Available maximum transition latency: Cannot determine or is not supported. Not Available available cpufreq governors: Not Available Unable to determine current policy current CPU frequency: Unable to call hardware current CPU frequency: Unable to call to kernel
On a system with active CPUFreq support, the same summary also shows the scaling driver, available governors, hardware limits, and current policy. That one screen is usually enough to confirm whether a frequency cap is in effect.
- Check whether the kernel exported any CPUFreq policy directories.
$ ls -la /sys/devices/system/cpu/cpufreq total 0 drwxr-xr-x 2 root root 0 Apr 14 12:41 . drwxr-xr-x 10 root root 0 Apr 14 12:40 ..
On systems that expose live frequency policy data, this directory also contains entries such as policy0. The raw files under a populated policy directory, especially cpuinfo_max_freq and scaling_max_freq, expose the hardware maximum and the active policy ceiling in kHz.
- Treat the policy maximum as the active throttle ceiling when both ranges are available.
If hardware limits shows 800 MHz - 4.80 GHz but current policy says the CPU should stay within 800 MHz and 2.00 GHz, the active cap is 2.00 GHz. If the policy maximum matches the hardware maximum, there is no cpufreq speed cap even though the processor may still clock down while it is idle.
- Repeat the same check on a physical host or a virtual machine that exposes CPUFreq when the current guest reports no driver or no policy.
An unavailable cpufreq driver does not prove that the processor is unrestricted. It only means the current environment is not exporting live CPU frequency policy data, which is common in containers, cloud guests, and some Apple Silicon virtual machines.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
