高磁盘写入不在iotop下列出

我的Debian 7.3服务器的I / O很高(平均I / O等待时间高达7秒)。 我试图通过使用iotop -o来查明是什么原因造成的。 现在我看到了奇怪的声音:iotop在顶部告诉我'Total DISK WRITE:32.46M / s'。 但在任务列表中,我看不到任何在磁盘上写入太多的进程。 最高的是90K / s和8K / s的两个mysql进程和一个进程。 所有这三个都以99,99%的IO列出。 #如果我把所有写入速度都加到32MB / s附近。

iotop的屏幕:

iotop截图

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

编辑:我也可以通过磁盘写入,我也得到这样的奇怪的结果:

在这里输入图像说明

如果你安装新的iotop(比如wheezy-backports中的0.6.x),它会显示“total”和“actual”值。 手册页给出了解释

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

并不是说答案完全令我满意,但至less它指出了出现差异的可能原因。 它可能是一些内核线程,比如FS元数据/日志,或者是在IO开始的短暂进程,并且在iotop看到它们之前就死掉了。

这里和这里有一些相关的问题。 对于debugging, / proc / sys / vm / block_dump可能对查找源代码非常有用。