news 2026/7/28 13:54:52

Linux CFS(完全公平调度器)原理与实现细节全解析(3)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux CFS(完全公平调度器)原理与实现细节全解析(3)

接前一篇文章:Linux CFS(完全公平调度器)原理与实现细节全解析(2)

二、核心概念与关键抽象

2.3 CFS运行队列(cfs_rq)与红黑树

每个CPU都维护一个就绪队列struct rq,其中CFS使用自己的子结构struct cfs_rq管理所有属于CFS调度类的可运行实体。

cfs_rq的核心成员之一是一棵按vruntime排序的红黑树

  • 所有处于TASK_RUNNING状态的sched_entity都在这棵树上;

  • 树中最左节点就是vruntime最小的任务,即下一个最该运行的任务
  • 插入/删除/查找均为 O(log N),在任务数很大时仍然可控。

红黑树的存在,使得CFS可以用非常简洁的逻辑实现:

“永远选择vruntime最小的任务运行”

典型操作如下:

  • enqueue_entity()

新任务就绪 / 唤醒 → 插入rb-tree;

  • dequeue_entity()

任务阻塞 / 退出 → 从rb-tree移除;

  • pick_next_task_fair()

取 rb-tree 最左节点 → 下一个运行任务。

同时,cfs_rq中还维护一个关键字段:

  • min_vruntime

当前运行队列中所有实体vruntime的下界近似值,主要用于新任务vruntime初始化与全局“时间对齐”。

2.4 权重、nice值与调度粒度

在Linux中:

  • nice值范围为[-20, +19],数值越小优先级越高;
  • CFS使用sched_prio_to_weight[]将nice值映射为整数权重weight

  • 权重近似呈指数级变化:每降低1个nice,权重大约乘以1.25。

例如(示意):

  • nice = 0 → weight = 1024;
  • nice = -1 → weight ≈ 1277;
  • nice = +1 → weight ≈ 820。

CFS使用如下公式更新vruntime:

[ \Delta \text{vruntime} = \Delta t_\text{exec} \times \frac{\text{NICE_0_LOAD}}{\text{weight}} ]

因此:

  • 权重越大(nice越低),同样运行1ms,其vruntime增加得更少;
  • 权重越小(nice越高),vruntime增加得更多,在红黑树中更容易被“推到右边”,降低调度频率。

此外,为避免过度频繁的上下文切换,CFS引入了几个重要参数:

  • sched_min_granularity

最小调度粒度(默认约 0.75ms),单次调度不希望明显短于该值;

  • sched_latency

目标调度延迟(默认约 6ms),即当可运行任务数较少时,每个任务在一个周期内大致能运行一次;

  • 当任务数nr_running较多时,sched_latency会按nr_running sched_min_granularity动态放大,以避免极端高频切换。

更多内容请看下回。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 8:13:44

软件测试成本的多维解析与优化路径

在软件开发的生命周期中,测试环节的成本投入直接影响项目的质量底线与商业回报。根据业界研究,测试成本通常占据项目总预算的15%-40%,这一比例在金融、医疗等高可靠性要求的领域甚至更高。对测试成本构成的深刻理解,不仅关乎资源调…

作者头像 李华
网站建设 2026/7/27 12:26:01

5-脱氧-L-阿拉伯糖—结构独特的稀有单糖,药物设计与合成化学的宝贵砌块 CAS:13039-56-0

5-脱氧-L-阿拉伯糖是一种天然存在但相对稀有的五碳脱氧单糖,其独特的L-构型与脱氧结构赋予其区别于常见D-型糖的化学与生物学特性。作为手性合成与药物化学中的高价值砌块,它正日益受到糖化学、抗感染药物研发及糖生物学研究领域的关注。化学信息化学名称…

作者头像 李华
网站建设 2026/7/27 11:51:34

2-乙酰胺基-1,3,4,6-四-O-乙酰基-2-脱氧-5-硫代-α-D-吡喃葡萄糖 —— 糖化学与药物研发的关键砌块 CAS:67561-97-1

2-乙酰胺基-1,3,4,6-四-O-乙酰基-2-脱氧-5-硫代-α-D-吡喃葡萄糖是糖化学与糖药物研究领域中一类重要的修饰单糖衍生物。作为5-硫代葡萄糖的结构前体与保护形式,它不仅是糖生物学基础研究的关键工具分子,更为开发新型糖基化抑制剂、糖模拟药物及诊断探针…

作者头像 李华
网站建设 2026/7/28 11:57:29

群体分析如何改变你的客户洞察

原文:towardsdatascience.com/how-cohort-analysis-can-transform-your-customer-insights-ff7e221b8fdc 尽管进行了数月的营销努力,但你的销售额仍在下降,客户参与度也在下降。出了什么问题?如果有一种方法可以精确地确定客户何时…

作者头像 李华
网站建设 2026/7/22 6:14:38

别再为BGM被下架了,可以生成带声音且无版权素材的AI,真的来了

我做自媒体这么多年,最怕的不是没灵感,而是“做完视频被版权一刀切”。BGM 要么平台判侵权,要么授权贵到离谱;环境音、拟音、人声配音更麻烦——自己录质量差,请配音师成本高、周期长。所以我一直在找一种东西&#xf…

作者头像 李华
网站建设 2026/7/27 14:47:08

vue和springboot框架开发的校园商店零售管理系统_pt87nuk3

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuespringboot_pt87nuk3 框架开发的校园商店零售管理…

作者头像 李华