[PATCH] sched_ext: Fix stale @cgroup_id in sched_ext_ops kernel-doc
sched_ext_ops 结构体的成员 cgroup_id 已被重命名为 sub_cgroup_id,但 kernel-doc 注释未同步,导致两处文档警告。本 patch 将 @cgroup_id 更新为 @sub_cgroup_id,已被 Tejun Heo 合入 sched_ext/for-7.3。
北京时间全部历史数据
最近同步:2026/08/28 15:52
sched_ext_ops 结构体的成员 cgroup_id 已被重命名为 sub_cgroup_id,但 kernel-doc 注释未同步,导致两处文档警告。本 patch 将 @cgroup_id 更新为 @sub_cgroup_id,已被 Tejun Heo 合入 sched_ext/for-7.3。
本系列为 sched_ext 子调度器中因 CPU 亲和性与 cid 不匹配而搁浅的任务,新增内核侧的带宽受限救援执行机制。调度器在 insert 时标记 SCX_ENQ_RESCUE,内核将任务放入 rescue DSQ 以受限带宽运行,等待过久时升级为不可抢占的 protected execution。当救援队列持续过载时,逐出消耗救援资源最多的子调度器而非归咎于等待者。
sched_ext 内置 idle mask 在 ops.init() 前将所有 online CPU 标记为 idle,但 idle 追踪未启动,导致 busy CPU 被误报为 idle。本系列在调度器启用前开启 idle 追踪并逐 CPU 持 rq lock 刷新状态,同时将 allowed_cpus 自测从竞态的远程 CPU 检查改为稳定的本地不变量验证。v3 将合并静态键并可能扩展不变量检查范围。
sched_ext 的 allowed_cpus 自测在验证远程 CPU 的 idle 状态时存在本质竞态:远程 CPU 可在验证前被 idle re-pick 重新标记为 idle,导致误报。本 patch 将验证改为检查本地 CPU 的 idle 不变量(本地 CPU 不可能在本回调运行期间被 re-pick),并增加引导阶段刷新 idle mask 初始化状态,同时补充了 allowed domain 和 task affinity 的验证。
修复 call_rcu_tasks_generic() 在 IRQ 禁用上下文中与 rq->lock 形成 ABBA 死锁的问题。通过无锁 llist + irq_work 将回调入队延迟到安全上下文执行。RCU maintainer 建议等待上游 call_rcu()/call_srcu() deferral 系列后再提交 v2,并指出 barrier 需排空所有队列及 CPU hotplug 场景需处理。