Re: [Patch v4 2/6] sched: Add infrastructure to store and update instantaneous thermal pressure

From: Dietmar Eggemann
Date: Mon Nov 04 2019 - 12:42:08 EST


On 04/11/2019 18:34, Vincent Guittot wrote:
> On Mon, 4 Nov 2019 at 18:29, Dietmar Eggemann <dietmar.eggemann@xxxxxxx> wrote:
>>
>> On 01/11/2019 21:57, Thara Gopinath wrote:
>>> On 11/01/2019 08:17 AM, Dietmar Eggemann wrote:
>>>> On 22.10.19 22:34, Thara Gopinath wrote:

[...]

>>> You still need now.All the update_*_avg apis take now as a parameter.
>>
>> You do need it for the ___update_load_sum() call inside the
>> foo_load_avg() functions. But that doesn't mean you have to pass it into
>> foo_load_avg(). Look at update_irq_load_avg() for example. We don't pass
>> rq->clock as now in there.
>
> update_irq_load_avg is the exception but having now as a parameter is
> the default behavior that update_thermal_load_avg have to follow

Why would this be? Just so the functions have the the same parameters?

In this case you could argue that update_irq_load_avg() has to pass in
rq->clock as now.

>> -int update_thermal_load_avg(u64 now, struct rq *rq, u64 capacity)
>> +extern int sched_thermal_decay_coeff;
>> +
>> +int update_thermal_load_avg(struct rq *rq, u64 capacity)
>> {
>> + u64 now = rq_clock_task(rq) >> sched_thermal_decay_coeff;
>> +
>> if (___update_load_sum(now, &rq->avg_thermal,
>> capacity,
>> capacity,