【问题标题】:Swapper task on multiple CPU cores多个 CPU 内核上的交换任务
【发布时间】:2013-10-09 19:46:32
【问题描述】:

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

期待您的帮助。谢谢。

【问题讨论】:

  • 你为什么在乎?我%t是内核的事!
  • 我很在意,因为它在我的一个项目工具中很有用。我有两种方法可以知道任何 CPU 内核的空闲时间。 1)通过taskstats找出每个内核上运行的交换器任务的时间 2)读取/proc/stat 我选择了第一个,因为taskstats已经在我的项目中实现了,选择第二个将是一个开销。

标签: linux


【解决方案1】:

正如你所说,空闲任务作业是在没有其他要运行的情况下运行,因此 CPU 不会用完指令。

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

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

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

【讨论】:

  • 感谢您的回复。 1)有没有办法知道特定核心关闭了多长时间?内核是否将此类数据转储到某个地方供用户阅读? 2)由于我想详细了解内核对多核系统的处理,您可以建议任何链接/参考吗?
  • 1) 我不知道。 2)您想知道的是非常架构,甚至是特定于 CPU 的。所以我认为你能找到最新信息的唯一地方是内核源代码。
猜你喜欢
  • 2020-03-15
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多