我正在尝试了解我的服务器磁盘发生了什么。它运行的是 Ubuntu 12.04LTS,我习惯于使用它iostat
来了解磁盘何时成为瓶颈。但iostat -xd
在我看来,磁盘似乎非常空闲:
Linux 3.2.0-41-generic (loki) 07/05/2013 _x86_64_ (8 CPU)
Device: rrqm/s wrqm/s r/s w/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
每秒写入数十兆字节。
这种差异从何而来?我应该相信哪一个?
答案1
iostat -xd
将返回自上次计数器重置(通常是上次系统重启)以来的平均值,而 则iotop
返回最后一秒的平均值。如果您想要可比较的结果,则应在调用后附加刷新时间间隔,iostat
例如
iostat -xdmy 5
在 5 秒的时间段内取平均值。