CFS中vruntime的概念是什么

CFS中vruntime的概念是什么,第1张

CFS中vruntime的概念是什么

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

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

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

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

其他资源: documentation / scheduler / sched-design-
CFS.txt

快速摘要-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上的左侧排队更多!)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5015317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存