首先 、用top指令檢視
top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si
Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers
Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached
檢視12.6% wa
IO等待所占用的CPU時間的百分比,高過30%時IO壓力高
其次、 用iostat -x 1 10
如果 iostat 沒有,要 yum install sysstat
avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.25 33.46 66.29
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
檢視%util 100.10 %idle 66.29
如果 %util 接近 100%,說明産生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
idle小于70% IO壓力就較大了,一般讀取速度有較多的wait.
同時可以結合vmstat 檢視檢視b參數(等待資源的程序數)
vmstat -1
time dd if=/dev/zero bs=1M count=2048 of=direct_2G
此指令為在目前目錄下建立一個2G的檔案
再通過如下腳本檢視高峰的程序io情況
monitor_io_stats.sh
#!/bin/sh
/etc/init.d/syslog stop
echo 1 > /proc/sys/vm/block_dump
sleep 60
dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \
print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \
head -n 10
echo 0 > /proc/sys/vm/block_dump
/etc/init.d/syslog start
或者用iodump.pl腳本