Answers:
您可以使用iotop之类的I / O监视器,但是它将仅显示具有当前I / O操作的进程或线程。
如果您需要浏览等待I / O的进程,请使用watch监视带有STAT标志“ D”的进程,如下所示:
watch -n 1 "(ps aux | awk '\$8 ~ /D/ { print \$0 }')"
iowait
信息外,还iotop
需要提升的特权。watch
,,ps
和,awk
仅提供必要的信息,并且不需要提升的特权。
ps
的POSIX标志并awk
以不同的watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
方式编辑它:-这样,您将获得列标题以及stat,pid和command。
ps axu
并查找处于“ D”状态的进程。根据ps(1)联机帮助页,处于D状态的进程处于不间断的睡眠状态,这几乎总是意味着“等待IO”。不幸的是,通常无法杀死这些进程。
Zanchey的答案是我所知道的最好的答案,可以找出正在等待IO的内容。
当您说服务器处于高负载状态时,这是什么意思?特别是反应迟缓?
如果您想知道磁盘IO是否是瓶颈,我将使用iostat命令(sysstat程序包的一部分)来查看磁盘是否确实处于高负载状态。
例:
[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3
avg-cpu: %user %nice %system %iowait %steal %idle
2.38 34.71 2.64 1.18 0.00 59.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.11 17.35 2.21 20.31 46.57 301.40 15.45 2.27 100.66 1.48 3.34
sda1 0.10 17.31 2.21 20.31 46.48 301.10 15.44 2.27 100.66 1.48 3.34
sda2 0.00 0.00 0.00 0.00 0.00 0.00 3.50 0.00 30.00 30.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 18.44 0.00 677.67 512.61 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
6.22 0.00 4.31 0.00 0.00 89.47
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/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
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
启用block_dump日志记录哪些进程正在执行块读/写操作:
echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog
完成后,请禁用跟踪,以便您不会向日志文件发送垃圾邮件:
echo 0 > /proc/sys/vm/block_dump