我怎样才能find哪个进程导致这个IO读取(已经尝试iotop)

我在一台服务器上读取了一个不断的1.4兆字节/秒的IO读取(请参阅下面的iostat输出)。 我能做些什么来find哪个过程是原因? 我已经尝试过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个stream量的服务器)。

谢谢!

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

设置vm.block_dump一秒钟,然后立即closures( sysctl -w ... ; sleep 1; sysctl -w ... )。 dmesg则揭示了所有的低谷。

正如你已经使用iotop,我不知道这是多么有用,但你可以使用systemtap像

stap -v iotop.stp

它会给你输出

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

尝试进程会计。

像进程计费配对的工具将能够告诉你什么进程正在使用最多的磁盘I / O。

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

那么,你可以通过运行lsof来缩小哪些进程在/ dev / xvda上的文件系统上打开哪些进程。 检查你的/etc/fstab来确定是哪个文件系统。