调度程序时间量如何随线程数而变化?

时间:2013-06-14 09:48:48

标签: c linux-kernel scheduled-tasks scheduling

根据我的理解,调度程序在线程上执行抢占之前的默认时间大约是100ms,该量程如何随忙线程数(需要上下文切换)而变化?

如果有200个线程正在运行,其中100个线程正在使用~100ms,那么其他100个线程就不会那么开心。是否有一些实体像一个完整的线程圈时间?量子的女巫是基于什么?

我考虑到Linux 3.2+内核。

1 个答案:

答案 0 :(得分:0)

CFS方法是每个进程将获得处理器时间的1 / n。 它有目标延迟。这是每个进程都有机会执行某些代码的时间。

为了解决这个问题,调度程序会在指定的时间内运行一个名为 timeslice 的进程。通常,时间片是目标延迟除以运行进程的数量。

但是当正在运行的进程数无效时,时间片接近于零。由于这最终会导致不可接受的转换成本,CFS会在分配给每个流程的时间片上设置一个底限。此层称为最小粒度。默认情况下,它是1毫秒。因此,即使可运行过程的数量接近无穷大,每个过程也将运行至少1毫秒,以确保所产生的转换成本有上限。