Linux CFS调度算法的理解

我们都希望在调度时,任务按照相同的进展比例进行,这样才公平,谁也不多干,谁也不少干。例如A完成了50%,B也应该完成50%。这个完成的百分比实际上就是“实际分配时间/应该分配时间”。

在加权的情况下,任务按照加权比例同时进行 ,例如A进程权重2,B进程权重1,A进程完成50%,B进程应该完成25%,加权后的实际分配的时间= ( 调度的总时间  * 该进程权重 )/总权重

那么我们就可以得到公式

A进程实际分配时间 / B应该分配时间 = (调度的总时间*A进程权重)/(总权重*A进程应该分配时间)

B进程实际分配时间 / B应该分配时间 = (调度的总时间*B进程权重)/(总权重*B进程应该分配时间)

如果公平的话,就是两者尽量相等,假设上面的两个等式对等,我们就可以得到

(A进程分配的时间*G)/(A进程权重)=(B进程分配的时间*G)/(B进程权重)

G为常量

是不是linux cfs调度器的虚拟时钟的计算方式好像:

virtime= 该进程分配的时间 * NICE_0_LOAD /当前进程的权重

已上是我的个人理解,如果不对,请指出,谢谢

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值