Утилита iostat позволяет проанализировать загруженность системы. Она выводит основные параметры ввода и вывода данных на диск, скорость записи и чтения данных, а также количество записанных или прочитанных данных. Кроме того, утилита выводит параметры загруженности процессора. Её можно использовать для оптимизации работы системы.
В этой статье мы рассмотрим как пользоваться iostat и что означают основные колонки в её выводе.
Содержание статьи
Описание iostat Linux
Синтаксис iostat очень простой. Вам достаточно выполнить:
$ iostat опции устройство интервал
Параметры устройство и интервал необязательные. Первый указывает по какому устройству показывать статистику, а второй, с каким интервалом обновлять данные. Давайте сначала рассмотрим опции программы, которые могут вам пригодится:
- -с - отобразить только информацию об использовании процессора;
- -d - отобразить только информацию об использовании устройств;
- -h - выводить данные в отчёте в удобном для чтения формате;
- -k - выводить статистику в килобайтах;
- -m - выводить статистику в мегабайтах;
- -o JSON - выводить статистику в формате JSON;
- -p - вывести статистику по устройству и всех его разделам;
- -x - вывести расширенную статистику;
- -y - отображать статистику с момента запуска утилиты, а не системы;
- -z - спрятать информацию о дисках, у которых нет активности.
Использование iostat в Linux
Самый простой пример использования утилиты, это запустить её без параметров. Она выведет отчёт с со средней статистикой с момента включения системы до момента запуска программы:
sudo iostat
В первой части отчёта находится информация о загруженности процессора. Тут есть такие колонки:
- %user - процент использования процессора программами, запущенными на уровне пользователя;
- %nice - процент использования процессора программами запущенными тоже в пространстве пользователя, но только с изменённым приоритетом;
- %system - процент использования процессора ядром;
- %iowait - процент времени затраченного на ожидание завершения операций ввода/вывода;
- %steal - процент простоя виртуального процессора, пока гипервизор отдаёт мощность другому виртуальному процессору;
- %idle - процент времени пока процессор не занят ничем.
Если значение параметра %iowait слишком большое, то это может означать, что у вас проблема с производительностью диска и слишком много времени тратится на ожидание завершения ввода/вывода. Для устройств ввода/вывода тоже отображается ряд колонок с информацией. Разберемся что они означают:
- tps - означает количество запросов на чтение или запись к устройству в секунду;
- KB_read/s, MB_read/s - количество килобайт или мегабайт, прочитанных с устройства за секунду;
- KB_wrtn/s, MB_wrtn/s - количество килобайт или мегабайт записанных на устройство в секунду;
- KB_dscd/s, MB_dscd/s - скорость освобождения блоков данных на устройстве, килобайт или мегабайт в секунду;
- KB_read, MB_read - общее количество прочитанных данных с диска с момента загрузки системы;
- KB_wrtn, MB_wrtn - количество записанных данных с момента загрузки системы;
- KB_dscd, MB_dscd - количество освобождённых блоков на диске в результате выполнения операции trim в килобайтах или мегабайтах.
С чтением и записью, я думаю, что всё понятно. Освобождение блоков с данными с помощью операции trim или discard актуально для SSD дисков. Этой операцией файловая система сообщает какие блоки больше хранить физически не нужно и можно использовать для других целей. Утилита отображает с какой скоростью эти блоки освобождаются, а также сколько блоков или мегабайт данных было освобождено. Рассмотрим ещё несколько примеров. Для просмотра данных в удобном формате выполните:
sudo iostat -h
Чтобы посмотреть данные по нужному устройству просто укажите это устройство:
sudo iostat /dev/nvme0n1
Можно посмотреть статистику по каждому разделу устройства, тогда надо воспользоваться опцией -p:
sudo iostat -p /dev/nvme0n1
Чтобы утилита автоматически обновляла данные каждую секунду просто добавьте интервал. Например:
sudo iostat -p /dev/nvme0n1 1
Если вы не хотите чтобы утилита суммировала все данные с момента запуска операционной системы, то можно использовать опцию -y. Но работает она только если задан интервал:
sudo iostat -y -p /dev/nvme0n1 1
Выводы
В этой статье была рассмотрена команда iostat Linux. Она позволяет понять почему зависает ваша система и действительно ли причина этому - жёсткий диск. Мы рассмотрели далеко не все опции утилиты и далеко не все колонки из возможного её вывода. Более подробную информацию вы можете найти выполнив:
man iostat
Самая свежая и достоверная информация, как правило, заполняется разработчиками и находится на man - страницах.