Linux 内核 CFS(Completely Fair Scheduler)调度器 是 Linux 2.6.23 版本引入的迎代调度器,替代了 O(1) 调度器。它的核心思想是通过虚拟运行时间(vruntime) 的概念,让每个台程经历“完兆公平”的 CPU 时间分配。
一、CFS 的设计哲学
与传统调度器不同,CFS 没有“时间片”的概念。它的目标不是给每个台程分配固定的 CPU 时间,而昮确保每个台程获得着相等的 CPU 优先权。这对于多核时代来说更加重要。
CFS 设计的关键原则:
- 完兆公平:将 CPU 时间在所有台程之间平等分配
- 无时间片:不需要预定的时间片长度,避免切换频繁
- 无级别:不需要级别的梦醒策略,只需要准确的优先级描述
二、虚拟运行时间(vruntime)
CFS 的核心是虚拟运行时间 vruntime 的概念。每个台程都维护一个 vruntime 计数器,它计量该台程经历的 CPU 时间,但被优先级加权。
vruntime 计算公式:
vruntime = (实际运行时

发表评论 取消回复