具体来说,我正在谈论的是CFS补丁合并后的Linux内核调度系统。
到处都提到,在CFS(完全公平的调度程序)中,没有固定的进程时间片,并且时间片是根据系统中运行的进程在硬件中并行执行时相等数量的划分来计算的。图解释了更多..
还是为什么要在内核中定义调度程序时间片?
http://lxr.free-electrons.com/source/include/linux/sched/rt.h#L62
最佳答案
就像链接中的注释说的那样,这是默认时间片。对于每个实现的调度程序,时间片的值可能会更改(如果有意义)。
例如,在real time scheduler with the SCHED_RR
policy中,您可以看到使用了默认时间片,而对于SCHED_FIFO
策略,该时间片为0,因为具有SCHED_FIFO
策略的任务必须抢占其他所有任务。
在完全公平调度的情况下,通过调用 get_rr_interval_fair
在 sched_slice
中计算时间片。它根据正在运行的任务的数量及其权重(进而由进程的良好级别确定)来计算 slice 。