linux调度程序在哪里触发?

问题描述 投票:1回答:1

目前,我想深入研究Linux调度。我有一个使用lubuntu和一个4.10.0-37通用内核的测试设置。我想知道使用CFS任务执行的最短时间可以多长时间没有自我屈服。 Here给出了一个很好的概述,如何调整调度程序。我认为sysctl参数kernel.sched_min_granularity_ns(setup = 1.500.000)是正确的选择。但我没有找到任何关于调度程序频率的参考。在CFS文档(CFS doc)中,调度和jiffies的独立性(从1 / HZ周期的系统定时器中断计算)。但是在一些文档中,我再也找不到它了,因为内核中的所有频率都依赖于这个HZ值。我当前的HZ值是250(默认值),因此如果在jiffy定时器中断内调用调度程序,则只需4 ms就可以进行重新调度。这与1.5 ms sched_min_granularity_ns形成对比。调度程序如何比系统中断更快?

linux scheduler granularity cfs
1个回答
1
投票

我当前的HZ值是250(默认值),因此如果在jiffy定时器中断内调用调度程序,则只需4 ms就可以进行重新调度。这与1.5 ms sched_min_granularity_ns形成对比。调度程序如何比系统中断更快?

请参阅commit 8f4d37ec073c, "sched: high-res preemption tick",通过此评论在有关更改的主题中找到:https://lwn.net/Articles/549754/

当hrtimers可用时(仅当时),CPU调度程序将使用它们更频繁地中断。注意,如果需要,这也允许它更频繁地中断,这可以更有效。

大多数系统都应提供hrtimers。

(如果你在提交中查看Kconfig.hz,不要担心SCHED_HRTICK依赖于X86。这个要求似乎已经在最近的一些提交中被删除了)。

© www.soinside.com 2019 - 2024. All rights reserved.