diff options
| author | Andrea Righi <arighi@nvidia.com> | 2026-09-22 18:51:51 +0200 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-09-28 09:48:04 -1000 |
| commit | 74d9e0401539692198691d799a3b1ef809049528 (patch) | |
| tree | 1bca5384939e15afd43796b2aced427a9bb67640 /tools/perf/scripts/python/stackcollapse.py | |
| parent | 3d6577ea93c9633d95430c82c1cfe189d0f8fd47 (diff) | |
sched_ext: Track proxy execution for NOHZ_FULL
scx_can_stop_tick() currently treats any blocked rq->donor as an active
proxy session. However, rq->donor can temporarily still identify an
outgoing blocked task while the scheduler selects an ordinary execution
context. A dependency update in that window can keep TICK_DEP_BIT_SCHED
set after the context switch.
Track whether proxy resolution actually selected a different execution
context. Keep the tick active while that state is set instead of
deriving it from a potentially stale donor.
When proxy execution ends, clear the state and queue a balance callback
to reevaluate the tick dependency after context_switch() updates
rq->curr. This lets sched_can_stop_tick() observe the complete donor and
execution selection without adding work outside the existing
proxy-execution branch.
Conservatively re-enable the periodic scheduler tick for the duration of
proxy execution. Allowing proxy execution itself to run tickless would
require making the remote NOHZ scheduler tick aware of the split between
rq->curr and rq->donor, which is left as a future improvement.
Perform the tick update from scx_proxy_reenqueue_retry(), which already
runs after proxy resolution, so scheduler core needs no additional hook.
Compile the additional runqueue state and callback out when
CONFIG_NO_HZ_FULL is disabled.
Signed-off-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
