sched_slice计算时间片算法

2520阅读 0评论2013-10-30 embeddedlwp
分类:LINUX

2009/12/6 XingChao Wang @gmail.com> 

> 在组调度中(用户组或cgroup组),计算某个schedule entity的time slice要从当前的cfs_rq开始算起,遍历其parent 
> task group直到rq->cfs_rq为止。  这个过程可以看成是对cpu时间依据组权重分配的逆过程。 

> 对这个过程不太确定,有熟悉这部分的朋友吗? 

> CFS group scheduling() 有 句话是这么解释的: 

"As the process runs, its runtime statistics are collected as usual, but 
they are also propagated up the hierarchy so that its CPU usage is properly 
reflected at each level." 

se的time slice也应该反映在不同的level上。 
举这样一个例子: 
user A在cpu M上的cfs_rq Q要更新当前进程 current 其ideal runtime. 
current在Q里的slice要在不同的level上有所体现。 

1. 首先计算出current在Q里的time slice 
2. 对于user A的调度实体,即current的parent,以上面算出的 slice,在其所在的cfs-rq,即CPU 
M的runqueue的cfs_rq里重新计算其time slice. 

简单得讲,把time_slice逐渐向上被蚕食。 

上一篇:My contribution to linux kernel and qemu
下一篇:Linux内核跟踪之trace框架分析