小编Eve*_*ard的帖子

SCHED_BATCH 描述令人困惑 - 它实际上是做什么的?

Linux 中有多个调度选项,可以借助chrt命令行将其设置为进程。我似乎无法理解其中之一......哪个是SCHED_BATCH。事实上,它的描述在多个来源中都是自相矛盾的。但在此之前,我将总结我设法获得的有关所有计划选项的事实,因为不同的描述引用了SCHED_BATCH它们。

SCHED_FIFO基本上都是SCHED_RR实时调度策略,略有差异,这里大多数没有问题,它们总是先于任何其他进程运行。

SCHED_OTHER是默认策略,根据nice每个进程的值来分配优先级。

SCHED_DEADLINE- 我还没有完全理解这个,它似乎实际上更接近SCHED_FIFO但具有设置的执行计时器,并且如果达到这些计时器,实际上可能会抢占SCHED_FIFO/任务。SCHED_RR

SCHED_IDLE- 基本上“只有在 CPU 空闲时才进行调度”,这里没有问题。

现在,SCHED_BATCH我发现这是很有争议的。一方面,在2002 年的原始实现笔记中,据说它与SCHED_IDLE用户代码和SCHED_OTHER内核代码基本相同(以避免由于进程从未被调度而导致内核资源锁定)。在MAN 文章中,据说它与 基本相同,SCHED_OTHER但有一点小惩罚,因为它被认为是 CPU 限制的。

现在,这两种SCHED_BATCH解释彼此不一致。哪一个是真相?是否SCHED_BATCH在某个地方重新实现了?或者有人SCHED_BATCH在写MAN文章时误解了?哪一种解释是正确的?

更新:额外研究:

我做了更多挖掘,发现了这个内核调度程序文档,还通过挖掘sched 源代码,似乎SCHED_BATCH确实是由与SCHED_OTHER.

我还做了一个测试。我有一个进程实际上限制了其他进程,因为它的负载很高,即使使用很好的 19,但默认SCHED_OTHER设置也是如此。我已将其设置为SCHED_IDLE,其他进程的限制问题消失了...然后我决定尝试SCHED_BATCH相同的进程(具有相同的良好 19 设置)。令人惊讶的是,SCHED_BATCH也没有限制我的其他进程,比如SCHED_IDLE

但从我上面链接的文档看来, …

linux scheduling linux-kernel

6
推荐指数
1
解决办法
1428
查看次数

标签 统计

linux ×1

linux-kernel ×1

scheduling ×1