* Peter Zijlstra <pet...@infradead.org> wrote: > On Thu, Nov 16, 2017 at 03:21:52PM +0100, Vincent Guittot wrote: > > Unlike running, the runnable part can't be directly propagated through > > the hierarchy when we migrate a task. The main reason is that runnable > > time can be shared with other sched_entities that stay on the rq and > > this runnable time will also remain on prev cfs_rq and must not be > > removed. > > > > Instead, we can estimate what should be the new runnable of the prev > > cfs_rq and check that this estimation stay in a possible range. The > > prop_runnable_sum is a good estimation when adding runnable_sum but > > fails most often when we remove it. Instead, we could use the formula > > below instead: > > > > gcfs_rq's runnable_sum = gcfs_rq->avg.load_sum / gcfs_rq->load.weight > > > > which assumes that tasks are equally runnable which is not true but > > easy to compute. > > > > Beside these estimates, we have several simple rules that help us to filter > > out wrong ones: > > > > - ge->avg.runnable_sum <= than LOAD_AVG_MAX > > - ge->avg.runnable_sum >= ge->avg.running_sum (ge->avg.util_sum << > > LOAD_AVG_MAX) > > - ge->avg.runnable_sum can't increase when we detach a task > > > > Cc: Yuyang Du <yuyang...@intel.com> > > Cc: Ingo Molnar <mi...@kernel.org> > > Cc: Mike Galbraith <efa...@gmx.de> > > Cc: Chris Mason <c...@fb.com> > > Cc: Linus Torvalds <torva...@linux-foundation.org> > > Cc: Dietmar Eggemann <dietmar.eggem...@arm.com> > > Cc: Josef Bacik <jo...@toxicpanda.com> > > Cc: Ben Segall <bseg...@google.com> > > Cc: Paul Turner <p...@google.com> > > Cc: Tejun Heo <t...@kernel.org> > > Cc: Morten Rasmussen <morten.rasmus...@arm.com> > > Signed-off-by: Vincent Guittot <vincent.guit...@linaro.org> > > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > > Link: http://lkml.kernel.org/r/20171019150442.ga25...@linaro.org > > Acked-by: Peter Zijlstra (Intel) <pet...@infradead.org> > > Ingo, can you stuff this in sched/urgent ?
Yeah, I've queued up in tip:sched/urgent. Thanks, Ingo