Команда Linux iostat

Linux 命令大全Энциклопедия команд Linux


1. Обзор команды iostat

iostat (статистика ввода-вывода) — мощный инструмент мониторинга производительности в системах Linux, входящий в пакет sysstat. Он в основном используется для мониторинга активности дискового ввода-вывода системы и загрузки ЦП.

1.1 Основные функции

  • Мониторинг скорости чтения/записи дискового ввода-вывода системы
  • Просмотр загрузки ЦП
  • Сводка нагрузки устройств
  • Выявление узких мест производительности I/O

1.2 Типичные сценарии применения

  • Настройка производительности сервера
  • Анализ производительности устройств хранения
  • Диагностика узких мест системы
  • Планирование ёмкости

2. Установка и основы использования

2.1 Способы установки

В большинстве дистрибутивов Linux iostat не устанавливается по умолчанию; сначала необходимо установить пакет sysstat:

Пример

# Ubuntu/Debian
sudo apt-get install sysstat

# CentOS/RHEL
sudo yum install sysstat

# Fedora
sudo dnf install sysstat

2.2 Базовый формат команды

Пример

iostat [Параметры] [Интервал] [Количество]

Простой пример

Пример

# Отобразить статистику для всех устройств один раз
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 Мониторинг конкретного диска

Пример

# Мониторинг диска sda, обновление каждые 2 секунды, отображать 3 раза всего
iostat -d -x sda 2 3

5.2 Комплексный мониторинг CPU и диска

Пример

# Мониторинг CPU и диска, обновление каждые 5 секунд, отображать непрерывно
iostat -c -d -x -t 5

5.3 Отображение в MB

Пример

# Отображение статистики диска в MB
iostat -d -m

5.4 Мониторинг всех разделов

Пример

# Отслеживать все разделы, включая LVM
iostat -p ALL

6. Интерпретация показателей производительности и рекомендации по оптимизации

6.1 Ключевые показатели производительности

  1. %util: Загрузка устройства

    • 80% означает, что устройство приближается к насыщению

    • Устойчивые 100% означают, что устройство стало узким местом
  2. await: Время ожидания ввода-вывода

    • Обычно должно быть < 10ms
    • 50ms указывает на возможные проблемы с производительностью

  3. 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 Рекомендации по использованию

  1. При мониторинге производственной среды рекомендуется использовать параметр -x для получения подробных данных
  2. Для долгосрочного мониторинга используйте sar для сбора исторических данных
  3. При анализе проблем производительности обращайте внимание как на данные CPU, так и на данные I/O
  4. Сравнение статистики за разные периоды времени более осмысленно

8.2 Типовые комбинации команд

Пример

# Команда комплексного мониторинга
iostat -c -d -x -t -m 5

# Мониторинг только расширенной информации о диске
iostat -d -x 2

# Мониторинг конкретного раздела
iostat -p sda1 -x 1 10

Овладев командой iostat, системные администраторы могут эффективно отслеживать и анализировать производительность I/O в Linux-системах, а также своевременно выявлять и устранять узкие места производительности, связанные с хранилищем.

Linux 命令大全Энциклопедия команд Linux

Другие расширения