Перейти к содержанию

Глава 4: Анализ дискового I/O

Обзор

Дисковый I/O часто является узким местом, маскирующимся под другие проблемы. DiskCollector использует двухточечное сэмплирование /proc/diskstats и обогащает данные из sysfs.

Функции

Функция Что делает Источник
readDiskStats() Парсит счётчики I/O по устройствам (14+ полей) /proc/diskstats
readScheduler() Читает активный планировщик I/O /sys/block/DEV/queue/scheduler
readQueueDepth() Максимальная глубина очереди I/O /sys/block/DEV/queue/nr_requests

Анализ задержек (Tier 2)

Среднее время ответа (await) из /proc/diskstats часто вводит в заблуждение при смешанной нагрузке.

biolatency

Строит гистограмму задержек ввода-вывода. - Позволяет увидеть хвостовые задержки (p99). - Пример: Среднее 2мс, но p99 = 50мс (фризы).

ext4slower / fileslower

Показывает конкретные операции с файлами, которые заняли больше 10мс. - Видно: PID, имя файла, тип операции (READ/WRITE). - Помогает найти, какой файл тормозит систему.

biosnoop

Трассирует каждый I/O запрос. Внимание: генерирует много вывода!

Конвенция 512-байт секторов

Независимо от реального размера сектора диска (512 или 4096 байт), /proc/diskstats всегда считает в 512-байтных секторах.

I/O планировщики

Планировщик Лучше для Как работает
mq-deadline Базы данных, общее Гарантирует макс. задержку запроса
bfq Десктопы Справедливое разделение полосы
kyber Быстрые SSD Минимальные накладные расходы
none NVMe Без планирования, прямая отправка

Ключевые метрики

Метрика Значение
IOTimeMs / 10 Утилизация (%)
IOInProgress > 8 Насыщение очереди
WeightedIOMs Задержка × глубина

Далее: Глава 5 — Анализ сети