Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sched_ext: Always call put_prev_task() with scx enabled
With the consolidation of put_prev_task/set_next_task(), we are now skipping the sched_ext ops.stopping/running() transitions when the previous and next tasks are the same, see commit 436f3ee ("sched: Combine the last put_prev_task() and the first set_next_task()"). While this optimization makes sense in general, it can negatively impact performance in some user-space schedulers, that expect to handle such transitions when tasks exhaust their timeslice (see SCX_OPS_ENQ_LAST). For example, scx_rustland suffers a significant performance regression (e.g., gaming benchmarks drop from ~60fps to ~10fps). To fix this, ensure that put_prev_task()/set_next_task() are never skipped when the scx scheduling class is enabled, allowing the scx class to handle such transitions. This change restores the previous behavior, fixing the performance regression in scx_rustland. Link: sched-ext/scx#788 Fixes: 7c65ae8 ("sched_ext: Don't call put_prev_task_scx() before picking the next task") Signed-off-by: Andrea Righi <[email protected]>
- Loading branch information