Re: [PATCH] sched_ext: Delete sub-scheduler kobjects before releasing scx_enable_mutex
Qiurong Fang 就 sched_ext 子调度器 kobject 释放顺序的 PATCH 回复 maintainer Tejun,确认这是预期行为,并正式撤回该 PATCH。整条线索仅一封回复邮件,不携带任何代码改动。邮件仅体现讨论闭环,未在代码层面引入新的行为或修复。
北京时间 2026-09-01 至 2026-09-07
最近同步:2026/09/07 18:31
Qiurong Fang 就 sched_ext 子调度器 kobject 释放顺序的 PATCH 回复 maintainer Tejun,确认这是预期行为,并正式撤回该 PATCH。整条线索仅一封回复邮件,不携带任何代码改动。邮件仅体现讨论闭环,未在代码层面引入新的行为或修复。
sched_ext sub-scheduler 在 disable 时先释放 scx_enable_mutex 再删 sysfs kobject,导致并发 enable 在同一 cgroup 上 kobject_add 撞 -EEXIST,把一个健康的调度器误杀。补丁把 kobject_del 移到 mutex_unlock 之前,与 root 路径对齐。
本系列把 sched_ext 中 dsq_vtime 排序所依赖的 u64 half-range 约束显式写进 scx_bpf_dsq_insert_vtime() 的文档,并把示例调度器 scx_flatcg 的 rbtree 比较器 cgv_node_less() 从裸 u64 '<' 改成 (s64)(a-b)<0 的循环比较,避免 cvtime 绕回时破坏严格弱序。Tejun 复审指出文档措辞应为 'less than 2^63 apart',wrap 实际比 commit 描述发生得更早(每 CPU slice charge 累加),lag 与 lead 都需受限,Fixes 标签应...
Tao Cui 发现 scx_group_set_idle() 不论 cpu.idle 是否真发生变化都向 BPF 调度器派发 cgroup_set_idle 回调,会让基于切换或累计计数的 BPF 调度器误把重复写入算成多次跃迁。补丁在派发条件中追加 tg->scx.sched_idle != idle 的守卫,对齐 scx_group_set_weight() 的现有跳过等值写入的做法。Sashiko AI 提示 sched_idle 字段可能不存在;Andrea Righi 确认其余内容 OK 并给出 Reviewed-by,同时指出 Link: 标签为空。
Tao Cui 提交 2 个补丁分别修复 sched_ext 内核 DSQ 优先队列的 spread 大时反转问题,以及 scx_flatcg cgroup 树在 cvtime 环绕瞬间的错位问题。两处采用相反修复,判定依据是 spread 不变量是否被维护。Tejun Heo 明确 dsq_vtime 按 BPF kfunc 文档是循环 cursor,作者本人随后在第 9 封反对自己的 Patch 1 方向,预计 v2 会撤回 Patch 1 并修正 Patch 2 的 Fixes tag。