Linux 6.6 到 7.0 调度有哪些改动

原始问题:Linux 6.6 到 7.0 调度有哪些改动? · 2026-06-30

Linux 6.6 → 7.0 调度器核心改动全景

这是一个跨越 15 个内核版本(2023.10 ~ 2026.02)的调度器变革历程,以下按阶段梳理。

一、阶段总览

阶段 版本区间 主题
调度算法革命 6.6 ~ 6.12 EEVDF 取代 CFS;sched_ext 引入;PREEMPT_RT 主线化
抢占与代理执行 6.13 ~ 6.17 Lazy Preemption;Proxy Execution 落地;SMP 无条件化
完善与收敛 6.18 ~ 7.0 EEVDF 调优;结构优化;抢占模式简化

二、里程碑级改动详解

1. Linux 6.6(2023.10)— 🏆 EEVDF 替代 CFS

2. Linux 6.8(2024.03)— 🏆 Deadline Server 基础设施

3. Linux 6.12(2024.11)— 🏆 sched_ext + EEVDF 完工 + PREEMPT_RT 主线化

4. Linux 6.13(2025.01)— 🏆 Lazy Preemption

PREEMPT_NONE → PREEMPT_VOLUNTARY → PREEMPT_LAZY(新增) → PREEMPT_FULL
                                                                     (越靠右越实时,开销越大)

5. Linux 6.17(2025.09)— 🏆 SMP 无条件化 + Proxy Execution

6. Linux 7.0(2026.02)— 🏆 抢占模式简化 + rseq 时间片扩展

三、完整版本对照表

版本 发布日期 调度器核心改动
6.6 2023-10 🆕 EEVDF 取代 CFS;Cluster scheduling for x86 hybrid;latency-nice
6.7 2024-01 集群感知调度(cluster-aware);cgroup/cpuset remote partition
6.8 2024-03 🆕 Deadline server 基础设施;EEVDF O(1) fastpath
6.9 2024-05 amd-pstate Preferred Core;Dynamic Energy Model(运行时能源模型修改);cpumask 动态分配 → 512 CPU
6.10 2024-07 系统压力接口重构成调度器;允许禁用 sched_balance_newidle
6.11 2024-09 Loongson-3 cpufreq 驱动;nested-softirq locking(PREEMPT_RT);intel_pstate EPP 更新
6.12 2024-11 🆕 sched_ext (BPF 调度器);✅ EEVDF 完工;PREEMPT_RT 主线化;hiperdispatch
6.13 2025-01 🆕 Lazy Preemption;sched_ext LLC/NUMA 感知空闲选择;Proxy Execution v13 准备
6.14 2025-03 Deadline 修复;nr_running → nr_queued;per-NUMA 空闲 cpumask;PowerPC lazy preemption
6.15 2025-05 sched_ext 核心事件计数器;SCHED_DEBUG 无条件化;SCX_OPS_ALLOW_QUEUED_WAKEUP
6.16 2025-07 动态非对称优先级;scx_sched 多层级调度器架构;RT 组调度启动参数;cpufreq Rust 抽象
6.17 2025-09 🏆 SMP 无条件化(移除 UP 代码);单 RQ Proxy Execution;EEVDF lag 管理;sched_ext cgroup 带宽控制
6.18 2025-11 migrate_enable/disable 内联化;sched_ext 错误转储增强;PREEMPT_RT softirq-BKL 优化
6.19 2026-02 MM CID 管理重写;EEVDF NEXT_BUDDY 回归(唤醒抢占增强);比例 newidle balance;架构特定调度域距离;sched_ext DSQ 无锁 peek
7.0 2026-02+ 🏆 抢占模式 4→2 简化;rseq 时间片扩展;sched_ext deadline server;perf sched stats;struct rq 缓存优化;大型系统 NOHZ 改进

四、三大技术主线

主线 1:公平调度算法的演进(CFS → EEVDF → 完善)

6.6  CFS → EEVDF (替换)
6.8  EEVDF O(1) fastpath
6.12 EEVDF 完工
6.13 Lazy Preemption (fair-class 延迟抢占)
6.17 EEVDF lag 管理
6.19 NEXT_BUDDY 回归 + 比例 newidle balance
7.0  抢占模式简化

主线 2:调度可扩展性(sched_ext)从无到有

6.12 sched_ext  引入 (首批实现)
6.13 LLC/NUMA 感知空闲选择
6.15 核心事件计数器
6.16 struct scx_sched (多层级调度器架构)
6.17 cgroup 带宽控制
6.19 旁路模式可扩展性 + DSQ 无锁 peek
7.0  Deadline Server for sched_ext + C 语言示例调度器

主线 3:实时性与优先级管理

6.8  Deadline Server (替代 RT throttling)
6.12 PREEMPT_RT 主线化
6.13 Proxy Execution 准备
6.17 单 RQ Proxy Execution (优先级反转解决)
6.19 NEXT_BUDDY (唤醒抢占增强)
7.0  rseq 时间片扩展 ("机会性优先级天花板")
7.0  KVM 半虚拟化抢占

五、总结

从 Linux 6.6 到 7.0,调度器经历了自 2.6.23 引入 CFS 以来最大规模的变革:

  1. 调度算法革命:EEVDF 完全替代 CFS,终结了 17 年统治。
  2. 调度可编程化:sched_ext 让用户用 BPF 自定义调度器,从 6.12 引入到 7.0 持续完善。
  3. 实时性飞跃:PREEMPT_RT 主线化 + Lazy Preemption + Proxy Execution + rseq 时间片扩展,四重保障。
  4. 代码结构简化:SMP 无条件化 → UP 代码删除 → 抢占模式从 4 种减到 2 种。

    参考来源

⚠️ 免责声明

本站内容均由 AI 基于公开知识辅助生成,仅供学习参考,请勿直接引用作为依据。作者不对信息的准确性、完整性及适用性作保证,亦不对因使用本站内容产生的任何损失承担责任。