Linux 内核调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )相关的知识,希望对你有一定的参考价值。
文章目录
- 一、调度器类型
- 二、调度器类型源码定义
- 三、停机调度类 ( stop_sched_class )
- 四、限期调度类 ( dl_sched_class )
- 五、实时调度类 ( rt_sched_class )
- 六、公平调度类 ( fair_sched_class )
- 七、空闲调度类 ( idle_sched_class )
一、调度器类型
在 Linux 内核中 , sched_class
调度器 分为以下
5
5
5 种类型 :
- stop_sched_class : 停机调度类 ;
- dl_sched_class : 限期调度类 ;
- rt_sched_class : 实时调度类 ;
- fair_sched_class : 公平调度类 ;
- idle_sched_class : 空闲调度类 ;
上述每种 " 调度类 " 都有自己的 调度策略 ;
调度类 优先级 由高到低排列为 :
停机调度类 > 限期调度类 > 实时调度类 > 公平调度类 > 空闲调度类
二、调度器类型源码定义
调度器类型 , 定义在 Linux 内核源码 linux-5.6.18\\kernel\\sched\\sched.h
头文件中的
1792
1792
1792 ~
1796
1796
1796 行 ;
extern const struct sched_class stop_sched_class;
extern const struct sched_class dl_sched_class;
extern const struct sched_class rt_sched_class;
extern const struct sched_class fair_sched_class;
extern const struct sched_class idle_sched_class;
三、停机调度类 ( stop_sched_class )
停机调度类 ( stop_sched_class ) 优先级最高 , 用于 停止进程 , 该 调度类 可以抢占 系统进程 ;
" 停机进程 " 是 优先级最高的进程 ;
" 停机进程 " 可以 任意抢占 其它进程 , 但是 其它进程 不能抢占 停机进程 ;
四、限期调度类 ( dl_sched_class )
限期调度类 ( dl_sched_class ) 按照 优先算法 调度进程 , 将 进程 按照 绝对截止期限 从小到大 在 红黑树 中进行排序 ;
调度时 , 每次都选择 截止期限 最小的 " 进程 " 执行 ;
五、实时调度类 ( rt_sched_class )
实时调度类 ( rt_sched_class ) 为每个 " 调度优先级 " 维护一个 队列 ;
六、公平调度类 ( fair_sched_class )
公平调度类 ( fair_sched_class ) , 引入 一个 完全公平 的 调度算法 , 根据 " 虚拟运行时间 " 概念 , 调度进程 ;
虚 拟 运 行 时 间 = 实 际 运 行 时 间 ∗ N I C E _ 0 _ L O A D 进 程 权 重 \\rm 虚拟运行时间 = \\cfrac实际运行时间 * NICE\\_0\\_LOAD进程权重 虚拟运行时间=进程权重实际运行时间∗NICE_0_LOAD
其中 N I C E _ 0 _ L O A D \\rm NICE\\_0\\_LOAD NICE_0_LOAD 是 nice0 对应的权重 ;
七、空闲调度类 ( idle_sched_class )
空闲调度类 ( idle_sched_class ) , 每个 CPU 上都有一个 空闲线程 , 该空闲线程称为 0 号线程 ;
空闲调度类 优先级最低 , 只有在 其它类型的调度类进程都执行完毕后 , 才会执行 空闲调度类 对应的进程 ;
以上是关于Linux 内核调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )
Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )
Linux 内核CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )