免费注册 查看新帖 |

Chinaunix

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

update_curr()更新任务虚拟运行时间讨论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-24 22:23 |只看该作者 |倒序浏览
原文地址
http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=linuxK&Number=716190&Search=true&Forum=linuxK&Words=wxc200&Match=Username&Searchpage=3&Limit=25&Old=allposts&Main=716190
[/url]
[url=http://www.linuxforum.net/forum/showprofile.php?Cat=&User=wxc200&Number=716190&Board=linuxK&what=showthreaded&page=&view=&sb=&o=&fpart=&vc=1]wxc200

(member)
09-04-10 00:30

update_curr()更新任务虚拟运行时间讨论


编辑




回复


在cfs调度中,对调度实体vruntime的更新放在下面这个函数里:
__update_curr(cfs_rq,curr,delta_exec)
关于这个函数的计算细节,我在之前一篇小文里介绍过。
有许多模糊的地方,请大家一起讨论。
第一个问题,就是关于delta_exec这个参数:
/*
* Get the amount of time the current task was running
* since the last time we changed load (this cannot
* overflow on 32 bits):
*/
delta_exec = (unsigned long)(now - curr->exec_start);
其中now,代表运行队列当前的时间,curr->exec_start有两个设置的地方:
1)在更新cfs_rq->curr的函数set_next_entity()里,会调用update_stats_curr_start()
将exec_start设置为当前运行队列的时间:
se->exec_start = rq_of(cfs_rq)->clock;
照comment的解释,将开始一个新的运行周期
2)即在上面__update_curr()完成后,exec_start被设置为rq的时间
那这个delta_exec是代表进程两次被调度到的时间间隔么?
还是两次更新update_curr()之间的间隔?
第二个问题,关于我的猜测
从两个设置exec_start()的点来看,design基于两种考虑:
1) 任务a被调度,cfs_rq->curr=a, 此时exec_start设置。调用update_curr()时,计算a从被调度到现在的时间,
作为a的运行时间。这是比较好理解的。
2) update_curr()调用的位置比较多,没有仔细研究连续两个update_curr()调用之间的关系。有可能两次update_curr()
调用之间curr并没有变,这时候需要更新任务的vruntime,只能计算从上次update到现在的时间了。
恰好找到了这么种情况,一搜今天有哥们还提了个patch,真是太巧了(http://www.gossamer-threads.com/lists/linux/kernel/1058728?page=last)
呵呵 ,欢迎大家讨论
--------------------
夜,明月,窗前,烟
文章选项:

   

   

   

               
               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP