Как я могу контролировать диск IO?

269

Я хотел бы сделать общий мониторинг диска на сервере Linux Debian. Какие инструменты я должен знать об этом мониторе диска, чтобы я мог видеть, максимальная производительность диска или скачки в определенное время в течение дня?

camomileCase
источник
4
serverfault.com/questions/9428/… || superuser.com/questions/115358/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

226

Для трендов дискового ввода / вывода есть несколько вариантов. Мой личный фаворит - sarкоманда из sysstat. По умолчанию это дает вывод, как это:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

%iowaitВремя , затраченное на ожидание на I / O. Используя пакет Debian, вы должны включить сборщик статистики через /etc/default/sysstatфайл конфигурации после установки пакета.

Чтобы увидеть текущее использование с разбивкой по устройствам, вы можете использовать iostatкоманду, также из пакета sysstat:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

Некоторые другие параметры, которые могут показать использование диска в трендовых графиках, - это munin и cacti .

jordanm
источник
Munin или Cacti - это то, что я ищу. Спасибо за указатели.
РомашкаCase
6
Обратите внимание, что% iowait показывает только время, когда ядру больше нечего делать, кроме как ждать ввода-вывода. На сервере с 100% -ной загрузкой процессора это будет равно нулю независимо от того, сколько IO он делает.
Юрген Штробель
iostat -x dm-0 | устройство grep; iostat -xd 2 -y dm-0 | grep dm-0
Хуан Медина
105

Посмотрите на iotop.

Или iodump, если это в большей степени зависит от вашего мышления.

Примечание: для этого требуется как минимум ядро 2.6.20 .

Дзынь
источник
Это не только Linux, но и требует более нового (или исправленного) ядра.
Иордания
Они выглядят хорошими для выяснения того, что происходит прямо сейчас, но я ищу больший мониторинг изображения.
РомашкаCase
8
@camomileCase - вы не указали это в своем вопросе ...
tink
90

Мне нравится dstat. Он может отображать итоги и статистику по каждому диску и даже md-устройствам (RAID), а также может использовать цвета для лучшего обзора:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t для отметок времени
  • -d для статистики диска
  • -D указать точные устройства для отчета
  • 60в среднем более 60 секунд. Дисплей обновляется каждую секунду, но только один раз в 60 секунд будет запускаться новая строка.

  • в этом примере не используется, но -cможет сообщать процент ожидающего ввода-вывода, который в большинстве случаев связан с ожиданием ЦП данных с дисков.

Он доступен для большинства дистрибутивов Linux, но иногда его нужно устанавливать из репозиториев.

jippie
источник
49

Просто из файлов на вашем компьютере (при условии недавнего ядра) вы можете спросить /sys/block/sda/statили /proc/diskstats. Однако потребуется перевод. Но это хорошо для быстрой и грязной проверки.

charlesbridge
источник
22
/sys/block/sda/statзадокументировано по адресу https://www.kernel.org/doc/Documentation/block/stat.txt
ignis
10
/proc/diskstatsзадокументировано на kernel.org/doc/Documentation/iostats.txt
Рикард Сёдерстрем
2
Большим преимуществом этого ответа является то, что не нужно устанавливать никаких инструментов. Это только там. (Потенциально :-)
Бен
2
например, echo "читать тики слияния секторов, писать тики, слияния секторов, тики, вставлять ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; sleep 10; cat / sys / block / vda / vda1 / stat
Бен
35

Другой вариант заключается в использовании: sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

Эта программа скажет вам, сколько процесса записано на диск и прочитано с диска с момента запуска iotop.

lanoxx
источник
Я слышу, как что-то обращается к диску, но накопленный вывод увеличивается очень медленно, иногда совсем не за секунду ... ???
Майкл
Если вы слышите диск, он, вероятно, старый и / или медленный. Современные жесткие диски, как правило, очень тихие. Какие звуки он издает? Используйте smartctlдля проверки работоспособности диска.
rudolfbyker
8

Мониторинг Disk Io может быть выполнен несколькими инструментами, такими как следующие.

  1. IOSTAT
  2. IOzone
  3. SAR
  4. vmstat

Кроме того, некоторые важные концепции операционной системы очень необходимы для их понимания .. прочитайте полное руководство по Linux IO

Сарат
источник
2
iozone предназначен для тестирования, а не для мониторинга: «Iozone - это инструмент для тестирования файловой системы. Этот тест генерирует и измеряет различные операции с файлами».
Эндрю Билс
7

Еще один отличный инструмент для быстрого обзора, откуда берется нагрузка atop

Он может показать вам обзор всех ресурсов (ЦП, память / подкачка, сетевой и дисковый ввод-вывод) или вы можете перейти к одному ресурсу и отсортировать процессы по тому, сколько они потребляют.

Аарон Дигулла
источник
5

Почему бы не попробовать Nmon . Это делает диски и сеть с процессами. Первоначально для AIX, но он был портирован на Linux уже несколько лет.

Стив Роу
источник
1

Лучшее, что нужно сделать, если вы хотите видеть производительность в течение длительного периода, - это использовать Centreon , мощный инструмент, построенный на Nagios . Centreon позволяет контролировать графики, составляя графики производительности ресурса и многое другое.

Omar
источник
Какие еще вещи? Есть скриншоты? Пожалуйста, расширьте свой ответ.
Конрад Гаевский