【Linux 内核】CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
文章目錄
- 一、CFS 調度器 " 權重 " 概念
- 二、CFS 調度器調度實例 ( 計算進程 " 實際運行時間 " )
一、CFS 調度器 " 權重 " 概念
CFS 調度器 ( Completely Fair Scheduler ) " 完全公平調度器 " ,
實際運行過程中 ,
會涉及到 具有 不同 " 進程優先級 " 的 進程 之間的調度 , 有些進程 優先級高 , 有些進程 優先級低 ,
為了避免 優先級低 的進程 始終無法得到 CPU 時間 執行 , 向每個進程提供 公平 調度 ,
CFS 調度器 引入了 " 權重 " 概念 ,
CFS 使用 " 權重 " 值 , 替代 進程的 優先級 , 不同 " 進程優先級 " 的進程 會按照 權重比例 , 分配 CPU 的執行時間 ;
二、CFS 調度器調度實例 ( 計算進程 " 實際運行時間 " )
有 222 個進程 A 和 B , 在 CPU 上執行 ;
A 進程的 權重 為 512512512 ,
B 進程的 權重 為 102410241024 ;
在 CPU 上執行的進程 可獲取到的 CPU 時間比例 計算公式如下 :
A進程獲取的CPU時間比例=A進程權重所有進程的權重之和\rm A 進程獲取的CPU 時間比例 = \cfrac{A 進程權重}{所有進程的權重之和}A進程獲取的CPU時間比例=所有進程的權重之和A進程權重?
A 進程可獲取的 CPU 時間比例為 :
A進程獲取的CPU時間比例=A進程權重所有進程的權重之和\rm A 進程獲取的CPU 時間比例 = \cfrac{A 進程權重}{所有進程的權重之和}A進程獲取的CPU時間比例=所有進程的權重之和A進程權重?
A進程獲取的CPU時間比例=512512+1024=13\rm A 進程獲取的CPU 時間比例 = \cfrac{512}{512 + 1024} = \cfrac{1}{3}A進程獲取的CPU時間比例=512+1024512?=31?
B 進程可獲取的 CPU 時間比例為 :
B進程獲取的CPU時間比例=B進程權重所有進程的權重之和\rm B 進程獲取的CPU 時間比例 = \cfrac{B 進程權重}{所有進程的權重之和}B進程獲取的CPU時間比例=所有進程的權重之和B進程權重?
B進程獲取的CPU時間比例=1024512+1024=23\rm B 進程獲取的CPU 時間比例 = \cfrac{1024}{512 + 1024} = \cfrac{2}{3}B進程獲取的CPU時間比例=512+10241024?=32?
CPU 的總時間是 CPU 的調度區 大小 , 則 進程 在 CPU 上執行的進程 可獲取到的 CPU 時間 計算公式如下 :
進程獲取的CPU時間=調度區×進程權重所有進程的權重之和\rm 進程獲取的CPU 時間 = 調度區 \times \cfrac{進程權重}{所有進程的權重之和}進程獲取的CPU時間=調度區×所有進程的權重之和進程權重?
總結
以上是生活随笔為你收集整理的【Linux 内核】CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 内核】CFS 调度器 ①
- 下一篇: 【Linux 内核】CFS 调度器 ④