2013-10-03 89 views
3

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

期待您的帮助。谢谢。

+0

你为什么在意?我%t是核心的业务! –

+0

我很在乎,因为它在我的一个项目工具中很有用。我有两种方法可以知道任何CPU内核的空闲时间。 1)通过taskstats找出在每个核心上运行的swapper任务的时间2)读取/ proc/stat 我已经选择了第一个,因为taskstats已经在我的项目中实现了,选择第二个是开销。 – tshah06

回答

1

空闲任务作业就像你说的那样在没有别的东西可以运行时运行,所以CPU不会耗尽指令。

所以这意味着在一个具有单核的系统中,空闲进程确保CPU总是有事情做,所以它不会停止。

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

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

+0

感谢您的回复。 1)有没有办法知道特定内核关闭了多久?内核是否将这些数据转储到某处供用户阅读? 2)由于我想详细了解内核对多核系统的处理,有没有可以建议的任何链接/参考? – tshah06

+1

1)我不知道。 2)你想知道的是非常体系结构,甚至CPU特定。所以我认为唯一可以找到最新信息的地方是内核源代码。 – jbr