Команда Linux iostat
1. Обзор команды iostat
iostat (статистика ввода-вывода) — мощный инструмент мониторинга производительности в системах Linux, входящий в пакет sysstat. Он в основном используется для мониторинга активности дискового ввода-вывода системы и загрузки ЦП.
1.1 Основные функции
- Мониторинг скорости чтения/записи дискового ввода-вывода системы
- Просмотр загрузки ЦП
- Сводка нагрузки устройств
- Выявление узких мест производительности I/O
1.2 Типичные сценарии применения
- Настройка производительности сервера
- Анализ производительности устройств хранения
- Диагностика узких мест системы
- Планирование ёмкости
2. Установка и основы использования
2.1 Способы установки
В большинстве дистрибутивов Linux iostat не устанавливается по умолчанию; сначала необходимо установить пакет sysstat:
Пример
sudo apt-get install sysstat
# CentOS/RHEL
sudo yum install sysstat
# Fedora
sudo dnf install sysstat
2.2 Базовый формат команды
Пример
Простой пример
Пример
iostat
# Обновлять каждые 2 секунды, отображать 5 раз всего
iostat 2 5
3. Подробные параметры команды
3.1 Общие параметры
| Опция | Описание |
|---|---|
| -c | Отображать только использование CPU |
| -d | Отображать только использование диска |
| -h | Отображать в удобочитаемом формате (например, KB, MB, GB) |
| -k | Отображать данные в KB |
| -m | Отображать данные в MB |
| -N | Показать имена сопоставления устройств |
| -p | Показать статистику для указанного устройства или раздела |
| -t | Показать временную метку |
| -x | Показать расширенную статистику |
| -y | Пропустить первый отчёт (обычно используется с интервалом) |
3.2 Дополнительные параметры
| Опция | Описание |
|---|---|
| -z | Не выводить данные для устройств с нулевой активностью |
| -j ID | Показать постоянные имена для указанных устройств |
| --dec={0|1|2} | Указать количество знаков после запятой |
4. Интерпретация результатов вывода
4.1 Раздел статистики CPU
avg-cpu: %user %nice %system %iowait %steal %idle
5.32 0.00 1.06 0.25 0.00 93.37
- %user: Использование CPU на уровне пользователя (приложения)
- %nice: Использование CPU процессами с изменённым приоритетом
- %system: Использование CPU на системном уровне (ядра)
- %iowait: Процент времени, в течение которого CPU ожидает завершения операций ввода-вывода
- %steal: «Украденное» время в виртуальных средах
- %idle: Процент времени простоя CPU
4.2 Раздел статистики диска (базовый)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.02 12.34 5.67 1234567 567890
- tps: Передач в секунду
- kB_read/s: Объём данных, прочитанных в секунду (KB)
- kB_wrtn/s: Объём данных, записываемых в секунду (KB)
- kB_read: Общий объём прочитанных данных (KB)
- kB_wrtn: Общий объём записанных данных (KB)
4.3 Расширенная статистика (опция -x)
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.00 0.50 1.00 0.50 12.00 4.00 21.33 0.02 10.00 8.00 14.00 6.00 0.90
- rrqm/s: Количество объединённых запросов на чтение в секунду
- wrqm/s: Количество объединённых запросов на запись в секунду
- r/s: Количество завершённых операций ввода-вывода на чтение в секунду
- w/s: Количество завершённых операций ввода-вывода на запись в секунду
- rkB/s: KB прочитано в секунду
- wkB/s: KB записано в секунду
- avgrq-sz: Средний размер данных на операцию ввода-вывода (sectors)
- avgqu-sz: Средняя длина очереди ввода-вывода
- await: Среднее время ожидания на операцию ввода-вывода (milliseconds)
- r_await: Среднее время ожидания для операций чтения (milliseconds)
- w_await: Среднее время ожидания для операций записи (миллисекунды)
- svctm: Среднее время обслуживания на одну операцию ввода-вывода (миллисекунды)
- %util: Процент использования пропускной способности устройства
5. Анализ практического примера
5.1 Мониторинг конкретного диска
Пример
iostat -d -x sda 2 3
5.2 Комплексный мониторинг CPU и диска
Пример
iostat -c -d -x -t 5
5.3 Отображение в MB
Пример
iostat -d -m
5.4 Мониторинг всех разделов
Пример
iostat -p ALL
6. Интерпретация показателей производительности и рекомендации по оптимизации
6.1 Ключевые показатели производительности
%util: Загрузка устройства
80% означает, что устройство приближается к насыщению
- Устойчивые 100% означают, что устройство стало узким местом
await: Время ожидания ввода-вывода
- Обычно должно быть < 10ms
50ms указывает на возможные проблемы с производительностью
avgqu-sz: Длина очереди
> 1 указывает, что устройство может быть перегружено
6.2 Диагностика типичных проблем
Проблема 1: Высокий %util, но низкая пропускная способность
- Возможная причина: Чрезмерный случайный ввод-вывод
- Решение: оптимизируйте шаблон ввода-вывода приложения, рассмотрите использование SSD
Проблема 2: Высокий await, но низкий %util
- Возможная причина: Узкое место контроллера или шины
- Решение: проверьте карту HBA или контроллер хранилища
Проблема 3: Аномально высокие rkB/s или wkB/s
- Возможная причина: Приложения выполняют интенсивное чтение/запись
- Решение: оптимизируйте приложение или увеличьте кэш
7. Интеграция с другими инструментами
7.1 Совместное использование с vmstat
Пример
vmstat 1 5 & iostat -x 1 5
7.2 Совместное использование с sar
Пример
sar -d
7.3 Совместное использование с iotop
Пример
iotop
8. Итоги и лучшие практики
8.1 Рекомендации по использованию
- При мониторинге производственной среды рекомендуется использовать параметр -x для получения подробных данных
- Для долгосрочного мониторинга используйте sar для сбора исторических данных
- При анализе проблем производительности обращайте внимание как на данные CPU, так и на данные I/O
- Сравнение статистики за разные периоды времени более осмысленно
8.2 Типовые комбинации команд
Пример
iostat -c -d -x -t -m 5
# Мониторинг только расширенной информации о диске
iostat -d -x 2
# Мониторинг конкретного раздела
iostat -p sda1 -x 1 10
Овладев командой iostat, системные администраторы могут эффективно отслеживать и анализировать производительность I/O в Linux-системах, а также своевременно выявлять и устранять узкие места производительности, связанные с хранилищем.
Другие расширения
Энциклопедия команд Linux