我如何才能找到哪个进程导致了这个 IO 读取(已经尝试过 iotop)

我如何才能找到哪个进程导致了这个 IO 读取(已经尝试过 iotop)

我在一台服务器上的 IO 读取速度稳定在 1.4 兆字节/秒(见下面的 iostat 输出)。我该怎么做才能找出导致此问题的过程?我已经尝试过 iotop 和 htop,但无法用它们查明问题所在:

Linux 2.6.35.4-x86_64-linode16 (la-machine)     02/16/11    _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.16    0.01    0.11    0.68    0.01   99.03

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
xvda             42.29         1.39         0.08     568159      30959
xvdb              0.45         0.00         0.00        988       1202

有没有关于使用 htop/iotop 或其他工具来帮助我找出哪个进程正在占用磁盘的提示?(这是当前流量为 0 的服务器)。

谢谢你!

答案1

http://www.linuxinsight.com/proc_sys_vm_block_dump.html

设置vm.block_dump一秒钟,然后立即关闭(sysctl -w ... ; sleep 1; sysctl -w ...)。dmesg然后显示所有细节。

答案2

由于您已经使用过 iotop,我不确定它有多大用处,但您可以使用 systemtap

stap-v iotop.stp

它会给你输出

     Process       KB Read  KB Written
        Xorg            21           0
       crond            10           0
       wfica             2           0

答案3

尝试使用流程会计。

像 atop 这样的工具与进程记帐结合使用将能够向您显示哪些进程使用磁盘 I/O 最多。

您还可以检查“sa”命令行工具来解释进程记帐信息并按(平均)I / O操作数对进程进行排序

答案4

好吧,您可以先运行 lsof 来缩小哪些进程在 /dev/xvda 上的文件系统上打开了文件的范围。检查您的/etc/fstab文件系统以确定是哪个文件系统。

相关内容