今天,我注意到即使没有进程写入或读取磁盘 (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
,它具有更细粒度和可视性的报告。