Skip to content

cpupower - CPU Frequency & Governor Control Cheatsheet

cpupower - CPU Frequency & Governor Control Cheatsheet

cpupower inspects and controls the Linux kernel’s CPU frequency scaling (cpufreq) and idle-state (cpuidle) subsystems. It shows what speed each core is running at, lets you switch the scaling governor (e.g. performance for max speed, powersave for efficiency), pin or bound frequencies, and inspect/disable deep C-states that add wake-up latency. It is the standard tool for squeezing predictable performance out of a machine or saving power on a laptop.

Installation

PlatformCommand
Debian/Ubuntusudo apt install linux-cpupower
Fedora/RHELsudo dnf install kernel-tools
Arch Linuxsudo pacman -S cpupower
Verifycpupower --version

Inspecting State

CommandShows
cpupower frequency-infoGovernor, current/min/max freq, driver
cpupower -c all frequency-infoInfo for all cores
cpupower idle-infoAvailable C-states and usage
cpupower monitorLive per-core frequency/idle residency
watch -n1 'cpupower -c all frequency-info -f'Live frequencies
# Quick look at the governor and current speed
cpupower frequency-info

Governors

GovernorBehavior
performanceAlways run at max frequency
powersavePrefer lowest frequency (or intel_pstate min)
ondemandScale up quickly under load
conservativeScale up gradually
schedutilScheduler-driven scaling (modern default)
userspaceFrequency set manually
# See available governors
cpupower frequency-info -g

# Set the performance governor on all cores
sudo cpupower frequency-set -g performance

Setting Frequency

CommandEffect
sudo cpupower frequency-set -g performanceSet governor
sudo cpupower frequency-set -d 2.0GHzSet minimum frequency
sudo cpupower frequency-set -u 3.5GHzSet maximum frequency
sudo cpupower frequency-set -f 3.0GHzPin a fixed frequency (userspace gov)
sudo cpupower -c 0-3 frequency-set -g powersavePer-core governor

Idle States (C-states)

Deep C-states save power but add wake-up latency — a problem for latency-sensitive workloads.

CommandEffect
cpupower idle-infoList C-states and residency
sudo cpupower idle-set -d 3Disable a specific C-state
sudo cpupower idle-set -e 3Enable a C-state
sudo cpupower idle-set -D 10Disable C-states with latency > 10µs
# Latency-critical: disable deep idle states for consistent wake-ups
sudo cpupower idle-set -D 5

Monitoring Under Load

# Watch how frequency and idle residency respond to a workload
cpupower monitor -i 1

Shows per-core frequency and time spent in each C-state — useful to confirm a governor change actually took effect.

Making Changes Persist

cpupower frequency-set is not persistent across reboots. Options:

MethodHow
systemd servicesystemctl enable cpupower with /etc/default/cpupower
/etc/default/cpupowerSet GOVERNOR="performance"
TuneDLet tuned manage the governor via a profile
rc.local / unitRun the frequency-set command at boot

Common Workflows

# Benchmark box: lock to performance for reproducible numbers
sudo cpupower frequency-set -g performance
cpupower frequency-info -f -c all      # verify

# Laptop: save battery
sudo cpupower frequency-set -g powersave

# Latency tuning: performance governor + shallow idle
sudo cpupower frequency-set -g performance
sudo cpupower idle-set -D 5
ToolRole
cpupowerCPU frequency/governor + idle-state control
tunedWhole-system profiles (sets governor + more)
numactlNUMA CPU/memory binding
tasksetCPU affinity for a process
turbostatDetailed per-core freq/power telemetry

For a coherent whole-system approach, let tuned manage governors; use cpupower for direct, per-core control and inspection.

Resources