Skip to content

sched: 审计 runtime deadline 武装点并移除重复 arm #2545

Open

Description

@sparkzky

背景

CpuRunQueue::pick_next_task() 在调用 set_next_task() 之后已经无条件执行:

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 采样)单独实现;观察点必须无锁、低开销、有界,且只在安全上下文输出。

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions