iotop和iostat不同意

我试图了解我的服务器磁盘上发生了什么。 它运行Ubuntu 12.04LTS,我习惯于使用iostat来了解磁盘何时是瓶颈。 但是iostat -xd对我来说就像磁盘相当闲置:

 Linux 3.2.0-41-generic (loki) 07/05/2013 _x86_64_ (8 CPU) Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.16 1.23 0.69 1.49 9.94 37.03 43.05 0.52 239.02 14.16 343.06 3.65 0.80 sdb 0.00 0.00 0.00 0.00 0.00 0.00 8.10 0.00 0.25 0.25 0.00 0.25 0.00 dm-0 0.00 0.00 0.82 2.70 9.92 37.03 26.67 0.72 203.84 16.80 260.64 2.27 0.80 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 7.99 0.00 198.63 9.33 1232.65 13.97 0.00 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 7.99 0.00 497.11 14.27 1858.12 20.96 0.00 

iotop讲述了一个完全不同的画面:

 Total DISK READ: 31.84 M/s | Total DISK WRITE: 19.55 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 27472 be/4 mongodb 31.35 M/s 3.92 K/s 0.00 % 46.56 % mongod --config /etc/mongodb.conf 318 be/3 root 0.00 B/s 94.06 K/s 0.00 % 44.52 % [jbd2/dm-0-8] 1493 be/4 mongodb 0.00 B/s 48.88 M/s 0.00 % 9.13 % mongod --config /etc/mongodb.conf 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 

mongod每秒写入数十兆字节。

哪里来的差异,我应该相信?

iostat -xd会给你从最后一次计数器复位(通常是最后一次系统重新启动)以来的平均值,而iotop产生最后一秒的平均值。 如果你想要比较的结果,你应该添加一个刷新时间间隔到你的iostat调用

 iostat -xdm 5 

在5秒的时间内平均。 您仍然需要丢弃第一个输出线(因为它们将从最后一个计数器复位平均),并等待第二组输出线查看“当前”平均值。