检查磁盘I/O负载
本文汇总一些检查磁盘io的方法和脚本供参考。
lsof检查文件访问
lsof可检查某个磁盘上的读写进程
gddg:~ # lsof /dev/xvda2 |head
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 202,2 4096 2 /
init 1 root rtd DIR 202,2 4096 2 /
init 1 root txt REG 202,2 40784 193218 /sbin/init
init 1 root mem REG 202,2 19114 8063 /lib64/libdl-2.11.1.so
init 1 root mem REG 202,2 1661454 8057 /lib64/libc-2.11.1.so
init 1 root mem REG 202,2 236384 8114 /lib64/libsepol.so.1
init 1 root mem REG 202,2 113904 8115 /lib64/libselinux.so.1
init 1 root mem REG 202,2 149797 8050 /lib64/ld-2.11.1.so
kthreadd 2 root cwd DIR 202,2 4096 2 /然后可以通过lsof -p $pid来查看某个进程的详细打开的文件
gddg:~ # lsof -p 32597
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 32597 root cwd DIR 202,2 4096 16097 /root
bash 32597 root rtd DIR 202,2 4096 2 /
bash 32597 root txt REG 202,2 584016 32203 /bin/bash
bash 32597 root mem REG 202,2 293936 8125 /lib64/libncurses.so.5.6
bash 32597 root mem REG 202,2 1661454 8057 /lib64/libc-2.11.1.so
bash 32597 root mem REG 202,2 19114 8063 /lib64/libdl-2.11.1.so
bash 32597 root mem REG 202,2 263568 8153 /lib64/libreadline.so.5.2
bash 32597 root mem REG 202,2 149797 8050 /lib64/ld-2.11.1.so
bash 32597 root mem REG 202,2 217016 16498 /var/run/nscd/passwdcat /proc/$pid/io
cat /proc/$pid/io内核版本大于 2.6.20 就支持通过 cat /proc/pid/io 获取进程的io信息
block_dump
block_dump通过 echo 1 > /proc/sys/vm/block_dump 可以把 block 读写 (WRITE/READ/DIRTY)情况dump到日志里面,通过dmesg命令查看
输出类似如下
iotop类脚本
iotop类脚本python版本
iostat.c
http://code.google.com/p/tester-higkoo/source/browse/trunk/Tools/iostat/iostat.c
参考
Last updated
Was this helpful?