linux cfs时间,linux – CFS中vruntime的概念是什么

vruntime是每线程;它是嵌套在task_struct中的成员.

本质上,vruntime是线程“运行时”的度量 – 它在处理器上花费的时间. CFS的重点是对所有人公平;因此,算法可归结为一个简单的事情:(在给定的队列中的任务中)具有最低vruntime的任务是最值得运行的任务,因此将其选为“下一个”. (实际的实现是使用rbtree来提高效率).

考虑到各种因素 – 如优先级,漂亮的值,cgroups等 – vruntime的计算并不像简单的增量那样简单.我建议阅读“Professional Linux Kernel Architecture”,Mauerer,Wrox Press中的相关部分 – 它会详细解释.

Pl见下面快速尝试总结其中的一些内容.

快速摘要 – vruntime计算:

(根据这本书)

>大部分工作都在kernel / sched_fair.c中完成:__ update_curr()

>打电话给计时器打勾

>更新刚刚在处理器上花费的“当前”的物理和虚拟时间

>对于以默认优先级运行的任务,即nice值0,所花费的物理和虚拟时间是相同的

>对于其他优先(好)级别的任务,情况并非如此;因此,vruntime的计算受到使用负载权重因子的当前优先级的影响

delta_exec =(unsigned long)(现在 – curr-> exec_start);

// …

delta_exec_weighted = calc_delta_fair(delta_exec,curr);

curr-> vruntime = delta_exec_weighted;

忽略一些舍入和溢出检查,calc_delta_fair的作用是什么

计算以下公式给出的值:

delta_exec_weighed = delta_exec * (NICE_0_LOAD / curr->load.weight)

问题是,更重要的任务(具有较低值的那些)将具有更大的任务权重;因此,通过上述等式,对它们的vruntime将会更小(因此让他们在rbtree上更多地排在左边!).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值