Lines Matching +full:wakeup +full:- +full:delay
1 .. SPDX-License-Identifier: GPL-2.0
27 CPU idle time management is an energy-efficiency feature concerned about using
31 ------------
37 software as individual single-core processors. In other words, a CPU is an
46 Second, if the processor is multi-core, each core in it is able to follow at
61 Finally, each core in a multi-core processor may be able to follow more than one
66 multiple individual single-core "processors", referred to as *hardware threads*
67 (or hyper-threads specifically on Intel hardware), that each can follow one
78 ---------
107 next wakeup event, or there are strict latency constraints preventing any of the
112 .. _idle-loop:
127 the platform or the processor architecture and organized in a one-dimensional
134 taken into account by the governor, the *target residency* and the (worst-case)
142 wakeup from that state. Note that in general the exit latency also must cover
143 the time needed to enter the given state in case the wakeup occurs when the
152 and exit it. However, the CPU may be woken up by a non-timer event at any time
162 There are four ``CPUIdle`` governors available, ``menu``, `TEO <teo-gov_>`_,
165 tick can be `stopped by the idle loop <idle-cpus-and-tick_>`_. Available
186 .. _idle-cpus-and-tick:
223 (non-tick) timer due to trigger within the tick range, stopping the tick clearly
225 reprogrammed in that case. Second, if the governor is expecting a non-timer
226 wakeup within the tick range, stopping the tick is not necessary and it may even
228 the target residency within the time until the expected wakeup, so that state is
230 state then, as that would contradict its own expectation of a wakeup in short
231 order. Now, if the wakeup really occurs shortly, stopping the tick would be a
233 which is expensive. On the other hand, if the tick is stopped and the wakeup
236 energy. Hence, if the governor is expecting a wakeup of any kind within the
247 loop altogether. That can be done through the build-time configuration of it
255 generally regarded as more energy-efficient than the systems running kernels in
261 .. _menu-gov:
275 wakeup. It is used to determine the sleep length range, which in turn is needed
319 from the power management quality of service, or `PM QoS <cpu-pm-qos_>`_,
331 if it has not decided to `stop the scheduler tick <idle-cpus-and-tick_>`_. That
340 .. _teo-gov:
347 <menu-gov_>`_: it always tries to find the deepest idle state suitable for the
361 Like in the ``menu`` governor `case <menu-gov_>`_, the first step is to obtain
364 on the time until the next CPU wakeup). That value is then used to preselect an
369 state will "match" the observed (post-wakeup) idle duration if it "matches" the
370 sleep length. They both are subject to decay (after a CPU wakeup) every time
384 "match" the observed (post-wakeup) idle duration if it does not "match" the
385 sleep length. It is subject to decay on every CPU wakeup and it is increased
386 when the idle state corresponding to it "matches" the observed (post-wakeup)
396 duration after CPU wakeup). If the ``misses`` one is greater, the governor
400 [If there is a wakeup latency constraint coming from the `PM QoS framework
401 <cpu-pm-qos_>`_ which is hit before reaching the deepest idle state with the
416 it has not decided to `stop the scheduler tick <idle-cpus-and-tick_>`_. That
420 `case <menu-gov_>`_, the sleep length used in the previous computations may not
426 .. _idle-states-representation:
432 supported by the processor have to be represented as a one-dimensional array of
438 of it <idle-loop_>`_, must reflect the properties of the idle state at the
456 because that is the maximum delay between a wakeup signal and the time the CPU
570 asking the hardware to enter an idle state and the subsequent wakeup of the CPU
585 .. _cpu-pm-qos:
592 energy-efficiency features of the kernel to prevent performance from dropping
601 signed 32-bit integer) to it. In turn, the resume latency constraint for a CPU
603 32-bit integer) to the :file:`power/pm_qos_resume_latency_us` file under
666 `disabled for individual CPUs <idle-states-representation_>`_, there are kernel
677 however, so it is rather crude and not very energy-efficient. For this reason,
706 P-states (see |cpufreq|) that require any number of CPUs in a package to be
707 idle, so it very well may hurt single-thread computations performance as well as
708 energy-efficiency. Thus using it for performance reasons may not be a good idea
719 In addition to the architecture-level kernel command line options affecting CPU
725 `Representation of Idle States <idle-states-representation_>`_), causes the