Lines Matching +full:thermal +full:- +full:idle

6   - Arjan van de Ven <arjan@linux.intel.com>
7 - Jacob Pan <jacob.jun.pan@linux.intel.com>
12 - Goals and Objectives
15 - Idle Injection
16 - Calibration
19 - Effectiveness and Limitations
20 - Power vs Performance
21 - Scalability
22 - Calibration
23 - Comparison with Alternative Techniques
26 - Generic Thermal Layer (sysfs)
27 - Kernel APIs (TBD)
35 reduced at runtime, due to power budget, thermal constraint, or noise
40 Currently, P-states, T-states (clock modulation), and CPU offlining
43 On Intel CPUs, C-states provide effective power reduction, but so far
46 idle injection across all online CPU threads was introduced. The goal
47 is to achieve forced and controllable C-state residency.
57 Idle Injection
58 --------------
60 On modern Intel processors (Nehalem or later), package level C-state
70 If the kernel can also inject idle time to the system, then a
71 closed-loop control system can be established that manages package
72 level C-state. The intel_powerclamp driver is conceived as such a
73 control system, where the target set point is a user-selected idle
75 between the actual package level C-state residency ratio and the target idle
82 clamping actions of controlled duty ratio and duration. Each per-CPU
83 thread synchronizes its idle time and duration, based on the rounding
90 scheme to work for both preemptible and non-preemptible kernels.
91 Alignment of idle time around jiffies ensures scalability for HZ
94 kidle_inject/cpu. During idle injection, it runs monitor/mwait idle
98 The NOHZ schedule tick is disabled during idle time, but interrupts
123 hot-plug.
125 In terms of dynamics of the idle control system, package level idle
126 time is considered largely as a non-causal system where its behavior
128 intel_powerclamp driver attempts to enforce the desired idle time
129 instantly as given input (target idle ratio). After injection,
130 powerclamp monitors the actual idle for a given time window and adjust
136 PID-based thermal controller can use the powerclamp driver to
143 -----------
146 also true for the ability of a system to enter package level C-states.
152 a) determine the effective range of idle injection ratio
160 enter idle without extra wakeups (such as external interrupts).
164 When an excessive amount of wakeups occurs during idle, an
165 additional idle ratio can be added to quiet interrupts, by
213 To compensate for excessive amounts of wakeup during idle, additional
214 idle time is injected when such a condition is detected. Currently,
218 non-intrusive to the scheduler or the IRQ core code.
222 ------------------
223 Per-CPU kernel threads are started/stopped upon receiving
235 -----------------------------
236 The maximum range that idle injection is allowed is capped at 50
238 forced idle time, excessive interrupts could result in less
239 effectiveness. The extreme case would be doing a ping -f to generated
241 case, little can be done from the idle injection threads. In most
248 with the changes. During this time, idle injection is out of sync,
249 thus not able to enter package C- states at the expected ratio. But
251 ratio is updated much less frequently than the idle injection
255 -----------
257 Ivy Bridge system and the 80P Westmere server under 50% idle ratio.
259 target idle ratio. The compensation also increases as the idle ratio
270 The powerclamp driver is registered to the generic thermal layer as a
271 cooling device. Currently, it’s not bound to any thermal zones::
273 jacob@chromoly:/sys/class/thermal/cooling_device14$ grep . *
278 cur_state allows user to set the desired idle percentage. Writing 0 to
279 cur_state will stop idle injection. Writing a value between 1 and
280 max_state will start the idle injection. Reading cur_state returns the
281 actual and current idle percentage. This may not be the same value
282 set by the user in that current idle percentage depends on workload
283 and includes natural idle. When idle injection is disabled, reading
284 cur_state returns value -1 instead of 0 which is to avoid confusing
289 - To inject 25% idle time::
291 $ sudo sh -c "echo 25 > /sys/class/thermal/cooling_device80/cur_state
293 If the system is not busy and has more than 25% idle time already,
294 then the powerclamp driver will not start idle injection. Using Top
295 will not show idle injection kernel threads.
298 idle time, powerclamp kernel threads will do idle injection. Forced
299 idle time is accounted as normal idle in that common code path is
300 taken as the idle task.
302 In this example, 24.1% idle is shown. This helps the system admin or
313 3341 root -51 0 0 0 0 D 25 0.0 0:01.62 kidle_inject/0
314 3344 root -51 0 0 0 0 D 25 0.0 0:01.60 kidle_inject/3
315 3342 root -51 0 0 0 0 D 25 0.0 0:01.61 kidle_inject/1
316 3343 root -51 0 0 0 0 D 25 0.0 0:01.60 kidle_inject/2
322 device, a PID based userspace thermal controller can manage to
323 control CPU temperature effectively, when no other thermal influence
331 A bit mask of CPUs to inject idle. The format of the bitmask is same as
337 The rightmost mask is for CPU 0-32.
340 Maximum injected idle time to the total CPU time ratio in percent range
342 this parameter allows to add a max idle percent limit. The default is 50,