Message ID | 1576123908-12105-6-git-send-email-thara.gopinath@linaro.org |
---|---|
State | New |
Headers | show |
Series | Introduce Thermal Pressure | expand |
On 12/12/2019 05:11, Thara Gopinath wrote: > cpu_capacity relflects the maximum available capacity of a cpu. Thermal s/relflects/reflects [...] > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index e12a375..4840655 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -7725,8 +7725,15 @@ static unsigned long scale_rt_capacity(struct sched_domain *sd, int cpu) > if (unlikely(irq >= max)) > return 1; > > + /* > + * avg_rt.util avg and avg_dl.util track binary signals > + * (running and not running) with weights 0 and 1024 respectively. What exactly is this weight here? I assume the 'unsigned long load' parameter of ___update_load_avg(). At least this would match its use in __update_load_avg_se(). [...]
On Wednesday 11 Dec 2019 at 23:11:46 (-0500), 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 Maybe we can introduce two terms here: maximum possible capacity and maximum currently available capacity. I think using these two terms the message can become more clear: cpu_capacity initially reflects the maximum possible capacity of a cpu (capacity orig). Thermal pressure on a cpu means this maximum possible capacity of a cpu is not available due to thermal events. This patch subtracts the average thermal pressure for a cpu from the cpu's maximum possible capacity so that cpu_capacity reflects the actual maximum currently available capacity. Kind regards, Ionela. > available capacity so that cpu_capacity reflects the actual > available capacity. > > Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org> > --- > kernel/sched/fair.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index e12a375..4840655 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -7725,8 +7725,15 @@ static unsigned long scale_rt_capacity(struct sched_domain *sd, int cpu) > if (unlikely(irq >= max)) > return 1; > > + /* > + * avg_rt.util avg and avg_dl.util track binary signals > + * (running and not running) with weights 0 and 1024 respectively. > + * avg_thermal.load_avg tracks thermal pressure and the weighted > + * average uses the actual delta max capacity. > + */ > 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; > -- > 2.1.4 >
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index e12a375..4840655 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -7725,8 +7725,15 @@ static unsigned long scale_rt_capacity(struct sched_domain *sd, int cpu) if (unlikely(irq >= max)) return 1; + /* + * avg_rt.util avg and avg_dl.util track binary signals + * (running and not running) with weights 0 and 1024 respectively. + * avg_thermal.load_avg tracks thermal pressure and the weighted + * average uses the actual delta max capacity. + */ 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;
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 | 7 +++++++ 1 file changed, 7 insertions(+) -- 2.1.4