Skip to content

How to Check CPU Frequency in Linux (lscpu, cpupower)

Updated 5 min read

Updated: 18 October 2026 · Applies to: Debian 13 (util-linux 2.41, cpupower 6.12, turbostat 2024.07.26), tested on a KVM virtual machine; the same commands work on Ubuntu 24.04 and 26.04, AlmaLinux and Rocky Linux 9 and 10

To check the CPU frequency in Linux, run grep MHz /proc/cpuinfo: it prints the current clock of every CPU in MHz. lscpu adds the model name and, on hardware with frequency scaling, the minimum and maximum MHz. For live values on a physical server use sudo cpupower frequency-info or sudo turbostat. On a VPS the CPU is virtual: you see one fixed number from the hypervisor, and the scaling tools report that no frequency driver is active. That is normal.

1. /proc/cpuinfo: the quickest check

$ grep MHz /proc/cpuinfo
cpu MHz		: 1999.999
$ grep -m1 'model name' /proc/cpuinfo
model name	: AMD EPYC 7551 32-Core Processor

(Lab example from a KVM virtual machine with one vCPU.) There is one cpu MHz line per CPU. On a dedicated server the values differ per core and change with the load; to watch them, run watch -n1 "grep MHz /proc/cpuinfo" (Ctrl+C to stop). On Intel CPUs the model name often includes the base clock, for example "@ 2.40GHz"; AMD model names usually do not.

2. lscpu: model, MHz limits and per-CPU view

$ lscpu | grep -E 'Model name|MHz|Hypervisor|Virtualization type'
Model name:                           AMD EPYC 7551 32-Core Processor
Hypervisor vendor:                    KVM
Virtualization type:                  full
$ lscpu -e=CPU,MHZ,MAXMHZ,MINMHZ
CPU       MHZ MAXMHZ MINMHZ
  0 1999.9990      -      -

On this VPS, lscpu shows no MHz line in the summary and a dash for the maximum and minimum, because the virtual CPU has no frequency scaling. On a server where the kernel controls the frequency, the summary adds CPU max MHz, CPU min MHz and CPU(s) scaling MHz (the current speed as a percentage of the maximum), and lscpu -e fills the MAXMHZ and MINMHZ columns. The BogoMIPS value is not a clock speed.

3. The kernel's frequency files (dedicated servers)

The cpufreq subsystem shows each CPU's limits and current frequency in kHz (divide by 1,000 for MHz):

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq   # current, as requested by the driver
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq   # highest possible
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq   # lowest possible
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor   # for example performance or powersave

According to the Linux kernel documentation, scaling_cur_freq is the last frequency the driver requested and may not be the actual speed; cpuinfo_cur_freq (root only) is read from the hardware. On a VPS the folder does not exist:

$ ls /sys/devices/system/cpu/cpu0/cpufreq
ls: cannot access '/sys/devices/system/cpu/cpu0/cpufreq': No such file or directory

4. cpupower: frequency, limits and governor

  1. Install it:
    • Debian: sudo apt install linux-cpupower
    • Ubuntu: sudo apt install linux-tools-common linux-tools-$(uname -r). With only linux-tools-common, cpupower stops with WARNING: cpupower not found for kernel and names the package you are missing.
    • AlmaLinux, Rocky Linux, RHEL and Fedora: sudo dnf install kernel-tools
  2. Show everything: sudo cpupower frequency-info
  3. Only the current frequency in readable form: sudo cpupower frequency-info -f -m (from the kernel) or sudo cpupower frequency-info -w -m (from the hardware).
  4. Limits and governors: cpupower frequency-info -l and cpupower frequency-info -g; switch with sudo cpupower frequency-set -g performance.

On a VPS the answer looks like this (lab example, shortened):

$ sudo cpupower frequency-info
analyzing CPU 0:
  no or unknown cpufreq driver is active on this CPU
  ...
  current CPU frequency: Unable to call hardware
  current CPU frequency:  Unable to call to kernel
  boost state support:
    Supported: no
    Active: no

5. turbostat: the real speed, including turbo

turbostat comes in the same package as cpupower and must run as root. It measures how fast each core really ran during an interval:

sudo turbostat --quiet --show Core,Avg_MHz,Busy%,Bzy_MHz,TSC_MHz --interval 1 --num_iterations 5

According to the turbostat manual, Bzy_MHz is the average clock while the core was busy (this is where turbo shows up), Avg_MHz includes idle time, Busy% is the share of time the core was working and TSC_MHz is the reference clock. Run a load at the same time to see the turbo frequency. A virtual CPU has none of the counters behind the first three columns, so on our test VM turbostat reported No-APERF, No-TURBO and printed only TSC_MHz (2000).

6. Other commands

  • sudo dmesg | grep MHz shows the clock the kernel detected at boot, for example tsc: Detected 1999.999 MHz processor. It does not change with the load.
  • inxi -C (package inxi) gives a short summary; in our lab: Speed (MHz): 2000 min/max: N/A core: 1: 2000.
  • sudo hwinfo --cpu (package hwinfo) lists Clock: 2000 MHz per CPU.
  • i7z, found in older guides, is a reporting tool for Intel Core i3, i5 and i7 CPUs, and the Debian 13 package is still built from 2013 source code; turbostat covers the same and more.

Why a VPS shows a fixed frequency

On a KVM VPS the host server's kernel runs the physical CPU and decides its frequency and turbo. The virtual machine gets vCPUs, sees the hypervisor flag and reports the reference clock the hypervisor passes in. You cannot change governors or turbo from inside a VPS, and the MHz figure says little about real speed: compare real work, such as a build or a benchmark, instead. If you need control over frequency scaling and turbo, use a dedicated server, where all the commands above work on the real hardware.

Related: How to Check CPU Temperature in Linux (sensors Command) (also not readable on a VPS), How to Check CPU Usage on Linux: top, htop, mpstat and sar and How to determine number of CPUs on Linux using command line.

Official documentation: CPU performance scaling (kernel.org), turbostat manual and cpupower frequency-info manual.

Related services

KVM VPS hosting

NVMe SSD and full root access, with Free Basic Managed Support.

Unmanaged dedicated servers

full root access and free IPMI KVM, with Free Basic Managed Support.

Linux server management

hardening, patching, monitoring and automation for Ubuntu, Debian, RHEL and AlmaLinux.

Was this answer helpful?

Still stuck? Open a ticket