Назад | Перейти на главную страницу

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/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 запись десятков мегабайт в секунду.

Откуда взялось несоответствие и чему я должен верить?

iostat -xd даст вам средние значения с момента последнего сброса счетчика (обычно последней перезагрузки системы), тогда как iotop выдает средние значения за последнюю секунду. Если вы хотите получить сопоставимые результаты, вам следует добавить интервал времени обновления в свой iostat позвони как

iostat -xdmy 5

для усреднения за период времени 5 секунд.