我在Debian7.3服务器上的高I/O (平均等待时间长达7秒)有问题。我试图通过使用iotop -o来找出造成这种情况的原因。现在我看到一个奇怪的东西: iotop在上面告诉我‘总磁盘写: 32.46M/s’。但是在任务列表中,我看不到任何进程在磁盘上写这么多。最高的是两个mysql过程,分别是90K/s和8K/s,以及一个kjournald过程。这三家公司的IO均为99,99%。#如果我把所有的写作速度加在一起,我就不能达到32 to /S的水平了。
碘顶屏幕:

这里怎么了?我认为32.46MB/s的写作是正确的,因为此时我的why服务器有一个较高的页面加载时间,可能是高I/O造成的,但是为什么使用这么多容量的“大任务”没有列在下面的列表中呢?
编辑:我还可以按磁盘写入对其进行排序,并得到如下奇怪的结果:

发布于 2014-12-04 02:19:48
如果您安装了较新的iotop (比如0.6.x来自wheezy backport),它将同时显示“总计”和“实际”值。手册页给出了解释
此外,在采样期间读取和写入的总I/O带宽显示在接口顶部。总磁盘读取和总磁盘写入值表示进程和内核线程之间的总读写带宽和内核块设备子系统之间的带宽。实际磁盘读取和实际磁盘写入值表示内核块设备子系统和底层硬件(HDD、SSD等)之间的实际磁盘I/O的相应带宽。因此,在任何给定的时刻,由于数据缓存和I/O操作的重新排序,在Linux内核中发生的总计值和实际值可能不相等。
这并不是说这个答案完全让我满意,但至少它指出了出现差异的可能原因。它可能是一些内核线程,比如FS元数据/日志,或者是启动、执行IO并在iotop看到它们之前就死掉的短暂进程。
这里和这里有一些相关的问题。对于调试,/proc/sys/vm/block_转储可能有助于查找源代码。
https://serverfault.com/questions/574163
复制相似问题