Применение iostat для выявления узких мест, связанных с дисковым вводом/выводом

Для выявление узких мест связанных с диском можно воспользоваться утилитой iostat которая выдает информацию о дисковом вводе/выводе (активность жёсткого диска) и об использовании процессора.

В первой строке печатается статистика ввода/вывода с момента запуска системы.
В последующих строках отражаются данные собранные за предшествующий интервал.

Утилита iostat позволяет посмотреть метрики процессора и устройств ввода/вывода. Как и для vmstat первые значения из вывода утилиты должны быть отброшены…

Начните оценку с запуска команды iostat во время максимальной нагрузки на систему или работы важного приложения задержки ввода-вывода для которого необходимо свести к минимуму. Следующий сценарий запускает команду iostat в фоновом режиме на время копирования в большого файла:

# iostat 5 3 >io.out &
# cp big1 /dev/null

Указанная команда создает три отчета в файле io.out:

tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait          0.0          1.3               0.2      0.6       98.9       0.3 Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtnhdisk0        0.0       0.3       0.0             29753     48076hdisk1        0.1       0.1       0.0             11971     26460hdisk2        0.2       0.8       0.1             91200    108355cd0              0.0       0.0       0.0          0         0
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait          0.8          0.8               0.6      9.7       50.2      39.5 Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtnhdisk0          47.0     674.6      21.8       3376        24hdisk1           1.2       2.4       0.6          0        12hdisk2           4.0       7.9       1.8          8        32cd0              0.0       0.0       0.0          0         0
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait          2.0          2.0               0.2      1.8       93.4       4.6 Диски:        % tm_act     Kbps      tps    Kb_read   Kb_wrtnhdisk0           0.0       0.0       0.0          0         0hdisk1           0.0       0.0       0.0          0         0hdisk2           4.8      12.8       3.2         64         0cd0              0.0       0.0       0.0          0         0

Первый отчет представляет собой статистику с момента последней загрузки и показывает равномерность (или в данном случае неравномерность) распределения ввода-вывода по жестким дискам. Жесткий диск hdisk1 почти все время простаивает в то время как жесткий диск hdisk2 обрабатывает около 63 процентов всего ввода-вывода (согласно значениям в столбцах Kb_read и Kb_wrtn).

Второй отчет содержит информацию собранную за первые 5 секунд выполнения команды cp. Внимательно изучите содержащуюся в нем информацию. С момента запуска команды cp прошло 2.6 секунд. В результате 2.5 секунды интенсивного ввода-вывода в сочетании с 2.5 секундами простоя дали среднее значение % iowait равное 39.5 процентов. Более короткий интервал измерения позволил бы получить более точные значения. Этот пример показывает что при анализе отчетов следует учитывать что все указанные значения являются средними за интервал измерения.

%user – доля времени процессора затраченная на исполнение пользовательских приложений
%nice – доля времени процессора затраченная на изменение nice уровня процессов
%sys – доля времени процессора затраченная на исполнение кода ядра
%idle – доля времени процессора которое он простаивал
Device – имя устройства
tps – количество запросов ввода/вывода в секунду
Blk_read/s Blk_wrtn/s – количество считанных и записанных блоков в секунду
Blk_read Blk_wrtn – количество считанных и записанных блоков между двумя последовательными выводами iostat

Два столбца с информацией о терминалах (tin and tout) в выводе команды iostat показывают число символов прочитанных и записанных всеми терминалами. Это значение учитывает как физические так и псевдотерминалы. Физическими терминалами считаются устройства подключенные к асинхронному порту. Псевдотерминалы представляют собой оболочки сеансы telnet и окна aixterm.

Поскольку чтение и запись символов занимает ресурсы процессора обратите внимание на зависимость между активностью терминалов и загрузкой процессоров. Если такая зависимость есть попытайтесь повысить эффективность работы подсистемы TTY. Возможные действия включают модификацию прикладных программ изменение параметров порта терминала при передаче файлов а также модернизацию асинхронного адаптера.

В столбцах с информацией о процессоре (% user % sys % idle и % iowait) указывается распределение времени процессора. В выводе команды vmstat эта информация выводится в столбцах us sy id и wa.

Если в системе работает только одно приложение то высокий процент времени ожидания ввода-вывода скорее всего связано со сложностью этого приложения. В системах с несколькими процессорами во время ожидания ввода-вывода одним из процессоров остальные будут работать. В этом случае величина % iowait будет невелика или равна нулю поскольку работающие процессоры "скрывают" часть времени ожидания. Таким образом несмотря на низкое значение % iowait ввод-вывод может существенно влиять на производительность приложения.

Если команда iostat показывает что производительность приложений не ограничена ресурсами процессоров и величина % iowait больше 20 процентов то низкая производительность связана с дисковым или другим вводом-выводом. Такая ситуация может возникнуть при массовой подкачке страниц из-за недостатка физической памяти. Кроме того она может быть связана с несбалансированностью нагрузки на диски фрагментацией данных или активных областей. Команда iostat выводит всю необходимую информацию для случая несбалансированной нагрузки. Информацию о файловых системах и логических томах относящихся к логическим ресурсам можно получить с помощью команд filemon и fileplace.

Если вы считаете что низкая производительность связана с дисковым вводом-выводом то изучите отчет команды iostat. Для исключения информации о терминалах и процессорах укажите опцию -d. Кроме того вы можете получить информацию только об отдельных дисках указав их имена.

Не забывайте что первый отчет содержит статистику работы системы со времени запуска.

Для того чтобы сделать правильные выводы из отчетов команды iostat необходимо знать применяемый способ доступа к данным приложения (последовательный произвольный или смешанный) а также типы дисковых накопителей и адаптеров в системе. Например если приложение выполняет чтение или запись последовательно то скорость передачи данных (Kbps) при высокой загрузке диска (%tm_act) также должна быть высокой. Значения Kb_read и Kb_wrtn показывают объем данных считанных и записанных приложением. Однако эти значения не позволяют определить способ доступа к данным.

Обычно высокая нагрузка на диск (%tm_act) не свидетельствует о неправильной работе если она сопровождается высокой скоростью передачи (Kbps). Однако высокая нагрузка на диск при низкой скорости передачи свидетельствует о фрагментации логического тома файловой системы или файла.

При рассмотрении вопросов связанных с производительностью дисков логических томов и файловых систем можно прийти к заключению о том что чем больше дисков в системе тем выше ее быстродействие. Это не всегда так поскольку все передаваемые между системой и диском данные проходят через адаптер дисков. Этот адаптер также может стать узким местом. Если каждый дисковый накопитель подключен к отдельному адаптеру и все интенсивно используемые файловые системы находятся на разных физических томах то увеличение числа дисков действительно позволяет повысить производительность системы. При этом степень повышения производительности будет зависеть от применяемого способа доступа.


Оригинал статьи http://pingvinoff.net/2009/01/06/komanda-iostat/

0 комментариев

Оставить комментарий