• Tejun Heo's avatar
    sched_ext: Unify regular and core-sched pick task paths · 753e2836
    Tejun Heo authored
    Because the BPF scheduler's dispatch path is invoked from balance(),
    sched_ext needs to invoke balance_one() on all sibling rq's before picking
    the next task for core-sched.
    
    Before the recent pick_next_task() updates, sched_ext couldn't share pick
    task between regular and core-sched paths because pick_next_task() depended
    on put_prev_task() being called on the current task. Tasks currently running
    on sibling rq's can't be put when one rq is trying to pick the next task, so
    pick_task_scx() had to have a separate mechanism to pick between a sibling
    rq's current task and the first task in its local DSQ.
    
    However, with the preceding updates, pick_next_task_scx() no longer depends
    on the current task being put and can compare the current task and the next
    in line statelessly, and the pick task logic should be shareable between
    regular and core-sched paths.
    
    Unify regular and core-sched pick task paths:
    
    - There's no reason to distinguish local and sibling picks anymore. @local
      is removed from balance_one().
    
    - pick_next_task_scx() is turned into pick_task_scx() by dropping the
      put_prev_set_next_task() call.
    
    - The old pick_task_scx() is dropped.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    753e2836
ext.c 182 KB