为什么我们在CFS中定义调度程序时间片?

时间:2014-01-01 10:18:43

标签: linux linux-kernel operating-system scheduling

具体来说,我在谈论CFS补丁合并后的Linux内核调度系统。

在所有地方都提到在CFS(完全公平的调度程序)中没有固定的时间片,并且基于系统中运行的进程数量的相等划分来计算时间片,因为它们在硬件中并行执行。图解释了更多.. Division of processor time

为什么我们在内核中定义调度程序时间片? http://lxr.free-electrons.com/source/include/linux/sched/rt.h#L62

1 个答案:

答案 0 :(得分:4)

与链接中的评论一样,这是默认时间片。对于实现的每个调度程序,如果有意义的话,时间片的值可能会改变。

例如,在real time scheduler with the SCHED_RR policy中,您可以看到使用默认时间片,而对于SCHED_FIFO策略,时间片为0,因为具有SCHED_FIFO策略的任务必须抢占其他任务。

在完全公平调度的情况下,通过调用get_rr_interval_fairsched_slice中计算时间片。它根据正在运行的任务的数量及其权重计算切片(反过来由进程' nice 级别决定)。