
今天,我注意到即使沒有進程寫入或讀取磁碟 (SSD),我的桌上型電腦 HDD LED 也會閃爍。
我打開了一個終端,運行htop
並按 排序所有進程IO_RATE
。我可以清楚地看到沒有任何進程正在寫入或讀取磁碟,儘管我的電腦 HDD LED 仍然每秒閃爍 1 到 2 次。為什麼會發生這種情況?
答案1
發生這種情況的原因有很多。最有可能的是,Linux 中的寫入通常以寫回的方式發生(頁面在頁面快取中緩衝,然後刷新到磁碟),這可能會在 後無限期地發生write()
,而 I/O 計數器通常會測量即時寫入/讀取吞吐量。
另一個是這些計數器實際上只知道 Linux 打算做什麼(並且根據計數器,甚至排除諸如寫回和 I/O 調度程序決策之類的事情),而不知道你的磁碟。許多磁碟獨立執行作業系統看不到的操作。一個特別值得注意的例子(雖然不是您的情況,但仍然如此)是SMR 磁碟,即使作業系統長時間完成資料寫入,磁碟仍然會在事後工作,將資料從更快的中間儲存移至帶狀皰疹。
一般來說,在作業系統層測量 I/O 往往不準確,並且所使用的計數器htop
甚至不是那裡最先進的。為了更接近,請考慮使用 cgroup v2 io.stat
,它具有更細粒度和可視性的報告。