为什么我们在CFS中定义Scheduler时间片?
具体来说,我是在CFS补丁合并后讨论Linux内核调度系统。
在任何地方都提到过,在CFS(完全公平的调度程序)中没有固定的进程时间片,并且时间片是根据在系统中运行的进程数量的平均分配来计算的,因为它们在硬件中并行执行。 图解释更多..
仍然为什么我们在内核中定义调度程序时间片? http://lxr.free-electrons.com/source/include/linux/sched/rt.h#L62
就像链接中的评论所说,这是默认的时间片。 对于实施的每个调度程序,如果有意义的话,时间片的值可能会改变。
例如,在具有SCHED_RR
策略的实时调度程序中,您可以看到使用默认时间片,而对于SCHED_FIFO
策略,时间片为0,因为具有SCHED_FIFO
策略的任务必须先占先其他任务。
在完全公平调度的情况下,通过调用sched_slice
在get_rr_interval_fair
计算时间片。 它根据正在运行的任务的数量及其权重计算切片(这反过来又由进程的好程度决定)。