Chinaunix

标题: cfs调度如何遍历所有的实体 [打印本页]

作者: DVD0423    时间: 2015-06-09 16:30
标题: cfs调度如何遍历所有的实体
本帖最后由 DVD0423 于 2015-06-09 16:30 编辑

rt,不知道有没有大神知道如何遍历一个runqueue的所有实体,并找到相关进程?也就是如何遍历进程的红黑树。
因为实体包括单一进程和组进程,我对组进程的实体存储结构不是很清晰,所以我在修改内核的时候一直出现bug。望大神指点一二
作者: 缘分十月    时间: 2015-06-11 16:00
真的不是很懂啊  我也是菜鸟啊 我原来租用过一台服务器 linux服务器做网站的 现在网站用的虚拟主机  因为我不台会操作服务器 哈哈!可以去看看 给个小建议 www. dddzj .com
作者: l4rmbr    时间: 2015-08-26 18:52
回复 1# DVD0423

为什么要遍历红黑树?  红黑树是自平衡的,每次取最左边的结点就够了。

不过我看你描述,你所想表达的“遍历”是指从rq 上取一个 sched_entity 后, 如何一步一步到最后挑一个进程到cpu上运行吧。

组调度是个层级结构。

对 rq 来说, 它从它所看到的 cfq 上(即 rq-> cfq) 取一个 sched_entity, 它不管这是个进程, 还是一个进程组。

如果是进程组,在进程组内部选举。所以进程组内部又有一个 cfq, 在上面选举一个 sched_entity.  如果 该sched_entity 是
进程,搞定。否则,再往下一级, 又有一个cfq,以此递归。

   
作者: DVD0423    时间: 2016-01-12 20:48
好久没登陆了,谢了,虽然有点晚了,但回答很有用。回复 3# l4rmbr


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2