Lines Matching +full:sustainable +full:- +full:power
1 .. SPDX-License-Identifier: GPL-2.0
22 Documentation/admin-guide/pm/cpufreq.rst if you have not done that yet.]
24 For the processors supported by ``intel_pstate``, the P-state concept is broader
27 information about that). For this reason, the representation of P-states used
32 ``intel_pstate`` maps its internal representation of P-states to frequencies too
38 Since the hardware P-state selection interface used by ``intel_pstate`` is
43 time the corresponding CPU is taken offline and need to be re-initialized when
47 only way to pass early-configuration-time parameters to it is via the kernel
66 -----------
69 hardware-managed P-states (HWP) support. If it works in this mode, the
74 provides its own scaling algorithms for P-state selection. Those algorithms
77 ``sysfs``). [Note that different P-state selection algorithms may be chosen for
83 For example, the ``powersave`` P-state selection algorithm provided by
87 There are two P-state selection algorithms provided by ``intel_pstate`` in the
89 depends on whether or not the hardware-managed P-states (HWP) feature has been
92 Which of the P-state selection algorithms is used by default depends on the
106 select P-states by itself, but still it can give hints to the processor's
107 internal P-state selection logic. What those hints are depends on which P-state
111 Even though the P-state selection is carried out by the processor automatically,
113 in this mode. However, they are not used for running a P-state selection
121 Energy-Performance Preference (EPP) knob (if supported) or its
122 Energy-Performance Bias (EPB) knob (otherwise), which means that the processor's
123 internal P-state selection logic is expected to focus entirely on performance.
130 Also, in this configuration the range of P-states available to the processor's
131 internal P-state selection logic is always restricted to the upper boundary
132 (that is, the maximum P-state that the driver is allowed to use).
138 Energy-Performance Preference (EPP) knob (if supported) or its
139 Energy-Performance Bias (EPB) knob (otherwise) to whatever value it was
142 internal P-state selection logic to be less performance-focused.
156 CPU scheduler in order to run a P-state selection algorithm, either
165 Without HWP, this P-state selection algorithm is always the same regardless of
168 It selects the maximum P-state it is allowed to use, subject to limits set via
172 This is the default P-state selection algorithm if the
179 Without HWP, this P-state selection algorithm is similar to the algorithm
182 registers of the CPU. It generally selects P-states proportional to the
188 is not touched if the new P-state turns out to be the same as the current
191 This is the default P-state selection algorithm if the
196 ------------
199 hardware-managed P-states (HWP) support. It is always used if the
212 hardware in order to change the P-state of a CPU (in particular, the
217 in ``sysfs`` (and the P-state selection algorithms described above are not
222 the so-called "turbo" frequency ranges). In other words, in the passive mode
223 the entire range of available P-states is exposed by ``intel_pstate`` to the
232 Turbo P-states Support
235 In the majority of cases, the entire range of P-states available to
236 ``intel_pstate`` can be divided into two sub-ranges that correspond to
240 The P-states above the turbo threshold are referred to as "turbo P-states" and
241 the whole sub-range of P-states they belong to is referred to as the "turbo
243 multicore processor to opportunistically increase the P-state of one or more
244 cores if there is enough power to do that and if that is not going to cause the
247 Specifically, if software sets the P-state of a CPU core within the turbo range
249 performance scaling control for that core and put it into turbo P-states of its
252 processors will never use any P-states above the last one set by software for
254 processor generations will take it as a license to use any P-states from the
256 processors setting any P-state from the turbo range will enable the processor
257 to put the given core into all turbo P-states up to and including the maximum
260 One important property of turbo P-states is that they are not sustainable. More
262 those states indefinitely, because the power distribution within the processor
264 be exceeded if a turbo P-state was used for too long.
266 In turn, the P-states below the turbo threshold generally are sustainable. In
268 it to a lower one unless in a thermal stress or a power limit violation
269 situation (a higher P-state may still be used if it is set for another CPU in
272 Some processors allow multiple cores to be in turbo P-states at the same time,
273 but the maximum P-state that can be set for them generally depends on the number
274 of cores running concurrently. The maximum turbo P-state that can be set for 3
275 cores at the same time usually is lower than the analogous maximum P-state for
276 2 cores, which in turn usually is lower than the maximum turbo P-state that can
277 be set for 1 core. The one-core maximum turbo P-state is thus the maximum
280 The maximum supported turbo P-state, the turbo threshold (the maximum supported
281 non-turbo P-state) and the minimum supported P-state are specific to the
282 processor model and can be determined by reading the processor's model-specific
284 (Thermal Design Power) feature and, when that feature is enabled, the turbo
289 the entire range of available P-states, including the whole turbo range, to the
291 generally causes turbo P-states to be set more often when ``intel_pstate`` is
292 used relative to ACPI-based CPU performance scaling (see `below <acpi-cpufreq_>`_
298 work as expected in all cases (that is, if set to disable turbo P-states, it
308 * The minimum supported P-state.
310 * The maximum supported `non-turbo P-state <turbo_>`_.
312 * Whether or not turbo P-states are supported at all.
314 * The maximum supported `one-core turbo P-state <turbo_>`_ (if turbo P-states
318 of P-states into frequencies and the other way around.
322 itself (using model-specific registers), there are cases in which hardware
336 -----------------
346 Maximum P-state the driver is allowed to set in percent of the
348 P-state <turbo_>`_).
355 Minimum P-state the driver is allowed to set in percent of the
357 P-state <turbo_>`_).
364 Number of P-states supported by the processor (between 0 and 255
365 inclusive) including both turbo and non-turbo P-states (see
366 `Turbo P-states Support`_).
374 This attribute is read-only.
378 range of supported P-states, in percent.
383 This attribute is read-only.
388 If set (equal to 1), the driver is not allowed to set any turbo P-states
389 (see `Turbo P-states Support`_). If unset (equal to 0, which is the
390 default), turbo P-states can be set by the driver.
397 but it affects the maximum possible value of per-policy P-state limits
403 the processor. If set (equal to 1), it causes the minimum P-state limit
408 This setting has no effect on logical CPUs whose minimum P-state limit
409 is directly set to the highest non-turbo P-state or above it.
432 that string - or to be unregistered in the "off" case. [Actually,
436 as well as the per-policy ones) are then reset to their default
441 Lake or Coffee Lake desktop CPU model. By default, energy-efficiency
443 Enabling energy-efficiency optimizations may limit maximum operating
447 attribute to "1" enables the energy-efficiency optimizations and setting
451 -----------------------------------
454 Documentation/admin-guide/pm/cpufreq.rst is special with ``intel_pstate``
459 ``scaling_cur_freq`` attributes are produced by applying a processor-specific
460 multiplier to the internal P-state representation used by ``intel_pstate``.
462 attributes are capped by the frequency corresponding to the maximum P-state that
466 not allowed to use turbo P-states, so the maximum value of ``scaling_max_freq``
467 and ``scaling_min_freq`` is limited to the maximum non-turbo P-state frequency.
475 and ``scaling_min_freq`` corresponds to the maximum supported turbo P-state,
482 List of P-state selection algorithms provided by ``intel_pstate``.
485 P-state selection algorithm provided by ``intel_pstate`` currently in
489 Frequency of the average P-state of the CPU represented by the given
508 Coordination of P-State Limits
509 ------------------------------
511 ``intel_pstate`` allows P-state limits to be set in two ways: with the help of
521 2. Each individual CPU is affected by its own per-policy limits (that is, it
522 cannot be requested to run faster than its own per-policy maximum and it
523 cannot be requested to run slower than its own per-policy minimum). The
525 P-states, hyper-threading is enabled and on current performance requests
526 from other CPUs. When platform doesn't support per core P-states, the
529 core P-states support, when hyper-threading is enabled, if the sibling CPU
533 3. The global and per-policy limits can be set independently.
537 limits change in order to request its internal P-state selection logic to always
538 set P-states within these limits. Otherwise, the limits are taken into account
540 every time before setting a new P-state for a CPU.
548 ---------------------------
550 If the hardware-managed P-states (HWP) is enabled in the processor, additional
552 processor's internal P-state selection logic by focusing it on performance or on
553 energy-efficiency, or somewhere between the two extremes, are present in every
567 self-explanatory, except that ``default`` represents whatever hint
572 Energy-Performance Preference (EPP) knob (if supported) or its
573 Energy-Performance Bias (EPB) knob. It is also possible to write a positive
577 "/sys/devices/system/cpu/cpu*/power/energy_perf_bias" interface.
580 load-balancing algorithm and if different energy vs performance hints are
585 .. _acpi-cpufreq:
587 ``intel_pstate`` vs ``acpi-cpufreq``
597 ``acpi-cpufreq`` scaling driver. On systems supported by ``intel_pstate``
598 the ``acpi-cpufreq`` driver uses the same hardware CPU performance scaling
599 interface, but the set of P-states it can use is limited by the ``_PSS``
602 On those systems each ``_PSS`` object returns a list of P-states supported by
603 the corresponding CPU which basically is a subset of the P-states range that can
607 than the frequency of the highest non-turbo P-state listed by it, but the
608 corresponding P-state representation (following the hardware specification)
609 returned for it matches the maximum supported turbo P-state (or is the
612 The list of P-states returned by ``_PSS`` is reflected by the table of
613 available frequencies supplied by ``acpi-cpufreq`` to the ``CPUFreq`` core and
617 frequency reported by ``acpi-cpufreq`` is higher by 1 MHz than the frequency
618 of the highest supported non-turbo P-state listed by ``_PSS`` which, of course,
624 (possibly multiplied by a constant), then it will tend to choose P-states below
625 the turbo threshold if ``acpi-cpufreq`` is used as the scaling driver, because
629 benefit from running at turbo frequencies will be given non-turbo P-states
634 turbo threshold. Namely, if that is not coordinated with the lists of P-states
636 a turbo P-state in those lists and there may be a problem with avoiding the
638 P-states overall, ``acpi-cpufreq`` simply avoids using the topmost state listed
639 by ``_PSS``, but that is not sufficient when there are other turbo P-states in
642 Apart from the above, ``acpi-cpufreq`` works like ``intel_pstate`` in the
643 `passive mode <Passive Mode_>`_, except that the number of P-states it can set
650 Several kernel command line options can be used to pass early-configuration-time
668 ``acpi-cpufreq`` even if the latter is preferred on the given system.
671 power capping) that rely on the availability of ACPI P-states
676 ``intel_pstate`` and on platforms where the ``pcc-cpufreq`` scaling
677 driver is used instead of ``acpi-cpufreq``.
680 Do not enable the hardware-managed P-states (HWP) feature even if it is
685 hardware-managed P-states (HWP) feature is supported by the processor.
690 If the preferred power management profile in the FADT (Fixed ACPI
696 Use per-logical-CPU P-State limits (see `Coordination of P-state
704 ------------
716 # echo 1 > events/power/pstate_sample/enable
717 # echo 1 > events/power/cpu_frequency/enable
719 …gnome-terminal--4510 [001] ..s. 1177.680733: pstate_sample: core_busy=107 scaled=94 from=26 to=2…
720 cat-5235 [002] ..s. 1177.681723: cpu_frequency: state=2900000 cpu_id=2
728 ----------
730 The ``ftrace`` interface can be used for low-level diagnostics of
732 P-state is called, the ``ftrace`` filter can be set to
736 # cat available_filter_functions | grep -i pstate
742 # cat trace | head -15
745 # entries-in-buffer/entries-written: 80/80 #P:4
747 # _-----=> irqs-off
748 # / _----=> need-resched
749 # | / _---=> hardirq/softirq
750 # || / _--=> preempt-depth
752 # TASK-PID CPU# |||| TIMESTAMP FUNCTION
754 Xorg-3129 [000] ..s. 2537.644844: intel_pstate_set_pstate <-intel_pstate_timer_func
755 gnome-terminal--4510 [002] ..s. 2537.649844: intel_pstate_set_pstate <-intel_pstate_timer_func
756 gnome-shell-3409 [001] ..s. 2537.650850: intel_pstate_set_pstate <-intel_pstate_timer_func
757 <idle>-0 [000] ..s. 2537.654843: intel_pstate_set_pstate <-intel_pstate_timer_func
763 .. [1] Kristen Accardi, *Balancing Power and Performance in the Linux Kernel*,
766 .. [2] *Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3: System Programming …
767 …com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-system…
769 .. [3] *Advanced Configuration and Power Interface Specification*,