linux 标准vruntime,CFS中vruntime的概念是什么

小编典典

vruntime是按线程的;它是嵌套在task_struct中的成员。

本质上,vruntime是线程“运行时”的度量,即线程在处理器上花费的时间。粮安委的重点是对所有人公平。因此,这种算法归结为一个简单的事情:(在给定运行队列中的任务中)具有最低vruntime的任务是最值得运行的任务,因此将其选择为“

next”。(为了提高效率,实际使用rbtree完成了实现)。

考虑到各种因素(例如优先级,可取值,cgroup等),vruntime的计算不像简单的增量那样简单。我建议阅读Wrox Press的Mauerer的“Professional Linux KernelArchitecture”中的相关部分-对其进行了详细说明。

请在下面快速总结一下其中的一些内容。

快速摘要-vruntime计算:( 基于本书)

大多数工作在kernel / sched_fair.c:__ update_curr()中完成

调用计时器滴答

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

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

对于其他优先级(不错)的任务则不是这样;因此,使用负载权重因子,vruntime的计算会受到电流优先级的影响

delta_exec =(无符号长)(现在– 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上的左侧排队更多!)。

2020-06-07

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值