Re: [RFC PATCH 0/1] sched/pelt: Change PELT halflife at runtime

From: Qais Yousef
Date: Wed Mar 01 2023 - 12:25:08 EST


On 03/01/23 11:39, Vincent Guittot wrote:
> On Thu, 23 Feb 2023 at 16:37, Qais Yousef <qyousef@xxxxxxxxxxx> wrote:
> >
> > On 02/09/23 17:16, Vincent Guittot wrote:
> >
> > > I don't see how util_est_faster can help this 1ms task here ? It's
> > > most probably never be preempted during this 1ms. For such an Android
> > > Graphics Pipeline short task, hasn't uclamp_min been designed for and
> > > a better solution ?
> >
> > uclamp_min is being used in UI and helping there. But your mileage might vary
> > with adoption still.
> >
> > The major motivation behind this is to help things like gaming as the original
> > thread started. It can help UI and other use cases too. Android framework has
> > a lot of context on the type of workload that can help it make a decision when
> > this helps. And OEMs can have the chance to tune and apply based on the
> > characteristics of their device.
> >
> > > IIUC how util_est_faster works, it removes the waiting time when
> > > sharing cpu time with other tasks. So as long as there is no (runnable
> > > but not running time), the result is the same as current util_est.
> > > util_est_faster makes a difference only when the task alternates
> > > between runnable and running slices.
> > > Have you considered using runnable_avg metrics in the increase of cpu
> > > freq ? This takes into the runnable slice and not only the running
> > > time and increase faster than util_avg when tasks compete for the same
> > > CPU
> >
> > Just to understand why we're heading into this direction now.
> >
> > AFAIU the desired outcome to have faster rampup time (and on HMP faster up
> > migration) which both are tied to utilization signal.
> >
> > Wouldn't make the util response time faster help not just for rampup, but
> > rampdown too?
> >
> > If we improve util response time, couldn't this mean we can remove util_est or
> > am I missing something?
>
> not sure because you still have a ramping step whereas util_est
> directly gives you the final tager

I didn't get you. tager?

>
> >
> > Currently we have util response which is tweaked by util_est and then that is
> > tweaked further by schedutil with that 25% margin when maping util to
> > frequency.
>
> the 25% is not related to the ramping time but to the fact that you
> always need some margin to cover unexpected events and estimation
> error

At the moment we have

util_avg -> util_est -> (util_est_faster) -> util_map_freq -> schedutil filter ==> current frequency selection

I think we have too many transformations before deciding the current
frequencies. Which makes it hard to tweak the system response.

>
> >
> > I think if we can allow improving general util response time by tweaking PELT
> > HALFLIFE we can potentially remove util_est and potentially that magic 25%
> > margin too.
> >
> > Why the approach of further tweaking util_est is better?
>
> note that in this case it doesn't really tweak util_est but Dietmar
> has taken into account runnable_avg to increase the freq in case of
> contention
>
> Also IIUC Dietmar's results, the problem seems more linked to the
> selection of a higher freq than increasing the utilization;
> runnable_avg tests give similar perf results than shorter half life
> and better power consumption.

Does it ramp down faster too?


Thanks

--
Qais Yousef

>
> >
> > Recently phoronix reported that schedutil behavior is suboptimal and I wonder
> > if the response time is contributing to that
> >
> > https://www.phoronix.com/review/schedutil-quirky-2023
> >
> >
> > Cheers
> >
> > --
> > Qais Yousef