Re: [RFC PATCH v4 08/12] sched: Add over-utilization/tipping point indicator

From: Peter Zijlstra
Date: Fri Jul 06 2018 - 09:25:03 EST


On Fri, Jul 06, 2018 at 02:20:57PM +0100, Quentin Perret wrote:
> On Friday 06 Jul 2018 at 13:32:08 (+0200), Peter Zijlstra wrote:
> > On Thu, Jun 28, 2018 at 12:40:39PM +0100, Quentin Perret wrote:
> > > @@ -5384,6 +5402,7 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
> > > {
> > > struct cfs_rq *cfs_rq;
> > > struct sched_entity *se = &p->se;
> > > + int task_new = !(flags & ENQUEUE_WAKEUP);
> > >
> > > /*
> > > * The code below (indirectly) updates schedutil which looks at
> > > @@ -5431,8 +5450,12 @@ enqueue_task_fair(struct rq *rq, struct task_struct *p, int flags)
> > > update_cfs_group(se);
> > > }
> > >
> > > - if (!se)
> > > + if (!se) {
> > > add_nr_running(rq, 1);
> > > + if (!task_new)
> > > + update_overutilized_status(rq);
> >
> > I'm confused... why only for !ENQUEUE_WAKEUP
>
> So, what we try to do here is to _not_ set the overutilized flag based
> on the utilization of a new task, because its utilization is 'wrong'.
> That should help avoiding spurious transitions above the overutilized
> threshold.

That most certainly deserves a comment, also didn't util_est fix some of
that wrong-ness?