免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1935 | 回复: 1
打印 上一主题 下一主题

[进程管理] cfs调度 根据vruntime和min_vruntime 在就绪进程rbtree中给一个就绪进程找合适的位置 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之山东
日期:2016-08-09 14:05:01
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-11 10:03 |只看该作者 |倒序浏览
本帖最后由 1w2b3l 于 2013-09-11 10:03 编辑


截图来自 《深入linux内核架构》

这个key值用来决定把进程查到rbtree哪个位置
值越小 越靠左 越先被调度

为什么要这么减
高手指点


kernel.org文档上是这么解释的

文档链接https://www.kernel.org/doc/Docum ... ched-design-CFS.txt

应该是溢出问题

但是没想明白,没想通, 为什么要减?

论坛徽章:
1
15-16赛季CBA联赛之山东
日期:2016-08-09 14:05:01
2 [报告]
发表于 2013-09-11 10:44 |只看该作者
     补充一下,  照书上的说法,一个就绪进程在就绪rbtree上的位置是由两方面的因素决定的:
     
     一是 vruntime,值越大,说明获得的cpu份额越多,所以在调度树中的位置应该越靠右,因为该进程受到的不公平对待程度是很小的.

     二是 如果该进程刚刚由睡眠状态转为就绪,那么在此期间该进程的vruntime值保持不变,但是就绪进程队列的min_vruntime值是递增的;该进程因为睡眠导致cpu对它的不公平对待程度增大,为了补偿它,它的位置在就绪队列中应该靠左一些。

     综合这两个因素,都应该使插入rbtree中时参考的key值较小一些,为了达到这个效果,键值就由  vruntime - min_vruntime决定, 一箭双雕。

     我又仔细看了一下书中的解释,觉得这样理解能理清思路,搞明白问题。

     但是文档中的 possible wraparounds 的说法,自己没搞明白,请指教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP