多个 CPU 核心上的交换器任务

tsh*_*h06 5 linux

我有一个关于 Linux 中交换器任务(空闲任务)的查询。我的系统有 16 个 CPU 核心。使用taskstats,我可以计算出交换器任务正在核心0 上运行。我的印象是,当该CPU 没有其他可运行任务时,每个CPU 核心都需要运行一个交换器任务。如果这是真的,那么为什么交换器任务显示只在 cpu0 上运行,如果它是错误的,那么当没有可运行的任务时,其余的 cpu 核心会做什么?

期待您的帮助。谢谢。

jbr*_*jbr 3

正如您所说,空闲任务作业是在没有其他任务可运行时运行,因此 CPU 不会耗尽指令。

因此,这意味着在单核系统上,空闲进程可确保 CPU 始终有事可做,因此不会停止。

在多 CPU/核心系统上,情况也是如此,但是某些 CPU 允许系统将某些核心置于空闲模式以节省电量。在这种情况下,您只需要保持一个核心处于活动状态,并保持空闲进程,因为当内核切换到该核心时,它可以根据需要唤醒更多核心。

请注意,以上内容是整个事实的简化版本。只要相信内核会做正确的事情,它通常知道自己在做什么,并且只想要最适合你的:-)