没有合适的资源?快使用搜索试试~ 我知道了~
题目_CFS代码分析1
需积分: 0 1 下载量 189 浏览量
2022-08-03
12:25:13
上传
评论
收藏 493KB PDF 举报
温馨提示
试读
7页
4. cfs_sched_class :完全公平调度器类,此次报告的分析对象 1. SCHED_NORMAL :公平的分时调度策略,由 CFS 来调度运行 2.
资源详情
资源评论
资源推荐
Completely Fair Scheduler代码分析
阅读 OpenEuler kernel-4.19_中与完全公平调度算法 (Completely Fair Scheduler)相关的代码kernel/sched/fair.c,
分析CFS的具体实现过程,思考CFS相比 Scheduler的优势。
(也可以阅读Linux kernel-5.12中与CFS相关的代码kernel/sched/fair.c)
一、CFS简介
Completely Fair Scheduler在Linux kernel 2.6.23之后成为系统预设的调度器。
CFS的思想是模拟一个理想的多任务处理器,来最大化总体CPU利用率,同时最大化交互性能。
CFS摒弃了之前调度器中使用的
静
态
时
间
片
,根据进程的优先级计算相应的动态时间片:
其中, 是运行队列中所有任务各执行一个时间片所需要的总时间。
此外,CFS引入了 vruntime 的概念,即程序运行的虚拟时间:
每次调用 vruntime 最小的进程,以实现“公平”。
CFS的实现基于红黑树,插入和删除的时间复杂度为 ,寻找最小值的时间复杂度为 。
二、Linux进程调度数据结构
2.1 Linux 调度器
Linux内核默认提供了5种调度器,使用 struct sched_class 对调度器进行抽象:
1. stop_sched_class :优先级最高的调度器类。
2. dl_sched_class :截止时间调度器类。
3. rt_sched_class :实时调度器类。
4. cfs_sched_class :完全公平调度器类,此次报告的分析对象。
5. idle_sched_class :空闲调度器类。
Linux内核还为用户程序提供了一些调度策略,使他们能够选择调度器:
1. SCHED_NORMAL :公平的分时调度策略,由 CFS 来调度运行。
2. SCHED_BATCH :针对不会与用户交互的批处理任务,由 CFS 来调度运行。
3. SCHED_IDLE :针对优先级最低的后台任务,由 CFS 来调度运行。
4. SCHED_RR :执行一定时间片后不再执行,由 RT 来调度运行。
一筐猪的头发丝
- 粉丝: 64
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0