Re: [PATCH v2] sched/fair: update scale invariance of PELT

From: Peter Zijlstra
Date: Tue Apr 11 2017 - 05:12:34 EST


On Tue, Apr 11, 2017 at 09:52:21AM +0200, Vincent Guittot wrote:

> > > + } else if (!weight) {
> > > + if (sa->util_sum < (LOAD_AVG_MAX * 1000)) {
> >
> > But here I'm completely lost. WTF just happened ;-)
> >
> > Firstly, I think we want a comment on why we care about the !weight
> > case. Why isn't !running sufficient?
>
> We track the time when the task is "really" idle but not the time that
> the task spent to wait for running on the CPU. Running is used to
> detect when the task is really running and how much idle time has been
> lost while weight is used to detect when the task is back to sleep
> state and when we have account the lost idle time.

Huh? You're redefining what 'idle' means wrt. util_sum.

util used to consider anything !running as idle. So this is the main
trickery? I feel that deserves a comment of exceptional clarity.