Re: [PATCH v6 06/11] cpufreq/schedutil: use dl utilization tracking

From: Juri Lelli
Date: Fri Jun 08 2018 - 09:36:42 EST


On 08/06/18 14:54, Juri Lelli wrote:
> On 08/06/18 14:48, Vincent Guittot wrote:
> > On 8 June 2018 at 14:39, Juri Lelli <juri.lelli@xxxxxxxxxx> wrote:
> > > Hi Vincent,
> > >
> > > On 08/06/18 14:09, Vincent Guittot wrote:
> > >> Now that we have both the dl class bandwidth requirement and the dl class
> > >> utilization, we can detect when CPU is fully used so we should run at max.
> > >> Otherwise, we keep using the dl bandwidth requirement to define the
> > >> utilization of the CPU
> > >>
> > >> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> > >> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> > >> Signed-off-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
> > >> ---
> > >
> > > [...]
> > >
> > >> @@ -190,20 +192,24 @@ static unsigned long sugov_aggregate_util(struct sugov_cpu *sg_cpu)
> > >> if (rq->rt.rt_nr_running)
> > >> return sg_cpu->max;
> > >>
> > >> - util = sg_cpu->util_dl;
> > >> - util += sg_cpu->util_cfs;
> > >> + util = sg_cpu->util_cfs;
> > >> util += sg_cpu->util_rt;
> > >>
> > >> + if ((util + sg_cpu->util_dl) >= sg_cpu->max)
> > >> + return sg_cpu->max;
> > >> +
> > >
> > > Mmm, won't we run at max (or reach max) with a, say, 100ms/500ms DL task
> > > running alone?
> >
> > not for a 100ms running task. You have to run more than 320ms to reach max value
> >
> > 100ms/500ms will vary between 0 and 907
>
> OK, right, my point I guess is still that such a task will run fine at
> ~250 and it might be save more energy by doing so?

As discussed on IRC, we still endup selecting 1/5 of max freq because
util_dl is below max.

So, turning point is at ~320ms/[something_bigger], which looks a pretty
big runtime, but I'm not sure if having that is OK. Also, it becomes
smaller with CFS/RT background "perturbations". Mmm.

BTW, adding Luca and Claudio. :)