Отладка дискового ввода-вывода на серверах Linux

Задержки дискового ввода-вывода могут существенно увеличить время ответа служб, в особенности на сервере данных. Используйте утилиты kSar и iostat, чтобы исследовать операции диска и проверить высокие показатели использования диска на серверах Linux.

Анализ использования диска с помощью ksar

На каждом сервере посмотрите графический вывод утилиты ksar, чтобы проверить высокие показатели использования дисков.
  • Использование диска для каждого устройства показано в разделе Диск. Например, выберите Диск > sdb > Ожидание блоков на панели навигации, чтобы вывести информацию о задержках и использовании для устройстваsdb. Использование диска для устройства показано под надписью %Util. Как правило, показанное значение должно быть в диапазоне от 0 до 25%, чтобы допускать периодические пики активности диска. Существенные задержки дискового ввода-вывода наблюдаются, когда постоянно выводится значение в диапазоне от 75 до 100%, и это приводит к росту времени ответа, если устройство используется для табличных пространств или журналов транзакций баз данных.
  • Проверяя использование процессора, выберите Показать суммарное использование процессора в меню Опции. Каждый компонент процессорного времени будет показан в виде столбика суммы. Красная полоса в столбике указывает время ожидания ввода-вывода. Значительная красная полоса указывает на проблемы с задержкой для одного или нескольких устройств на сервере. На сервере данных проблемы задержек обычно возникают, когда память на диске сконфигурирована неправильно. Дополнительную информацию о рекомендациях по конфигурированию дискового хранения DB2 смотрите в разделе Система хранения базы данных.

Анализ использования диска с помощью iostat

Используйте утилиту iostat, входящую в пакет sysstat, чтобы вывести операции диска для каждого устройства на сервере. Можно также запустить команду iostat в пакетном режиме, чтобы выводить в файл показатели активности диска через регулярные интервалы. Например, введите следующую команду от имени пользователя root пользователь на сервере, чтобы выводить 10 итераций статистики каждые 10 секунд в файл:
iostat -d -k -t -N -x 10 10 > iostat_output.txt &
В следующем примере вывод iostat указывает на значительную активность чтения с диска для устройства sdb:
03/23/2018 15:46:05
Устройство: rrqm/s   wrqm/s     r/s    w/s    rkB/s   wkB/s avgrq-sz avgqu-sz  await  svctm  %util
sda       0,00     2,28    0,37   1,32    27,87   14,40    50,22     0,00   2,34   1,52   0,26
sdb       0.00     4,05 5514,38  59,35 25594,43  580,80     9,39     2,03   0,37   0,15  83,95

03/23/2018 15:47:05
Устройство: rrqm/s   wrqm/s     r/s    w/s    rkB/s   wkB/s avgrq-sz avgqu-sz  await  svctm  %util
sda       0,00     1,37    0,00   1,10     0,00    9,87    17,94     0,00   1,39   0,62   0,07
sdb       0,00     2,47 5388,98  18,07 24925,82  198,08     9,29     2,03   0,38   0,13  71,15

Анализ использования диска с помощью iotop

Чтобы проверить активность ввода-вывода на уровне процессов, установите и запустите команду iotop. Можно также запустить эту команду в пакетном режиме, чтобы проверить совокупный вклад в общие показатели ввода-вывода для каждого выполняемого процесса. Например, введите следующую команду от имени пользователя root пользователь на сервере, чтобы выводить 10 итераций статистики каждые 10 секунд в файл iotop_output.txt:
iotop -P -o -t -a -d 10 -n 10 -b > iotop_output.txt &