Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )相关的知识,希望对你有一定的参考价值。
文章目录
一、CFS 调度器 " 权重 " 概念
CFS 调度器 ( Completely Fair Scheduler ) " 完全公平调度器 " ,
实际运行过程中 ,
会涉及到 具有 不同 " 进程优先级 " 的 进程 之间的调度 , 有些进程 优先级高 , 有些进程 优先级低 ,
为了避免 优先级低 的进程 始终无法得到 CPU 时间 执行 , 向每个进程提供 公平 调度 ,
CFS 调度器 引入了 " 权重 " 概念 ,
CFS 使用 " 权重 " 值 , 替代 进程的 优先级 , 不同 " 进程优先级 " 的进程 会按照 权重比例 , 分配 CPU 的执行时间 ;
二、CFS 调度器调度实例 ( 计算进程 " 实际运行时间 " )
有 2 2 2 个进程 A 和 B , 在 CPU 上执行 ;
A 进程的 权重 为 512 512 512 ,
B 进程的 权重 为 1024 1024 1024 ;
在 CPU 上执行的进程 可获取到的 CPU 时间比例 计算公式如下 :
A 进 程 获 取 的 C P U 时 间 比 例 = A 进 程 权 重 所 有 进 程 的 权 重 之 和 \\rm A 进程获取的CPU 时间比例 = \\cfracA 进程权重所有进程的权重之和 A进程获取的CPU时间比例=所有进程的权重之和A进程权重
A 进程可获取的 CPU 时间比例为 :
A 进 程 获 取 的 C P U 时 间 比 例 = A 进 程 权 重 所 有 进 程 的 权 重 之 和 \\rm A 进程获取的CPU 时间比例 = \\cfracA 进程权重所有进程的权重之和 A进程获取的CPU时间比例=所有进程的权重之和A进程权重
A 进 程 获 取 的 C P U 时 间 比 例 = 512 512 + 1024 = 1 3 \\rm A 进程获取的CPU 时间比例 = \\cfrac512512 + 1024 = \\cfrac13 A进程获取的CPU时间比例=512+1024512=31
B 进程可获取的 CPU 时间比例为 :
B 进 程 获 取 的 C P U 时 间 比 例 = B 进 程 权 重 所 有 进 程 的 权 重 之 和 \\rm B 进程获取的CPU 时间比例 = \\cfracB 进程权重所有进程的权重之和 B进程获取的CPU时间比例=所有进程的权重之和B进程权重
B 进 程 获 取 的 C P U 时 间 比 例 = 1024 512 + 1024 = 2 3 \\rm B 进程获取的CPU 时间比例 = \\cfrac1024512 + 1024 = \\cfrac23 B进程获取的CPU时间比例=512+10241024=32
CPU 的总时间是 CPU 的调度区 大小 , 则 进程 在 CPU 上执行的进程 可获取到的 CPU 时间 计算公式如下 :
进 程 获 取 的 C P U 时 间 = 调 度 区 × 进 程 权 重 所 有 进 程 的 权 重 之 和 \\rm 进程获取的CPU 时间 = 调度区 \\times \\cfrac进程权重所有进程的权重之和 进程获取的CPU时间=调度区×所有进程的权重之和进程权重
以上是关于Linux 内核CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )
Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )
Linux 内核CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )