The heck is a “CPU Governor”?
A CPU Governor manages the CPU’s clock speed (frequency), balancing performance and power consumption based on workload. It is part of the Linux kernel CPU frequency scaling subsystem, helping a system respond to load demands while optimising energy usage and thermal output.
This information may change as additional devices are supported with different CPU governors. Generally speaking these are the typical CPU Governors you would find on a Linux based system. Please be aware that Android has a whole different subsection of governors and is not applicable for these devices.
Typical CPU Governors
These CPU Governors are the default selected options used across a variety of different systems and cores. Applications, and ports, can also benefit from different CPU Governor changes.
ondemand
- A balanced option for most content with power saving where possible but where performance spikes are occasionally needed. Dynamically adjusts the CPU frequency based on system load:
- High load = Maximum Frequency
- Low load = Minimum Frequency
- Power Usage – Moderate
- This really is dependant on current workload of the CPU.
performance
- This governor forces the CPU to always run at its highest possible frequency. Best suited for situations where maximum performance is critical.
- Power Usage – High
- Maximum Frequency = Higher power draw and heat output.
powersave
- This governor forces the CPU to always run at its lowest possible frequency. Ideal for conserving battery life or when performance is not a priority.
- Power Usage – Low
- Minimal Frequency = Lower power consumption and heat.
Additional CPU Governors
The following CPU Governors are more “advanced” options that you can choose from. These require additional settings that you can change via SSH or ADB. Please note that you won’t get additional performance or power saving benefits from these options but are simply available to choose from as they are available.
userspace
- Allows manual control over the CPU frequency by setting a specific speed via a
scaling_setspeed
parameter. Suitable for content that require fine-tuned control of CPU frequency. - Power Usage – Well that depends on the manually selected frequency.
conservative
- Similar to
ondemand
, but changes CPU frequency more gradually to avoid sudden spikes or drops. Suitable for systems where smooth scaling is preferred over aggressive frequency changes. - Power Usage – Lower than
ondemand
albeit with smoother transitions.
interactive
- Also similar to
ondemand
, but designed to ramp up CPU frequency more aggressively in response to user input or CPU intensive activity. Using this governor can sometimes lead to sudden lock ups if the frequency is changed too quickly! - Power Usage – About the same as
conservative
but can spike CPU frequencies a bit too harshly.
How to Check and Change CPU Governors
By pressing SELECT
on your device whilst exploring your content you can check your current CPU Governor by pressing the MENU
button. This will show up a message box stating what you currently have set.
You can also change the current CPU Governor from this screen and set it to the individual content, for the current directory, or the entire directory (including subdirectories).
Manually Check
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
List Available Governors
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Manually Set CPU Governor - Example performance
echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Please note that manual changes are temporary and reset on reboot.