forked from Minki/linux
186 lines
4.6 KiB
Plaintext
186 lines
4.6 KiB
Plaintext
|
CPU frequency and voltage scaling code in the Linux(TM) kernel
|
||
|
|
||
|
|
||
|
L i n u x C P U F r e q
|
||
|
|
||
|
U S E R G U I D E
|
||
|
|
||
|
|
||
|
Dominik Brodowski <linux@brodo.de>
|
||
|
|
||
|
|
||
|
|
||
|
Clock scaling allows you to change the clock speed of the CPUs on the
|
||
|
fly. This is a nice method to save battery power, because the lower
|
||
|
the clock speed, the less power the CPU consumes.
|
||
|
|
||
|
|
||
|
Contents:
|
||
|
---------
|
||
|
1. Supported Architectures and Processors
|
||
|
1.1 ARM
|
||
|
1.2 x86
|
||
|
1.3 sparc64
|
||
|
1.4 ppc
|
||
|
1.5 SuperH
|
||
|
|
||
|
2. "Policy" / "Governor"?
|
||
|
2.1 Policy
|
||
|
2.2 Governor
|
||
|
|
||
|
3. How to change the CPU cpufreq policy and/or speed
|
||
|
3.1 Preferred interface: sysfs
|
||
|
3.2 Deprecated interfaces
|
||
|
|
||
|
|
||
|
|
||
|
1. Supported Architectures and Processors
|
||
|
=========================================
|
||
|
|
||
|
1.1 ARM
|
||
|
-------
|
||
|
|
||
|
The following ARM processors are supported by cpufreq:
|
||
|
|
||
|
ARM Integrator
|
||
|
ARM-SA1100
|
||
|
ARM-SA1110
|
||
|
|
||
|
|
||
|
1.2 x86
|
||
|
-------
|
||
|
|
||
|
The following processors for the x86 architecture are supported by cpufreq:
|
||
|
|
||
|
AMD Elan - SC400, SC410
|
||
|
AMD mobile K6-2+
|
||
|
AMD mobile K6-3+
|
||
|
AMD mobile Duron
|
||
|
AMD mobile Athlon
|
||
|
AMD Opteron
|
||
|
AMD Athlon 64
|
||
|
Cyrix Media GXm
|
||
|
Intel mobile PIII and Intel mobile PIII-M on certain chipsets
|
||
|
Intel Pentium 4, Intel Xeon
|
||
|
Intel Pentium M (Centrino)
|
||
|
National Semiconductors Geode GX
|
||
|
Transmeta Crusoe
|
||
|
Transmeta Efficeon
|
||
|
VIA Cyrix 3 / C3
|
||
|
various processors on some ACPI 2.0-compatible systems [*]
|
||
|
|
||
|
[*] Only if "ACPI Processor Performance States" are available
|
||
|
to the ACPI<->BIOS interface.
|
||
|
|
||
|
|
||
|
1.3 sparc64
|
||
|
-----------
|
||
|
|
||
|
The following processors for the sparc64 architecture are supported by
|
||
|
cpufreq:
|
||
|
|
||
|
UltraSPARC-III
|
||
|
|
||
|
|
||
|
1.4 ppc
|
||
|
-------
|
||
|
|
||
|
Several "PowerBook" and "iBook2" notebooks are supported.
|
||
|
|
||
|
|
||
|
1.5 SuperH
|
||
|
----------
|
||
|
|
||
|
The following SuperH processors are supported by cpufreq:
|
||
|
|
||
|
SH-3
|
||
|
SH-4
|
||
|
|
||
|
|
||
|
2. "Policy" / "Governor" ?
|
||
|
==========================
|
||
|
|
||
|
Some CPU frequency scaling-capable processor switch between various
|
||
|
frequencies and operating voltages "on the fly" without any kernel or
|
||
|
user involvement. This guarantees very fast switching to a frequency
|
||
|
which is high enough to serve the user's needs, but low enough to save
|
||
|
power.
|
||
|
|
||
|
|
||
|
2.1 Policy
|
||
|
----------
|
||
|
|
||
|
On these systems, all you can do is select the lower and upper
|
||
|
frequency limit as well as whether you want more aggressive
|
||
|
power-saving or more instantly available processing power.
|
||
|
|
||
|
|
||
|
2.2 Governor
|
||
|
------------
|
||
|
|
||
|
On all other cpufreq implementations, these boundaries still need to
|
||
|
be set. Then, a "governor" must be selected. Such a "governor" decides
|
||
|
what speed the processor shall run within the boundaries. One such
|
||
|
"governor" is the "userspace" governor. This one allows the user - or
|
||
|
a yet-to-implement userspace program - to decide what specific speed
|
||
|
the processor shall run at.
|
||
|
|
||
|
|
||
|
3. How to change the CPU cpufreq policy and/or speed
|
||
|
====================================================
|
||
|
|
||
|
3.1 Preferred Interface: sysfs
|
||
|
------------------------------
|
||
|
|
||
|
The preferred interface is located in the sysfs filesystem. If you
|
||
|
mounted it at /sys, the cpufreq interface is located in a subdirectory
|
||
|
"cpufreq" within the cpu-device directory
|
||
|
(e.g. /sys/devices/system/cpu/cpu0/cpufreq/ for the first CPU).
|
||
|
|
||
|
cpuinfo_min_freq : this file shows the minimum operating
|
||
|
frequency the processor can run at(in kHz)
|
||
|
cpuinfo_max_freq : this file shows the maximum operating
|
||
|
frequency the processor can run at(in kHz)
|
||
|
scaling_driver : this file shows what cpufreq driver is
|
||
|
used to set the frequency on this CPU
|
||
|
|
||
|
scaling_available_governors : this file shows the CPUfreq governors
|
||
|
available in this kernel. You can see the
|
||
|
currently activated governor in
|
||
|
|
||
|
scaling_governor, and by "echoing" the name of another
|
||
|
governor you can change it. Please note
|
||
|
that some governors won't load - they only
|
||
|
work on some specific architectures or
|
||
|
processors.
|
||
|
scaling_min_freq and
|
||
|
scaling_max_freq show the current "policy limits" (in
|
||
|
kHz). By echoing new values into these
|
||
|
files, you can change these limits.
|
||
|
|
||
|
|
||
|
If you have selected the "userspace" governor which allows you to
|
||
|
set the CPU operating frequency to a specific value, you can read out
|
||
|
the current frequency in
|
||
|
|
||
|
scaling_setspeed. By "echoing" a new frequency into this
|
||
|
you can change the speed of the CPU,
|
||
|
but only within the limits of
|
||
|
scaling_min_freq and scaling_max_freq.
|
||
|
|
||
|
|
||
|
3.2 Deprecated Interfaces
|
||
|
-------------------------
|
||
|
|
||
|
Depending on your kernel configuration, you might find the following
|
||
|
cpufreq-related files:
|
||
|
/proc/cpufreq
|
||
|
/proc/sys/cpu/*/speed
|
||
|
/proc/sys/cpu/*/speed-min
|
||
|
/proc/sys/cpu/*/speed-max
|
||
|
|
||
|
These are files for deprecated interfaces to cpufreq, which offer far
|
||
|
less functionality. Because of this, these interfaces aren't described
|
||
|
here.
|
||
|
|