7.1 CPU Frequency Scaling Framework

The Linux kernel supports CPU performance scaling by means of the CPUFreq (CPU Frequency scaling) subsystem. Changing the CPU frequency can save power consumption (when decreased) or boost performance (when increased). This subsystem navigates through predefined Power-performance states (P-states) and therefore VDDCPU is modified when the CPU frequency is adjusted.

The following governors are available to control the CPU frequency:

  • “powersave” causes the lowest frequency, within the scaling_min_freq policy limit, to be requested for that policy.
  • “performance” causes the highest frequency, within the scaling_max_freq policy limit, to be requested for that policy.
  • “userspace” has no direct action, but allows the user space to set the CPU frequency for the policy.
  • “ondemand” uses the CPU load as a CPU frequency selection metric.
  • “conservative” has the same effect as “ondemand”, but avoids changing the frequency significantly over short time intervals, which may not be suitable for systems with limited power supply capacity.
To read the governor setting:
# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
powersave
The set of predefined frequencies used by the governor policies is listed in the file system:
# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
90000 250000 600000 800000 1000000