Rafael J. Wysocki | 0c0b6b7 | 2017-08-21 15:14:56 +0200 | [diff] [blame] | 1 | =========================== |
| 2 | Power Management Strategies |
| 3 | =========================== |
| 4 | |
| 5 | :: |
| 6 | |
| 7 | Copyright (c) 2017 Intel Corp., Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| 8 | |
| 9 | The Linux kernel supports two major high-level power management strategies. |
| 10 | |
| 11 | One of them is based on using global low-power states of the whole system in |
| 12 | which user space code cannot be executed and the overall system activity is |
| 13 | significantly reduced, referred to as :doc:`sleep states <sleep-states>`. The |
| 14 | kernel puts the system into one of these states when requested by user space |
| 15 | and the system stays in it until a special signal is received from one of |
| 16 | designated devices, triggering a transition to the ``working state`` in which |
| 17 | user space code can run. Because sleep states are global and the whole system |
| 18 | is affected by the state changes, this strategy is referred to as the |
| 19 | :doc:`system-wide power management <system-wide>`. |
| 20 | |
| 21 | The other strategy, referred to as the :doc:`working-state power management |
| 22 | <working-state>`, is based on adjusting the power states of individual hardware |
| 23 | components of the system, as needed, in the working state. In consequence, if |
| 24 | this strategy is in use, the working state of the system usually does not |
| 25 | correspond to any particular physical configuration of it, but can be treated as |
| 26 | a metastate covering a range of different power states of the system in which |
| 27 | the individual components of it can be either ``active`` (in use) or |
| 28 | ``inactive`` (idle). If they are active, they have to be in power states |
| 29 | allowing them to process data and to be accessed by software. In turn, if they |
| 30 | are inactive, ideally, they should be in low-power states in which they may not |
| 31 | be accessible. |
| 32 | |
| 33 | If all of the system components are active, the system as a whole is regarded as |
| 34 | "runtime active" and that situation typically corresponds to the maximum power |
| 35 | draw (or maximum energy usage) of it. If all of them are inactive, the system |
| 36 | as a whole is regarded as "runtime idle" which may be very close to a sleep |
| 37 | state from the physical system configuration and power draw perspective, but |
| 38 | then it takes much less time and effort to start executing user space code than |
| 39 | for the same system in a sleep state. However, transitions from sleep states |
| 40 | back to the working state can only be started by a limited set of devices, so |
| 41 | typically the system can spend much more time in a sleep state than it can be |
| 42 | runtime idle in one go. For this reason, systems usually use less energy in |
| 43 | sleep states than when they are runtime idle most of the time. |
| 44 | |
| 45 | Moreover, the two power management strategies address different usage scenarios. |
| 46 | Namely, if the user indicates that the system will not be in use going forward, |
| 47 | for example by closing its lid (if the system is a laptop), it probably should |
| 48 | go into a sleep state at that point. On the other hand, if the user simply goes |
| 49 | away from the laptop keyboard, it probably should stay in the working state and |
| 50 | use the working-state power management in case it becomes idle, because the user |
| 51 | may come back to it at any time and then may want the system to be immediately |
| 52 | accessible. |