Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk5 min

Linux CPUFreq: Governors, Policies, and Frequency Readings Explained

CPUFreq coordinates Linux CPU performance scaling through a core, governors, drivers, and policy-based sysfs controls. Learn what its settings request—and what frequency readings do not guarantee.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

CPUFreq is the Linux kernel subsystem that coordinates CPU performance scaling. Its core provides the framework and userspace interface, governors decide what performance to request, and drivers translate requests into platform-specific hardware behavior. To inspect or change CPUFreq settings, start with the policy directory under /sys/devices/system/cpu/cpufreq/—but remember that a requested frequency is not necessarily the CPU’s instantaneous hardware clock.

What CPUFreq does

Linux CPUFreq mediates performance scaling: it provides common controls for requesting CPU performance changes while leaving the details of applying them to the active driver and hardware. The kernel documentation describes three main layers: the CPUFreq core, scaling governors, and scaling drivers. The Linux kernel’s CPU Performance Scaling documentation, authored by Rafael J. Wysocki, explains the subsystem and its interfaces.

As an Amazon Associate I earn from qualifying purchases.

  • Core: supplies the shared framework and userspace interface, including policy objects and their sysfs attributes.
  • Governor: estimates the CPU capacity needed and makes frequency requests according to an algorithm.
  • Driver: exposes the platform’s scaling capabilities and communicates with its hardware using platform-specific mechanisms.

This model has an important exception: some drivers, including intel_pstate, can implement their own scaling algorithms rather than use the generic governor layer. Consequently, a governor name or setting should be interpreted in the context of the active driver, kernel configuration, and hardware.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How CPUFreq policies group CPUs

CPUFreq controls are associated with policy objects, not necessarily with one CPU apiece. A policy represents the CPUs that share a hardware performance-scaling interface. At initialization, the core creates policy directories in /sys/devices/system/cpu/cpufreq/, typically named policy0, policy1, and so on. A CPU’s own cpufreq link points to the policy associated with it.

For example, inspect the policies and their CPU membership with:

ls -l /sys/devices/system/cpu/cpufreq/
cat /sys/devices/system/cpu/cpufreq/policy0/affected_cpus
cat /sys/devices/system/cpu/cpufreq/policy0/related_cpus

Replace policy0 with a directory that exists on your machine. affected_cpus identifies CPUs currently affected by the policy; related_cpus identifies CPUs related to it by the scaling interface. Policy grouping depends on the platform, so do not assume each logical CPU has independent frequency controls.

How to check the active driver, governor, and limits

Common policy attributes include the driver, selected governor or driver algorithm, and minimum and maximum frequency limits. The exact files available depend on driver support and kernel configuration.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Find a policy: run ls /sys/devices/system/cpu/cpufreq/ and choose an existing policyX directory.
  2. Check the driver and governor: run cat /sys/devices/system/cpu/cpufreq/policyX/scaling_driver and cat /sys/devices/system/cpu/cpufreq/policyX/scaling_governor.
  3. Check available governors: if present, read scaling_available_governors. The options are not universal; modules may need to be loaded, and some drivers provide their own algorithms.
  4. Inspect policy limits: read scaling_min_freq and scaling_max_freq. CPUFreq expresses these values in kHz. The minimum must not exceed the maximum.

Use the same directory in each command, substituting the policy name found on your system. Some platforms also expose bios_limit, a firmware-reported upper limit; the kernel documentation notes that this attribute does not account for ACPI thermal limitations. Driver-specific files may appear as well.

What the common governors request

Generic governor names describe request behavior, not a guarantee that the hardware will hold a particular clock. The active driver and policy limits shape what each request means.

Governor Request behavior Important qualification
performance Requests the highest frequency permitted by the policy’s maximum limit. It is not an unconditional hardware override; platform constraints still matter.
powersave Requests the lowest frequency permitted by the policy’s minimum limit. It does not guarantee a fixed instantaneous hardware clock.
userspace Allows userspace to request a frequency through scaling_setspeed. The actual hardware frequency can differ because of coordination, thermal limits, or power limits.
schedutil Uses CPU scheduler utilization data to determine frequency requests. For real-time or deadline scheduling classes, the kernel documentation says it raises frequency to the allowed maximum.

These generic governors may not all be available on a particular system. A driver such as intel_pstate can expose driver-provided scaling algorithms through the relevant interface instead of relying on the generic governor layer.

How to change the governor

Changing a sysfs attribute requires write permission, commonly obtained through root privileges. First verify that the desired option appears in the policy’s available-governor list. Then write it to that policy’s scaling_governor attribute:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cat /sys/devices/system/cpu/cpufreq/policyX/scaling_available_governors
sudo sh -c 'echo schedutil > /sys/devices/system/cpu/cpufreq/policyX/scaling_governor'
cat /sys/devices/system/cpu/cpufreq/policyX/scaling_governor

Replace schedutil with an option actually reported by your policy, and replace policyX with its real directory name. The final command checks the selected value. If the write fails, the option may be unavailable, the file may be read-only, or the active driver may use a different control model. A successful write changes the runtime setting; whether it persists after reboot depends on how the system configures CPUFreq.

Why scaling_cur_freq may not match the CPU clock

scaling_cur_freq commonly reports the last frequency requested through the scaling interface. It is not necessarily a direct measurement of the instantaneous frequency at which the hardware is running. Some architectures can report a more precise value through this attribute, but the kernel documentation still cautions that it may not equal the exact instantaneous hardware frequency.

If available, cpuinfo_cur_freq is defined as the current frequency obtained from hardware. Availability and measurement behavior depend on the platform. Check both files, if present, and treat each according to what it represents rather than assuming one universally reliable clock reading:

cat /sys/devices/system/cpu/cpufreq/policyX/scaling_cur_freq
cat /sys/devices/system/cpu/cpufreq/policyX/cpuinfo_cur_freq

Different readings or a gap between a request and observed operation can reflect the distinction between a software request and hardware behavior. Thermal, power, firmware, and hardware constraints can also bound the result.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Why performance and power change together

Frequency scaling is a performance-and-power tradeoff, not a promise that increasing frequency will yield a fixed amount of extra work. The kernel documentation notes that higher frequency and voltage can let a CPU retire more instructions per unit time, while also increasing energy use per unit time or power draw. The actual effect varies by processor, workload, and platform conditions.

What to compare when diagnosing two systems

To explain why two Linux machines expose different controls or behave differently, compare the factors that determine the interface and its meaning:

  • Active CPUFreq scaling driver and whether it uses generic governors or its own algorithms.
  • Available governors or driver-provided algorithms on the target kernel.
  • Which CPUs share each policy.
  • Supported policy minimum and maximum frequency limits.
  • Whether a displayed frequency is a scaling request or a hardware-derived reading.
  • Firmware, thermal, and power constraints that may limit operation.

There is no universal ranking that makes one governor fastest or most power-efficient on every combination of hardware and workload. The meaningful comparison is what each system’s driver, policies, measurements, and constraints actually expose.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.