mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-22 16:06:04 -05:00
docs: thermal: convert cpu-idle-cooling.rst to ReST
Despite being named with .rst extension, this file doesn't match the ReST standard. It actually causes a crash at Sphinx: Sphinx parallel build error: docutils.utils.SystemMessage: /devel/v4l/docs/Documentation/driver-api/thermal/cpu-idle-cooling.rst:69: (SEVERE/4) Unexpected section title. Add needed markups for it to be properly parsed. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/7640755514809a7b5fe2756f3702613865877dcb.1592203650.git.mchehab+huawei@kernel.org Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
d5ddc6d98d
commit
0c12018e01
1 changed files with 8 additions and 6 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
================
|
================
|
||||||
CPU Idle Cooling
|
CPU Idle Cooling
|
||||||
================
|
================
|
||||||
|
@ -48,7 +50,7 @@ idle state target residency, we lead to dropping the static and the
|
||||||
dynamic leakage for this period (modulo the energy needed to enter
|
dynamic leakage for this period (modulo the energy needed to enter
|
||||||
this state). So the sustainable power with idle cycles has a linear
|
this state). So the sustainable power with idle cycles has a linear
|
||||||
relation with the OPP’s sustainable power and can be computed with a
|
relation with the OPP’s sustainable power and can be computed with a
|
||||||
coefficient similar to:
|
coefficient similar to::
|
||||||
|
|
||||||
Power(IdleCycle) = Coef x Power(OPP)
|
Power(IdleCycle) = Coef x Power(OPP)
|
||||||
|
|
||||||
|
@ -139,7 +141,7 @@ Power considerations
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
When we reach the thermal trip point, we have to sustain a specified
|
When we reach the thermal trip point, we have to sustain a specified
|
||||||
power for a specific temperature but at this time we consume:
|
power for a specific temperature but at this time we consume::
|
||||||
|
|
||||||
Power = Capacitance x Voltage^2 x Frequency x Utilisation
|
Power = Capacitance x Voltage^2 x Frequency x Utilisation
|
||||||
|
|
||||||
|
@ -148,7 +150,7 @@ wrong in the system setup). The ‘Capacitance’ and ‘Utilisation’ are a
|
||||||
fixed value, ‘Voltage’ and the ‘Frequency’ are fixed artificially
|
fixed value, ‘Voltage’ and the ‘Frequency’ are fixed artificially
|
||||||
because we don’t want to change the OPP. We can group the
|
because we don’t want to change the OPP. We can group the
|
||||||
‘Capacitance’ and the ‘Utilisation’ into a single term which is the
|
‘Capacitance’ and the ‘Utilisation’ into a single term which is the
|
||||||
‘Dynamic Power Coefficient (Cdyn)’ Simplifying the above, we have:
|
‘Dynamic Power Coefficient (Cdyn)’ Simplifying the above, we have::
|
||||||
|
|
||||||
Pdyn = Cdyn x Voltage^2 x Frequency
|
Pdyn = Cdyn x Voltage^2 x Frequency
|
||||||
|
|
||||||
|
@ -157,7 +159,7 @@ in order to target the sustainable power defined in the device
|
||||||
tree. So with the idle injection mechanism, we want an average power
|
tree. So with the idle injection mechanism, we want an average power
|
||||||
(Ptarget) resulting in an amount of time running at full power on a
|
(Ptarget) resulting in an amount of time running at full power on a
|
||||||
specific OPP and idle another amount of time. That could be put in a
|
specific OPP and idle another amount of time. That could be put in a
|
||||||
equation:
|
equation::
|
||||||
|
|
||||||
P(opp)target = ((Trunning x (P(opp)running) + (Tidle x P(opp)idle)) /
|
P(opp)target = ((Trunning x (P(opp)running) + (Tidle x P(opp)idle)) /
|
||||||
(Trunning + Tidle)
|
(Trunning + Tidle)
|
||||||
|
@ -168,7 +170,7 @@ equation:
|
||||||
|
|
||||||
At this point if we know the running period for the CPU, that gives us
|
At this point if we know the running period for the CPU, that gives us
|
||||||
the idle injection we need. Alternatively if we have the idle
|
the idle injection we need. Alternatively if we have the idle
|
||||||
injection duration, we can compute the running duration with:
|
injection duration, we can compute the running duration with::
|
||||||
|
|
||||||
Trunning = Tidle / ((P(opp)running / P(opp)target) - 1)
|
Trunning = Tidle / ((P(opp)running / P(opp)target) - 1)
|
||||||
|
|
||||||
|
@ -191,7 +193,7 @@ However, in this demonstration we ignore three aspects:
|
||||||
target residency, otherwise we end up consuming more energy and
|
target residency, otherwise we end up consuming more energy and
|
||||||
potentially invert the mitigation effect
|
potentially invert the mitigation effect
|
||||||
|
|
||||||
So the final equation is:
|
So the final equation is::
|
||||||
|
|
||||||
Trunning = (Tidle - Twakeup ) x
|
Trunning = (Tidle - Twakeup ) x
|
||||||
(((P(opp)dyn + P(opp)static ) - P(opp)target) / P(opp)target )
|
(((P(opp)dyn + P(opp)static ) - P(opp)target) / P(opp)target )
|
||||||
|
|
Loading…
Reference in a new issue