【问题标题】:how does the scheduler time quanta varies with number of threads?调度程序时间量如何随线程数变化?
【发布时间】:2013-06-10 22:30:42
【问题描述】:

据我了解,调度程序在线程上执行抢占之前的默认时间约为 100 毫秒,这个量如何随繁忙线程的数量(需要进行上下文切换)而变化?

如果有 200 个线程在运行,其中 100 个使用约 100 毫秒,那么另外 100 个不会那么高兴。有没有像完整线程循环时间这样的实体?量子是基于女巫的?

我想到的是 Linux 3.2+ 内核。

【问题讨论】:

标签: c linux-kernel scheduled-tasks scheduling


【解决方案1】:

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

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

但是当正在运行的进程数接近无穷大时,时间片接近于零。由于这最终会导致不可接受的切换成本,CFS 对分配给每个进程的时间片施加了一个下限。这个下限称为最小粒度。默认为 1 毫秒。因此,即使可运行进程的数量接近无穷大,每个进程也将运行至少 1 毫秒,以确保产生的切换成本存在上限。

【讨论】:

    猜你喜欢
    • 2016-07-04
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多