Когда сервис внезапно начинает отвечать медленнее, а CPU и сеть выглядят нормально — почти всегда стоит проверить I/O.
iostat показывает реальную картину: latency, очередь, загрузку устройства и фактический поток операций.Проверка в реальном времени (обновление каждую секунду):
iostat -xz 1
Ключевые метрики:
await — средняя задержка операции.
На SSD всё, что выше 10–15 мс, уже красный флаг.
util — занятость устройства (%).
100% = диск работает на полном пределе, очередь растёт.
rMB/s / wMB/s — фактический throughput.
Позволяет понять, упираетесь ли в предел устройства (особенно важно для HDD и VM с IOPS-лимитами).
svctm — время обслуживания диском (мс).
Метрика устарела и может отсутствовать; если есть, сравнение await с svctm помогает понять, проблема в очереди или в самом диске.
Посмотреть, кто именно создаёт нагрузку:
sudo iotop -oPa
Флаги
-oPa показывают только процессы, реально генерирующие I/O, и отображают накопленную статистику за время работы утилиты — удобно, когда нагрузка пульсирует.Проверить, не закончились ли место или
inode:df -h
df -i
Это не про I/O-производительность напрямую, но часто объясняет “внезапные” подвисания записи.
Проверить сообщения ядра о проблемах со
storage:sudo journalctl -k | grep -Ei 'i/o|nvme|blk'
🔥
iostat — быстрый способ отделить проблемы приложения от проблем диска. Если await растёт, а util стремится к 100% — это почти всегда I/O bottleneck, а не код.🚪 Linux Ready | #практика