Linux

為什麼 CPU 花費時間在 IO(wa) 上?

  • April 21, 2015

我知道wa(in top) 測量等待 I/O 的 CPU 時間。很多文章都這麼說。

但我很困惑,基於2個知識點:

  1. 如果一個程序使用系統呼叫讀取磁碟,則該程序被阻塞。
  2. 如果一個程序被阻塞,它就不能被調度在 CPU 上執行。

對?

似乎沒有時間讓 CPU 在 I/O 上等待……會發生什麼?

如果推荐一些書籍或文章供我進一步閱讀,那就更好了。

CPU 空閒狀態分為兩個不同的“子”狀態:iowaitidle

如果 CPU 處於空閒狀態,則核心將確定目前是否有至少一個 I/O 正在進行到本地磁碟或已從該 CPU 啟動的遠端安裝磁碟 (NFS)。如果有,則 CPU 處於狀態iowait。如果沒有從該 CPU 啟動的正在進行的 I/O,則 CPU 處於idle狀態。

因此,iowait是 CPU 空閒的時間百分比,並且至少有一個從該 CPU 啟動的 I/O 正在進行中。

iowait計數器表明系統可以處理更多的計算工作。僅僅因為 CPU 處於iowait狀態並不意味著它不能在該 CPU 上執行其他執行緒或程序。

所以,iowait只是空閒時間的一種形式。

引用自:https://serverfault.com/questions/684339