You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CFS调度器如何选择下一个待运行的task group/cgroup?

CFS任务组在RB树上的排序规则说明
  • 核心排序逻辑:CFS红黑树的排序key始终是调度实体(sched_entity)自身的vruntime值,无论该调度实体是普通进程还是任务组的组调度实体,同一父层级下的所有调度实体都按照vruntime从小到大的顺序挂载到红黑树上。
  • 组调度的层级执行逻辑:CFS组调度采用分层设计,每个CPU的根CFS运行队列挂载顶层调度实体(可以是普通进程,也可以是组调度实体);每个任务组自身也持有独立的CFS运行队列,用于挂载其下属的子调度实体(子任务组或归属该组的普通进程)。pick_next_task_fair()执行时会从顶层队列开始,每次取出当前队列红黑树最左侧(vruntime最小)的调度实体,如果取出的是组调度实体,则进入该组的内部运行队列,重复取最左实体的逻辑,直到取出普通进程执行为止,和公开资料的描述一致。
  • 常见疑问澄清:
    • 排序不会直接使用任务组内部的min_vruntime作为key:任务组内部的min_vruntime是组内运行队列的基准值,作用是对齐组内所有子调度实体的vruntime基准,避免新加入组的实体vruntime偏差过大,不直接参与父层级红黑树的排序。
    • 排序不会直接使用CPU shares作为key:shares的作用是决定调度实体的CPU时间分配权重,它只会影响vruntime的增长速率:shares越大的调度实体,相同实际运行时间下vruntime增长越慢,间接影响其在红黑树上的位置,最终保证不同调度实体拿到的CPU时间和自身shares占总shares的比例匹配。

内容的提问来源于stack exchange,提问作者Pranav Bhatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:39:02