免费注册 查看新帖 |

Chinaunix

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

关于CFS调度在china linux forum的一篇讨论帖子(4) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-24 22:11 |只看该作者 |倒序浏览
这个系列的文章可以看作入门级别,朋友们看了cfs代码的实现后,可以对某个patch比较深入地研究下。
wxc200
(member)
09-03-31 16:23

Re: CFS 调度 [
re: ffjnfj
]


编辑




回复


是的,这也是让我很郁闷的地方,查了下代码,只有put_prev_task()会让curr=null.
你看下本帖子第2页最上面的回复,commit log里作者对 se 出列的分析,好像已经变成null了。
另外,在第一页你分析dvd播放时,也提到过。
但是,肯定有这样的流程:curr变成了null,仍然会进入这个函数。
觉得应该是更新idle task队列的时候。 (待查)
现在做这两种假设:cfs_rq->curr 存在或不存在,来反推下patch的起源。
1)curr != Null
现在看来,铁定会走第二个if 的else流程,即 vruntime = min_vruntime(vruntime, se->vruntime);
但在patch之 前,if判断是这样的:
if (vruntime == cfs_rq->min_vruntime)
所以,我在最早回复你的时候说,有可能curr的vruntime没变,但是它又存在,这样给cfs-rq->min_vruntime“大跃进”的机会。
2)curr == null
无论patch有没有,都会走:
vruntime = se->vruntime;
我是这样理解patch的。
现在只是根据代码推断执行情况,具体的执行实例,需要再往上一层次推导,这是目前我觉得困难和疑惑的地方
结束
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/110888/showart_2159287.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP