Что такое iowait в статистике процессора Linux?

«Что такое iowait в статистике процессора Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Iowait (или %wa) — это метрика в Linux, которая показывает процент времени, в течение которого центральный процессор (CPU) был простаивал в состоянии ожидания, потому что все готовые к выполнению процессы ожидали завершения операций ввода-вывода (I/O) — обычно с диском или сетью.

Важное уточнение: Высокий iowait не означает, что CPU занят работой с I/O. Он означает, что CPU мог бы работать, но ему нечего делать, так как задачи застряли в ожидании медленных подсистем.

Диагностика и анализ (практика DevOps/SRE):

  1. Первичный осмотр:

    top
    # В строке '%Cpu(s):' смотрим на значение 'wa'
    # Или используем утилиту, показывающую историю:
    sar -u 1 3  # Статистика каждую секунду, 3 раза
  2. Определение виновника: Высокий iowait требует анализа дисков и файловой системы.

    # Показывает нагрузку на конкретные блочные устройства
    iostat -x 1
    # Ключевые колонки:
    #   'await' - среднее время ответа диска (мс). Высокое = проблема.
    #   '%util' - процент использования устройства. >80-90% - узкое место.
    
    # Поиск процессов, создающих I/O нагрузку
    iotop
  3. Типичные причины и действия:

    • Медленный диск/перегруженное хранилище: Проверить iostat, latency хранилища (например, в облаке). Рассмотреть переход на SSD или увеличение IOPS.
    • Нехватка оперативной памяти (OOM, активный swap):
      free -h
      vmstat 1
      # Если 'si' (swap in) и 'so' (swap out) > 0 постоянно, система активно свопирует.

      Решение: Увеличить RAM, оптимизировать приложение, настроить vm.swappiness.

    • Неоптимальные запросы к БД: Полносканирующие запросы без индексов. Требуется анализ slow-логов БД.
    • Синхронная запись логов: Приложение пишет логи синхронно на диск. Решение: буферизация или асинхронная запись.

Для DevOps: Мониторинг iowait — ключевой индикатор здоровья инфраструктуры. Высокое значение часто коррелирует с повышенной latency приложений и является сигналом для углубленного расследования.