Revision as of 18:11, 27 September 2012

CPU frequency scaling enables the operating system to scale the CPU speed up or down in order to save power. CPU frequencies can be scaled automatically depending on the system load, in response to ACPI events, or manually by userspace programs.

Tip: Since kernel 3.4 the necessary CPU frequency driver modules are loaded automatically and the recommended ondemand governor is enabled by default. User-space applications like cpupower, acpid, laptop-mode-tools, or GUI tools provided for your desktop environment, may still be used for advanced configuration.

Contents

Configuration

Configuration of CPU frequency scaling is done through three mechanics:

The CPU frequency driver

The scaling governor

Fine-tuning of the governor through user-space tools

Since kernel 3.4 the necessary CPU frequency driver modules are loaded automatically and the recommended ondemand governor is enabled by default. This leaves the user with a functional, on-demand, CPU frequency scaling setup requiring no intervention from user-space.

User-space applications like cpupower, acpid, laptop-mode-tools, or GUI tools provided for your desktop environment, may still be used for advanced configuration.

The CPU frequency driver

In order for frequency scaling to work properly, the operating system must first know the limits of the CPU(s). To accomplish this, a kernel module must be loaded that can read and manage the specifications of the CPU(s). Note that these modules may need related features enabled in BIOS which may be labeled as: Speedstep, Cool and Quiet, PowerNow!, or ACPI.

Tip: Since 3.4, the kernel will determine and load the appropriate driver module.

This driver supports Processor Clocking Control interface by Hewlett-Packard and Microsoft Corporation which is useful on some Proliant servers.

p4_clockmod

CPUFreq driver for Intel Pentium 4 / Xeon / Celeron processors. When enabled it will lower CPU temperature by skipping clocks. You probably want to use a Speedstep driver instead.

Scaling governors

Governors can be thought of as pre-configured power schemes for the CPU. Some of the governors must be loaded as kernel modules in order to be seen by user space programs. One may load as many governors as desired (only one will be active on a CPU at any given time).

Tip: Since kernel 3.4, the cpufreq_ondemand governor is loaded by default.

Available governors:

cpufreq_ondemand

Dynamically switches between the CPU(s) available clock speeds based on system load

cpufreq_performance

The performance governor runs the CPU(s) at maximum clock speed

cpufreq_conservative

Similar to ondemand, but the CPU(s) clock speed switches gradually through all its available frequencies based on system load

cpufreq_powersave

Runs the CPU(s) at minimum speed

cpufreq_userspace

Manually configured clock speeds by user

fine-tuning governors

Improving on-demand performance

Changing the on-demand governor's threshold

On-demand governor sampling_down_factor

Tuning conservative governor

etc.

User-space tools

Changing the CPU frequency scaling properties from the defaults set during boot can be done through several user-space tools.