如何测量每个设备的 IOwait?

如何测量每个设备的 IOwait?

我有一台服务器,它通过 NFS 导出主目录。它们位于软件 RAID1(/dev/sdb 和 /dev/sdc)上,操作系统位于 /dev/sda 上。我注意到我的%iowait报告topsar相对较高(与其他服务器相比)。值的范围在 5-10% 之间,至于其他服务器(负载比这台服务器更大),值的范围为 0-1%。当值达到 12% 以上时,所谓的用户体验就会下降%iowait。然后我们会遇到延迟。

我的日志中没有任何驱动器错误。我想避免使用反复试验的方法处理驱动器。

我如何找出哪个设备(/dev/sda、/dev/sdb 或 /dev/sdc)是瓶颈?

谢谢!

编辑:我使用 Ubuntu 9.10,并且已经iostat安装。我对 NFS 相关问题不感兴趣,但更关心如何找到哪个设备会降低系统速度。NFS 未加载,我有 32 个可用线程,结果是

grep th /proc/net/rpc/nfsd
th 32 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

编辑2:这是部分iostat -x 1输出(我希望我没有违反这里的一些规则):

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          45.21    0.00    0.12    4.09    0.00   50.58

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   21.00    0.00   368.00     0.00    17.52     0.17    8.10   6.67  14.00
sdb               0.00     6.00    0.00    6.00     0.00    96.00    16.00     0.00    0.00   0.00   0.00
sdc               0.00     6.00    0.00    6.00     0.00    96.00    16.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00   21.00    0.00   368.00     0.00    17.52     0.17    8.10   6.67  14.00
dm-2              0.00     0.00    0.00   12.00     0.00    96.00     8.00     0.00    0.00   0.00   0.00
drbd2             0.00     0.00    0.00   12.00     0.00    96.00     8.00     5.23   99.17  65.83  79.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          45.53    0.00    0.24    6.56    0.00   47.68

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     1.00   23.00    2.00   424.00    24.00    17.92     0.23    9.20   8.80  22.00
sdb               0.00    32.00    0.00   10.00     0.00   336.00    33.60     0.01    1.00   1.00   1.00
sdc               0.00    32.00    0.00   10.00     0.00   336.00    33.60     0.01    1.00   1.00   1.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00   23.00    0.00   424.00     0.00    18.43     0.20    8.70   8.70  20.00
dm-2              0.00     0.00    0.00   44.00     0.00   352.00     8.00     0.30    6.82   0.45   2.00
drbd2             0.00     0.00    0.00   44.00     0.00   352.00     8.00    12.72   80.68  22.73 100.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          44.11    0.00    1.19   10.46    0.00   44.23

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00   637.00   19.00   16.00   432.00  5208.00   161.14     0.34    9.71   6.29  22.00
sdb               0.00    31.00    0.00   13.00     0.00   352.00    27.08     0.00    0.00   0.00   0.00
sdc               0.00    31.00    0.00   13.00     0.00   352.00    27.08     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-1              0.00     0.00   20.00  651.00   456.00  5208.00     8.44    13.14   19.58   0.33  22.00
dm-2              0.00     0.00    0.00   42.00     0.00   336.00     8.00     0.01    0.24   0.24   1.00
drbd2             0.00     0.00    0.00   42.00     0.00   336.00     8.00     4.73   73.57  18.57  78.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          46.80    0.00    0.12    1.81    0.00   51.27

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   16.00    0.00   240.00     0.00    15.00     0.14    8.75   8.12  13.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

最值得关注的列是什么?哪些值被视为不健康?我想await%util是我正在寻找的。在我看来,dm-1这是瓶颈(这是 DRBD 资源元数据)。

双重感谢!

编辑3:这是我的设置:

sda= OS,无 RAID。设备dm-0dm-1都在其上,因为后者是 DRBD 资源的元数据设备(见下文)。和dm-0都是dm-1LVM 卷; drbd2 = dm-2 = sdb + sdc-> 这是 RAID1 设备,通过 NFS 为用户主目录提供服务。我不认为这是瓶颈。这里没有 LVM 卷。

答案1

iostat -x 1

有人告诉我我必须进一步扩展这个答案,但目前我还不知道该添加什么。你没有说你使用的是哪个发行版,所以如果你还没有安装 iostat,我无法告诉你安装它的方法。但我认为这就是你想要的。

编辑:很高兴看到一些 iostat 输出!目前,sd[ab] 设备的数字几乎相同,它们应该在 RAID-1 中,并且都没有饱和;sdc 也没有。但是 drbd2 是饱和的;这有什么用处?它会如何影响整个服务器的性能?

编辑2:我真的不知道该建议什么。您承认 drbd2“通过 NFS 为用户主目录提供服务”,并且您说您有一个 NFS 服务器延迟问题。您生成的 iostat 输出非常令人信服地表明 drbd2 是瓶颈设备。然后您说“在我看来 dm-1 是瓶颈”和“我不认为 [drbd2] 是瓶颈”。我不清楚您有什么证据与 drbd2 是瓶颈的假设相矛盾,但看到它还是不错的。

答案2

这是使用率很高的 NFS 服务器吗?找出 NFS 是否是瓶颈的一个好方法是检查 NFS 进程的运行情况以及是否有任何进程处于等待状态。

grep th /proc/net/rpc/nfsd

第 128 239329954 363444.325 111999.649 51847.080 12906.574 38391.554 25029.724 24115.236 24502.647 0.000 520794.933

第一个数字是可用于处理请求的线程数,第二个数字是需要所有线程的次数。其余 10 个数字是一个直方图,显示一定比例的线程处于繁忙状态的秒数,从不到 10% 的线程开始,到超过 90% 的线程结束。如果最后几个数字累积了大量时间,那么您的服务器可能需要更多线程。

通过更改 /etc/rc.d/init.d/nfs 中的 RPCNFSDCOUNT=16 将服务器使用的线程数增加到 16 个

您可以在以下网址阅读更多内容http://billharlan.com/pub/papers/NFS_for_clusters.html在“服务器线程”标题下。

答案3

您的 /dev/sdb 和 /dev/sdc 都有非常接近的“等待”因子数字。/dev/sda 有一些更大的数字,但它如何影响您的 RAID 性能,因为它没有被包括在内?顺便问一下,您使用 LVM 进行镜像,不是吗?

答案4

因此,阅读 iostat 可以帮助您缩小出现 IO 问题的驱动器的范围,但我发现,追踪导致 IO 问题的应用程序对实际改善情况更有帮助。为此,iotop 非常棒:

http://guichaz.free.fr/iotop/

相关内容