diff options
| author | Tejun Heo <tj@kernel.org> | 2026-07-15 13:37:59 -1000 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-07-15 13:37:59 -1000 |
| commit | 34e0fbfe6737f461d1ee0e52ac1179221b95272f (patch) | |
| tree | 2c945b5b026229852f9a82e8d5ab41862e8702fd /tools/perf/scripts/python/bin | |
| parent | 35f9cbbacb671e587c84e992e7b0098c39e895a4 (diff) | |
sched_ext: Remove queued ecaps syncs directly on sched teardown
scx_discard_ecaps_to_sync() waited for balance_one() to consume a dying
sched's queued ecaps sync, polling with resched_cpu() + msleep(). The wait
is unbounded - the ext dl_server forces picks through sustained fair or RT
load only while ext tasks are queued, so an ext-idle cpu monopolized by a
higher class can stall the teardown indefinitely.
Remove the node directly instead: take all queued nodes, drop the dying
sched's and resplice the rest. Consumption runs under the rq lock and batch
nodes read as on-list throughout, so the producer-side dedup stays correct.
A node that an in-flight scx_process_sync_ecaps() batch holds across a
dispatch-induced rq unlock still needs a wait, but one bounded by that batch
completing rather than by a future balance.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions
