On Tue, 10 May, at 07:43:16PM, Peter Zijlstra wrote: > Mike reported that the recent commit 3a47d5124a95 ("sched/fair: Fix > fairness issue on migration") broke interactivity and the signal > starve test. > > The problem is that I assumed ENQUEUE_WAKING was only set when we do a > cross-cpu wakeup (migration), which isn't true. This means we now > destroy the vruntime history of tasks and wakeup-preemption suffers. > > Cure this by making my assumption true, only call > sched_class::task_waking() when we do a cross-cpu wakeup. This avoids > the indirect call in the case we do a local wakeup. > > Cc: Pavan Kondeti <pkond...@codeaurora.org> > Cc: Ben Segall <bseg...@google.com> > Cc: Matt Fleming <m...@codeblueprint.co.uk> > Cc: Morten Rasmussen <morten.rasmus...@arm.com> > Cc: Paul Turner <p...@google.com> > Cc: Thomas Gleixner <t...@linutronix.de> > Cc: byungchul.p...@lge.com > Cc: Andrew Hunter <a...@google.com> > Fixes: 3a47d5124a95 ("sched/fair: Fix fairness issue on migration") > Reported-by: Mike Galbraith <mgalbra...@suse.de> > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > --- > kernel/sched/core.c | 29 +++++++++++++++++++++-------- > kernel/sched/fair.c | 41 ++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 61 insertions(+), 9 deletions(-) This patch appears to cause a regression for hackbench -pipe of between ~8% and ~10% with groups >= NR_CPU.
I haven't probed much yet, but it looks like the vruntime of tasks has gone nuts.