Linux/ACPI
Valid XHTML 1.0!
Valid CSS!
SourceForge.net Logo

Last update: 2006-01-07

Documentation: The /proc/acpi/processor Subdirectory

Warning: /proc/acpi is being replaced by interfaces in /sys and new software should not look in /proc.

Please note that these informations are written for the release "acpi-20020404" by Intel's ACPI team which got included in kernel 2.5.8-pre3.

/proc/acpi/processor/CPU./

For each CPU known, the ACPI system creates a subdirectory in /proc/acpi/processor/. The name of this directory is the name specified by the OEM / BIOS in the ACPI tables, and has no further effect.

For the following examples, I'll assume the OEM called your CPU "CPU0".

info

Operation Command Sample Output
Read cat info processor id:            0
acpi id:                 0
bus mastering control:   no
power management:        yes
throttling control:      yes
performance management:  no
limit interface:         yes

processor id:
This is the ID the Linux kernel uses to address this CPU.

acpi id:
ACPI might enumberate the CPUs differently - this is the ID the ACPI system uses to identify the CPU.

bus mastering control:
A bus master is a device on your system which can access the memory without having to use the CPU for this. If bus mastering control is available, the ACPI system can tell these devices to stop such activities, which is necessary when it puts the CPU into C3 sleep state (see below).

pwer management:
When power management is available, the ACPI system can put the CPU into a sleep state (C2 or C3, details see below) when the computer is not using 100% of the CPU's capabilities. This saves power, lowers the temperature and thus prolonges the life of your CPU.

throttling control:
Throttling is sort of enforced power management: Even when the system is highly active, the CPU is "put to sleep" for short amounts of time. This is done when the temperature is critically high, or, by request of the user, when the system shall use less power to allow longer system usage when on battery power.

performance management:
Performance management is the name ACPI invented for processor frequency and voltage scaling. This means that your processor can run on (at least) two different frequencies and voltage ranges. Best known is the Intel(C) SpeedStep(TM) Technology, which offers a "Maximum Performance Mode" and a "Battery Mode". When the system is set to the "Battery Mode", the system uses much less power, but there is a slight performance decrease, too, as the CPU frequency is decreased. In most cases this should be of almost no effect in "usability". Note that "performance states" are much more power-efficient than throttling and/or CPU power management.

limit interface:
When throttling control and/or performane management are available, the limit interface is available, too. It is a combined interface for controlling both features. For more information see the "limit" file explained below.

limit

P-States are processor performance states (see file "performance" below), T-States are throttling states (see file "throttling" below). P0:T0 reflects 100% processor performance available, any increase means lower speed and lower power usage.

Operation Command Sample Output
Read cat limit active limit:   P0:T0
platform limit: P0:T0
user limit:     P0:T0
thermal limit:  P0:T0
Write echo -n x:y > limit
with x being replaced by the performance state number and y being replaced by the throttling state number.
Such an user limit causes the system to decrease performance and power usage by setting at least these states. Platform and/or thermal limits might enforce even higher states.

active limit:
This reflects the performance state and throttling state the system is currently in. It is the highest performance state demanded by the other "limits", and the highest throttling state demanded by the other "limits".

platform limit:
Some systems may force the processor to low speed when on battery power, for example. On such systems, this is reflected by "P1:T0" when on battery power, for example. Then ACPI has to lower the system to (at least) processor performance state 1.

user limit:
The user may want to set performance and/or throttling states manually to decrease power usage, e.g. while on battery power, or when the user wants to work silently with no fans being turned on. For information on how to set this "user limit", see the paragraph "Write" for this file.

thermal limit:
When the system gets too hot it might be necessary to enforce a lower CPU speed to avoid overheating which might even cause permanent damage to your system. This is done by a "thermal limit". For example, it might be set to "P0:T1" when the temperature reaches 80C. For details, look at the /proc/acpi/thermal_zone subdirectories.

performance

This file shows information about performance management:
This is the name ACPI invented for processor frequency and voltage scaling. It means that your processor can run on (at least) two different frequencies and voltage ranges. Best known is the Intel(C) SpeedStep(TM) Technology, which offers a "Maximum Performance Mode" and a "Battery Mode". When the system is set to the "Battery Mode", the system uses much less power, but there is a slight performance decrease, too, as the CPU frequency is decreased. In most cases this should be of almost no effect in "usability". Note that "performance states" are much more power-efficient than throttling and/or power management.
A note about kernel 2.6: Frequency scaling via this file is deprecated, see the files in /sys/devices/system/cpu/cpu0/cpufreq/ instead.

Operation Command Sample Output
Read cat performance state count:   2
active state:  P0
states:
  *P0:  600 Mhz, 20000 mW, 300 uS
   P1:  500 Mhz, 10000 mW, 300 uS
Write echo -n x > performance
with x being replaced by the number of the performance state you want the system to change to. Please note that this overrides any "limit" (see above) and write access for this file is mainly allowed for debugging purposes.

state count:
This is the number of performance states your system is capable of.

active state:
The performance state your system is currently in.

states:
*: this is the currently active state
P0: the name of this state
600 Mhz: the CPU clock frequency in this state
20000 mW: the CPU power usage in this state
300 uS: the duration of a transition to this state. During this period of time the system is unresponsive.

A note about Intel(R) SpeedStep(TM)

When this file shows "<not available>" this does not mean that you do not own a Intel(R) SpeedStep (TM) capable processor, or similar technologies from other CPU vendors. It only means that it cannot be controlled using ACPI. For Intel(R) SpeedStep(TM), Intel(R) continues to withhold information about how to set these processor performance states when no ACPI interface is possible. So no driver for Linux is available yet, even though some preliminary reverse-engineering efforts have begun.

power

CPU power management allows the ACPI system to put the CPU into a sleep state when the computer is not using 100% of the CPU's capabilities. This saves power, lowers the temperature and so prolonges the life of your CPU.

Operation Command Sample Output
Read cat power active state:        C2
default state:       C1
bus master activity: 00000000
states:
   C1:  promotion[C2] demotion[--] latency[000] usage[00000450]
  *C2:  promotion[--] demotion[C1] latency[020] usage[00039420]
   C3:  <not supported>

active state:
This is the sleep state currently used when the system is idle.

default state:
During high system loads and during booting this sleep state is used when the system is temporarily idle.

bus mastering activity:
When bus mastering control is available (see "info" above), this shows the bus mastering activity during the last 32 calls of the idling routine. (A bus master is a device on your system which can access the memory without having to use the CPU for this.) When the system is quite idle, the ACPI system may want to put the CPU in the C3 sleep state. In this state the CPU cannot detect if a bus master changes anything or reads from the system memory. In the case when the CPU holds copies of this memory in its "write-back cache" or even in its "inbound" cache, the bus master might read wrong values. This leads to data corruption, and probably to an instable system, if not a "crash".

states:
*: this is the currently active idling state. This does not mean the system is currently idle. It only reflects which processor sleep state is called when the system becomes idle.
C1: the name of this state. (Note: C0 is not mentioned, it is the CPU "working" state)
promotion[C2]: when the system load is very low, the ACPI system might decide to switch to this C-State. Of course, this is not available for the highest supported C-State.
demotion[--]: when the system load is higher, the ACPI system might decide to swithc to this C-State. Of course, this is not available for the lowest C-State
latency[000]: after an Interrupt Request reaches the CPU, it takes this time in microseconds until the Interrupt can be processed.
usage[00000450]: the number of times this sleep state has been called.

In case the usage paramater for C3 never shows a value greater than 0 on your machine, you might have a look into WhyMyC3PowerStateIsNotUsed.

Throttling

Throttling is sort of enforced CPU power management: Even when the system is highly active, the CPU is "put to sleep" for short amounts of time. This is done when the temperature is critically high, or, by request of the user, when the system shall use less power to allow longer system usage when on battery.

Operation Command Sample Output
Read cat throttling state count:  8
active state: T0
states:
  *T0: 00%
   T1: 12%
   T2: 25%
   T3: 37%
   T4: 50%
   T5: 62%
   T6: 75%
   T7: 87%
Write echo -n x > throttling, with x being replaced by the number of the throttling state you want the system to change to. Please note that this overrides any "limit" (see above) and write access for this file is mainly allowed for debugging purposes.

state count:
This is the number of throttling states your system is capable of.

active state:
The throttling state your system is currently in.

states:
*: this is the currently active state
T0: the name of this state
00%: the percentage of CPU performance being lost because of throttling. So 00% means 100% of the CPU performance is available.

Linux is a registered trademark of Linus Torvalds.

© Dominik Brodowski 2002; slightly modified for 2.6 by Sebastian Henschel 2004