iotop 下未列出高磁盘写入

Lio*_*ion 6 debian

我在 Debian 7.3 服务器上遇到高 I/O 问题(平均 I/O 等待时间长达 7 秒)。我试图通过使用 iotop -o 找出导致这种情况的原因。现在我看到了一些奇怪的东西:iotop 在顶部告诉我“总磁盘写入:32.46M/s”。但是在任务列表中,我看不到任何进程在磁盘上写了这么多。最高的是两个 90K/s 和 8K/s 的 mysql 进程和一个 kjournald 进程。所有三个都以 99.99% 的 IO 列出。# 如果我把所有的写入速度都加起来,我就离 32MB/s 不远了。

iotop的屏幕:

iotop 截图

这里有什么问题?我认为 32.46MB/s 的写入是正确的,因为此时我的网络服务器页面加载时间较长,可能是高 I/O 造成的。但是为什么使用这么多容量的“大任务”没有列在下面的列表中?

编辑:我也可以通过磁盘写入对它进行排序,我也会得到这样的奇怪结果:

在此处输入图片说明

Mat*_*lis 7

如果您安装较新的 iotop(例如来自 wheezy-backports 的 0.6.x),它会同时显示“total”和“actual”值。和手册页给出了解释

此外,在界面顶部显示采样周期内读取和写入的总I/O带宽。Total DISK READ 和 Total DISK WRITE 值表示一侧的进程和内核线程与另一侧的内核块设备子系统之间的总读写带宽。而 Actual DISK READ 和 Actual DISK WRITE 值代表内核块设备子系统和底层硬件(HDD、SSD 等)之间实际磁盘 I/O 的对应带宽。因此,由于 Linux 内核中发生的数据缓存和 I/O 操作重新排序,Total 和 Actual 值在任何给定时刻可能不相等。

并不是说答案完全让我满意,但至少它指出了差异的可能原因。它可能是一些内核线程,比如 FS 元数据/日志,或者是在 iotop 看到它们之前启动、执行 IO 和死亡的短期进程。

这里这里有一些相关的问题。对于调试,/proc/sys/vm/block_dump可能有助于找到源。