我有一个关于Linux中的swapper任务(空闲任务)的查询。我有一个有16个CPU核心的系统。使用taskstats,我可以发现swapper任务正在核心0上运行。 我有一种印象,即每个CPU内核都需要一个交换任务才能在该CPU没有其他可运行任务时运行。如果它是真的,那么为什么swapper任务只显示在cpu0上运行,如果它错了,那么当没有可运行的任务时,其余的cpu核心会执行什么操作?多CPU核心上的Swapper任务
期待您的帮助。谢谢。
我有一个关于Linux中的swapper任务(空闲任务)的查询。我有一个有16个CPU核心的系统。使用taskstats,我可以发现swapper任务正在核心0上运行。 我有一种印象,即每个CPU内核都需要一个交换任务才能在该CPU没有其他可运行任务时运行。如果它是真的,那么为什么swapper任务只显示在cpu0上运行,如果它错了,那么当没有可运行的任务时,其余的cpu核心会执行什么操作?多CPU核心上的Swapper任务
期待您的帮助。谢谢。
空闲任务作业就像你说的那样在没有别的东西可以运行时运行,所以CPU不会耗尽指令。
所以这意味着在一个具有单核的系统中,空闲进程确保CPU总是有事情做,所以它不会停止。
在多CPU /核心系统上,情况也是如此,但是某些CPU允许系统将某些内核置于空闲模式以节省功耗。在这种情况下,只需要保持单个内核处于空闲状态,因为那时内核切换到内核时,它可以按需唤醒更多的内核。
请注意,以上是整个事实的简化版本。只要相信内核做正确的事情,它通常知道它在做什么,并且只想要最适合你的东西:-)
你为什么在意?我%t是核心的业务! –
我很在乎,因为它在我的一个项目工具中很有用。我有两种方法可以知道任何CPU内核的空闲时间。 1)通过taskstats找出在每个核心上运行的swapper任务的时间2)读取/ proc/stat 我已经选择了第一个,因为taskstats已经在我的项目中实现了,选择第二个是开销。 – tshah06