0001 .. SPDX-License-Identifier: GPL-2.0
0002 .. include:: <isonum.txt>
0003
0004 ===========================
0005 Power Management Strategies
0006 ===========================
0007
0008 :Copyright: |copy| 2017 Intel Corporation
0009
0010 :Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
0011
0012
0013 The Linux kernel supports two major high-level power management strategies.
0014
0015 One of them is based on using global low-power states of the whole system in
0016 which user space code cannot be executed and the overall system activity is
0017 significantly reduced, referred to as :doc:`sleep states <sleep-states>`. The
0018 kernel puts the system into one of these states when requested by user space
0019 and the system stays in it until a special signal is received from one of
0020 designated devices, triggering a transition to the ``working state`` in which
0021 user space code can run. Because sleep states are global and the whole system
0022 is affected by the state changes, this strategy is referred to as the
0023 :doc:`system-wide power management <system-wide>`.
0024
0025 The other strategy, referred to as the :doc:`working-state power management
0026 <working-state>`, is based on adjusting the power states of individual hardware
0027 components of the system, as needed, in the working state. In consequence, if
0028 this strategy is in use, the working state of the system usually does not
0029 correspond to any particular physical configuration of it, but can be treated as
0030 a metastate covering a range of different power states of the system in which
0031 the individual components of it can be either ``active`` (in use) or
0032 ``inactive`` (idle). If they are active, they have to be in power states
0033 allowing them to process data and to be accessed by software. In turn, if they
0034 are inactive, ideally, they should be in low-power states in which they may not
0035 be accessible.
0036
0037 If all of the system components are active, the system as a whole is regarded as
0038 "runtime active" and that situation typically corresponds to the maximum power
0039 draw (or maximum energy usage) of it. If all of them are inactive, the system
0040 as a whole is regarded as "runtime idle" which may be very close to a sleep
0041 state from the physical system configuration and power draw perspective, but
0042 then it takes much less time and effort to start executing user space code than
0043 for the same system in a sleep state. However, transitions from sleep states
0044 back to the working state can only be started by a limited set of devices, so
0045 typically the system can spend much more time in a sleep state than it can be
0046 runtime idle in one go. For this reason, systems usually use less energy in
0047 sleep states than when they are runtime idle most of the time.
0048
0049 Moreover, the two power management strategies address different usage scenarios.
0050 Namely, if the user indicates that the system will not be in use going forward,
0051 for example by closing its lid (if the system is a laptop), it probably should
0052 go into a sleep state at that point. On the other hand, if the user simply goes
0053 away from the laptop keyboard, it probably should stay in the working state and
0054 use the working-state power management in case it becomes idle, because the user
0055 may come back to it at any time and then may want the system to be immediately
0056 accessible.