• Tejun Heo's avatar
    sched_ext: Simplify scx_can_stop_tick() invocation in sched_can_stop_tick() · 11cc374f
    Tejun Heo authored
    The way sched_can_stop_tick() used scx_can_stop_tick() was rather confusing
    and the behavior wasn't ideal when SCX is enabled in partial mode. Simplify
    it so that:
    
    - scx_can_stop_tick() can say no if scx_enabled().
    
    - CFS tests rq->cfs.nr_running > 1 instead of rq->nr_running.
    
    This is easier to follow and leads to the correct answer whether SCX is
    disabled, enabled in partial mode or all tasks are switched to SCX.
    
    Peter, note that this is a bit different from your suggestion where
    sched_can_stop_tick() unconditionally returns scx_can_stop_tick() iff
    scx_switched_all(). The problem is that in partial mode, tick can be stopped
    when there is only one SCX task even if the BPF scheduler didn't ask and
    isn't ready for it.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Suggested-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Acked-by: default avatarDavid Vernet <void@manifault.com>
    11cc374f
core.c 269 KB