## 背景 `CpuRunQueue::pick_next_task()` 在调用 `set_next_task()` 之后已经无条件执行: ```rust cfs_bandwidth::refresh_runtime_event(self, &next); ``` `CompletelyFairScheduler::set_next_task()` 里又调用了一次,导致每次任务切换对同一个 runtime deadline 事件重复 `arm(now + remaining)`,把期限向后推,属于真实的重复武装开销。 ## 需要完成 - [ ] 审计所有 `refresh_runtime_event()` 调用点:`pick_next_task()`、`SchedClass::tick`、cgroup bandwidth transfer/transition、policy/nice 变更。 - [ ] 确认删除 `set_next_task()` 内的重复调用后,每个需要重新编程的路径仍会武装事件(特别是 `runtime_remaining` 从 0 恢复、cgroup 迁移、throttle/unthrottle)。 - [ ] 增加可验证的回归覆盖(例如事件到期次数/期限不被推迟)。 - [ ] 诊断探针(rq 临界区计时、TMICT 采样)单独实现;观察点必须无锁、低开销、有界,且只在安全上下文输出。 ## 关联 - PR #2514
Activity
perf(sched): avoid re-arming the runtime deadline in set_next_task
perf(sched): avoid re-arming the runtime deadline in set_next_task