当前位置: 首页 > news >正文

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

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

二、核心概念与关键抽象

2.2 调度实体(sched_entity)

CFS的调度基本单位不是传统的task_struct,而是更通用的抽象 ——调度实体struct sched_entity。

设计原因很简单:

  • 有时调度对象是单个进程/线程;
  • 有时调度对象是任务组(task group)

    cgroup

  • 希望在“调度层”统一地处理这些对象,而不关心其内部构成。

因此:

  • 普通进程:task_struct中内嵌一个struct sched_entity;
  • 任务组:task_group中也内嵌一个struct sched_entity;
  • CFS的核心调度逻辑只围绕sched_entity展开。

其关键字段如下(节选):

// include/linux/sched.h struct sched_entity { /* For load-balancing: */ struct load_weight load; struct rb_node run_node; struct list_head group_node; unsigned int on_rq; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; u64 nr_migrations; #ifdef CONFIG_FAIR_GROUP_SCHED struct sched_entity *parent; /* rq on which this entity is (to be) queued: */ struct cfs_rq *cfs_rq; /* rq "owned" by this entity/group: */ struct cfs_rq *my_q; #endif };

其中:

  • load

任务权重及其倒数等信息,由nice值通过sched_prio_to_weight映射而来。

  • vruntime

虚拟运行时间,是CFS调度排序的核心字段。

  • run_node

作为红黑树节点,使得该实体可插入CFS运行队列的rb-tree中。

  • cfs_rq

/my_q/parent:在启用组调度时构建层次化调度树:

  • cfs_rq

该实体所属运行队列。

  • my_q

如果该实体本身代表一个任务组,则它拥有自己的子运行队列my_q。

  • parent

父级调度实体,实现自上而下的嵌套调度。

这种设计将“调度逻辑”与“被调度对象”解耦,使CFS可以自然支持从单进程到多级cgroup的复杂层次结构。

更多内容请看下回。

http://www.rkmt.cn/news/111870.html

相关文章:

  • 视频创作者必看!这7个素材网站
  • 终极指南:5步轻松让旧Mac完美运行最新系统
  • LangChain 1.0 VS LangGraph 1.0:智能体我该用哪一个?
  • 吹爆FreeBuds SE4 ANC的新音效 | 浅聊体验
  • Unity翻译插件终极指南:3步实现游戏无障碍体验
  • Unity游戏翻译终极方案:XUnity.AutoTranslator技术深度解析
  • 跟着铁头山羊学STM32单片机(串口篇)
  • 10分钟构建verification failed:(0x1a)错误监控原型
  • CallerRunPolicy vs AbortPolicy:性能对比与选择指南
  • 用XMRig快速验证挖矿算法原型
  • 30秒创建!Ubuntu+Python+VSCode开发沙箱
  • 用D盾快速构建安全检测原型系统
  • AI如何帮你自动修复Linux挂载问题?
  • LobeChat能否集成代码高亮?编程问答场景增强显示
  • 1小时搭建:VSCode远程开发环境原型
  • java计算机毕业设计校园服务平台 象牙塔一站式生活助手 高校圈随身万事通
  • 企业文化三部经典著作推荐,做好企业文化建设必读
  • 效率对比:5种Ubuntu安装Node.js方法耗时测评
  • 几何公差之线轮廓度和面轮廓度
  • APP新增广告位别盲目!掌握4个关键思维,兼顾收益与体验
  • Langchain-Chatchat集成华为NPU与MindIE部署实战
  • 拒绝“假装努力”的空转:解码成绩停滞背后的“学习操作系统”重构
  • linux系统新增启动项,支持从数据盘启动
  • 设计模式的定义与应用场景 - f
  • 书籍是进步的阶梯,职场人自我提升必看的书籍推荐
  • 发现一个可以真的一句话操作电脑的AI工具,居然还是开源的!
  • Coze工作流下载:AI如何自动化你的开发流程
  • LobeChat零售业商品推荐引擎整合方案
  • 汽车免拆诊断案例|2023 款智己LS7车仪表偶尔提示前向防碰撞辅助功能不可用
  • 汽车免拆诊断案例 | 本田Insight混合动力系统冷却风扇故障深度解析