Ответ
Iowait (или %wa) — это метрика в Linux, которая показывает процент времени, в течение которого центральный процессор (CPU) был простаивал в состоянии ожидания, потому что все готовые к выполнению процессы ожидали завершения операций ввода-вывода (I/O) — обычно с диском или сетью.
Важное уточнение: Высокий iowait не означает, что CPU занят работой с I/O. Он означает, что CPU мог бы работать, но ему нечего делать, так как задачи застряли в ожидании медленных подсистем.
Диагностика и анализ (практика DevOps/SRE):
-
Первичный осмотр:
top # В строке '%Cpu(s):' смотрим на значение 'wa' # Или используем утилиту, показывающую историю: sar -u 1 3 # Статистика каждую секунду, 3 раза -
Определение виновника: Высокий iowait требует анализа дисков и файловой системы.
# Показывает нагрузку на конкретные блочные устройства iostat -x 1 # Ключевые колонки: # 'await' - среднее время ответа диска (мс). Высокое = проблема. # '%util' - процент использования устройства. >80-90% - узкое место. # Поиск процессов, создающих I/O нагрузку iotop -
Типичные причины и действия:
- Медленный диск/перегруженное хранилище: Проверить
iostat, latency хранилища (например, в облаке). Рассмотреть переход на SSD или увеличение IOPS. - Нехватка оперативной памяти (OOM, активный swap):
free -h vmstat 1 # Если 'si' (swap in) и 'so' (swap out) > 0 постоянно, система активно свопирует.Решение: Увеличить RAM, оптимизировать приложение, настроить
vm.swappiness. - Неоптимальные запросы к БД: Полносканирующие запросы без индексов. Требуется анализ slow-логов БД.
- Синхронная запись логов: Приложение пишет логи синхронно на диск. Решение: буферизация или асинхронная запись.
- Медленный диск/перегруженное хранилище: Проверить
Для DevOps: Мониторинг iowait — ключевой индикатор здоровья инфраструктуры. Высокое значение часто коррелирует с повышенной latency приложений и является сигналом для углубленного расследования.