Skip to content
  • Peter Zijlstra's avatar
    sched/fair: Prepare to fix fairness problems on migration · b5179ac7
    Peter Zijlstra authored
    Mike reported that our recent attempt to fix migration problems:
    
      3a47d512
    
     ("sched/fair: Fix fairness issue on migration")
    
    broke interactivity and the signal starve test. We reverted that
    commit and now let's try it again more carefully, with some other
    underlying problems fixed first.
    
    One 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.
    
    Reported-by: default avatarMike Galbraith <mgalbraith@suse.de>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Hunter <ahh@google.com>
    Cc: Ben Segall <bsegall@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Morten Rasmussen <morten.rasmussen@arm.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Pavan Kondeti <pkondeti@codeaurora.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: byungchul.park@lge.com
    Cc: linux-kernel@vger.kernel.org
    Fixes: 3a47d512
    
     ("sched/fair: Fix fairness issue on migration")
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    b5179ac7