[RFC,6/7] sched/fair: update cpu_capcity to reflect thermal pressure

Message ID 1539102302-9057-7-git-send-email-thara.gopinath@linaro.org
State Superseded
Headers show
Series
  • [RFC,1/7] sched/pelt.c: Add option to make load and util calculations frequency invariant
Related show

Commit Message

Thara Gopinath Oct. 9, 2018, 4:25 p.m.
cpu_capacity relflects the maximum available capacity of a cpu. Thermal
pressure on a cpu means this maximum available capacity is reduced. This
patch reduces the average thermal pressure for a cpu from its maximum
available capacity so that cpu_capacity reflects the actual
available capacity.

Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>

---
 kernel/sched/fair.c | 1 +
 1 file changed, 1 insertion(+)

-- 
2.1.4

Comments

Thara Gopinath Oct. 10, 2018, 2:22 p.m. | #1
On 10/10/2018 01:57 AM, Javi Merino wrote:
> On Tue, Oct 09, 2018 at 12:25:01PM -0400, Thara Gopinath wrote:

>> cpu_capacity relflects the maximum available capacity of a cpu. Thermal

>> pressure on a cpu means this maximum available capacity is reduced. This

>> patch reduces the average thermal pressure for a cpu from its maximum

>> available capacity so that cpu_capacity reflects the actual

>> available capacity.

>>

>> Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>

>> ---

>>  kernel/sched/fair.c | 1 +

>>  1 file changed, 1 insertion(+)

>>

>> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c

>> index 7deb1d0..8651e55 100644

>> --- a/kernel/sched/fair.c

>> +++ b/kernel/sched/fair.c

>> @@ -7497,6 +7497,7 @@ static unsigned long scale_rt_capacity(int cpu)

>>  

>>  	used = READ_ONCE(rq->avg_rt.util_avg);

>>  	used += READ_ONCE(rq->avg_dl.util_avg);

>> +	used += READ_ONCE(rq->avg_thermal.load_avg);

> 

> IIUIC, you are treating thermal pressure as an artificial load on the

> cpu.  If so, this sounds like a hard to maintain hack.  Thermal

> pressure have different characteristics to utilization.  What happens

> if thermal sets the cpu cooling state back to 0 because there is

> thermal headroom again?  Do we keep adding this artificial load to the

> cpu just because there was thermal pressure in the past and let it

> decay as if it was cpu load?


Setting cpu cooling state back to 0 will decay the thermal pressure back
to 0 ? Yes, cpu will not register an instantaneous drop in the cap, it
will be decayed down following the PELT signals.

> 

> Cheers,

> Javi

> 



-- 
Regards
Thara

Patch

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 7deb1d0..8651e55 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7497,6 +7497,7 @@  static unsigned long scale_rt_capacity(int cpu)
 
 	used = READ_ONCE(rq->avg_rt.util_avg);
 	used += READ_ONCE(rq->avg_dl.util_avg);
+	used += READ_ONCE(rq->avg_thermal.load_avg);
 
 	if (unlikely(used >= max))
 		return 1;