123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- 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.
- NOTE: when setting a policy you need to
- first set scaling_max_freq, then
- scaling_min_freq.
- 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.
|