多核进程调度器时间轴CFS 完全公平调度 · 教学示意缩比模型

t = 0.000 ms
目标状态 —— 这个子系统存在的唯一理由:每个 CPU 上此刻在执行哪个线程
调度器动作0次 / 秒
其中真正改变「谁在跑」0次 / 秒
占比
开机累计 动作 / 切换0 / 0
速度
场景
CPU 数
加线程
CPU 时间轴 —— 横轴为模拟时间,色块是线程实际占用 CPU 的区间
运行中的线程(颜色按线程区分) 空闲(CPU 空转) 上下文切换 唤醒 阻塞 跨核迁移(虚线连接两条泳道) 当前时刻
各 CPU 就绪队列 —— 按 vruntime 升序,队首即下一个被选中的线程 ↑ 队首
Δvruntime = 该线程的虚拟运行时间 − 本队列的 min_vruntime。数值越小表示"欠跑得越多", 因此越该被选中。加权规则:Δvruntime += 实际运行时间 × 1024 ÷ 权重, 所以权重大的线程虚拟时间走得慢,能分到更多真实 CPU。
线程总表
调度器动作流 —— 中间是主流程;只有黄色那一步真正改变了目标状态,其余全是配套设施 括号内为累计次数
刚刚发生了什么
指标窗口 1 s
事件日志
    拆掉它试试 —— 同一随机种子、同一线程集,各跑 2 秒模拟时间
    点上方任意机制旁的「对比」按钮。
    预期:关掉只影响性能的机制,结果仍然正确,只是变慢或空转; 关掉影响正确性的机制,会出现具体的错误现象(线程饿死、交互卡顿、nice 失效)。
    这个演示简化了什么
      术语对照