Messages in this thread | | | Date | Tue, 2 May 2017 18:01:54 -0400 | From | Tejun Heo <> | Subject | Re: [PATCH 2/2] sched/fair: Always propagate runnable_load_avg |
| |
Hello,
On Mon, May 01, 2017 at 05:56:13PM +0200, Peter Zijlstra wrote: > On Fri, Apr 28, 2017 at 04:33:47PM -0400, Tejun Heo wrote: > > I'm attaching the debug patch. With your change (avg instead of > > runnable_avg), the following trace shows why it's wrong. > > Ah, OK. So you really want runnable_avg (and I understand why), which is > rather unfortunate, since we have everything on load_avg. > > So for shares, load_avg gives a more stable number. This is important > since tg->load_avg is a global number, so computing it is expensive (and > slow). Therefore more stable numbers are good. > > > The thing with cfs_rq se's load_avg is that, it isn't really used > > anywhere else AFAICS, so overriding it to the cfs_rq's > > runnable_load_avg isn't prettiest but doesn't really change anything. > > You mean, consistently expressing a group's se->load.weight in terms of > runnable_load_avg? See the above.
I think you got this on the other thread but for clarity:
cfs_rq->avg.load_avg is used for share calculation and we want to keep it that way as the calcluation is expensive and rather decoupled across CPUs (the deviation can be quite a bit without the stability). But the group *se*->avg.load_avg is a separate thing which isn't really used anywhere except for as a propagation channel from group cfs_rq to its parent cfs_rq.
Thanks.
-- tejun
| |