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

Vincent Guittot
2019-11-04T17:48:48Z

On Mon, 4 Nov 2019 at 18:42, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote:
>
> On 04/11/2019 18:34, Vincent Guittot wrote:
> > On Mon, 4 Nov 2019 at 18:29, Dietmar Eggemann <dietmar.eggemann@arm.com> 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?

That's the default behavior to keep all pelt function to behave
similarly and keep outside what is not strictly related to pelt so it
will ease any further modification
sched_thermal_decay_coeff is not a pelt parameter but a thermal one
irq_avg is an exception not the default behavior to follow

>
> 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,