Linux-如何查看磁盘IO等待什么


42

我有一台服务器,负载非常大。就CPU使用率而言,没有什么让我感到惊讶的,并且没有交换。

我认为这是因为某些进程正在等待磁盘IO,我想看看正在等待什么。

是否有任何程序可以告诉我哪些进程正在等待IO?我知道,iotop但这显示了当前正在执行的IO。

还是这是一个愚蠢的问题?(如果是,请说明如何:))

Answers:


47

您可以使用iotop之类的I / O监视器,但是它将仅显示具有当前I / O操作的进程或线程。

如果您需要浏览等待I / O的进程,请使用watch监视带有STAT标志“ D”的进程,如下所示:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"

甜。这很好地帮助了我。
斯图·汤普森

2
另外,您可以使用iotop -o命令,仅根据iotop --help显示“实际上正在执行I / O的进程或线程”。
瑞安

1
@Ryan除了提供必需的iowait信息外,还iotop需要提升的特权。watch,,ps和,awk仅提供必要的信息,并且不需要提升的特权。
Rich

4
我本可以使用ps的POSIX标志并awk以不同的watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"方式编辑它:-这样,您将获得列标题以及stat,pid和command。
丰富

18

ps axu并查找处于“ D”状态的进程。根据ps(1)联机帮助页,处于D状态的进程处于不间断的睡眠状态,这几乎总是意味着“等待IO”。不幸的是,通常无法杀死这些进程。


16

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

1
解释如何解释iostat的输出将很有帮助,“以查看磁盘是否确实处于高负载状态”。
Scott Buchanan

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.