2013-10-03 84 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