🐧 Linux может показать, какие процессы действительно тормозят диск, даже если iostat н...
🐧 Linux может показать, какие процессы действительно тормозят диск, даже если iostat не объясняет задержки 👁 Высокая загрузка диска не всегда означает, что именно диск стал узким местом. Процессы могут надолго зависать в ожидании ввода-вывода, а средняя загрузка устройства не показывает, какие задачи испытывают задержки и как это отражается на системе. Для диагностики пригодятся PSI и трассировка блочного ввода-вывода. 📝 Проверяем давление из-за дисковых операций: PSI показывает, сколько времени задачи теряют из-за ожидания ресурсов. Файл io позволяет быстро проверить, есть ли заметное давление ввода-вывода. cat /proc/pressure/io watch -n 1 cat /proc/pressure/io 📝 Находим процессы с накопленным временем ожидания I/O: В /proc/PID/stat поле 42 — delayacct_blkio_ticks — содержит задержку процесса из-за блочного ввода-вывода в тактах ядра, если доступен соответствующий учёт задержек. Для быстрой диагностики можно посмотреть это значение у процессов с большим временем ожидания. sudo bash -c ' for f in /proc/[0-9]*/stat; do [ -r "$f" ] || continue read -r line < "$f" || continue rest=${line##*) } set -- $rest delay=${40} pid=${f#/proc/} pid=${pid%/stat} printf "%12s %s\n" "$delay" "$pid" done ' | sort -nr | head 📝 Записываем реальные задержки блочных запросов: Если установлен bpftrace, можно посмотреть распределение времени выполнения операций на блочном уровне. Это помогает понять, возникают ли отдельные долгие запросы, которые теряются в средних показателях. sudo bpftrace -e ' tracepoint:block:block_rq_issue { @start[args->dev, args->sector] = nsecs; } tracepoint:block:block_rq_complete { $key = (args->dev, args->sector); if (@start[$key]) { @latency_ms = hist((nsecs - @start[$key]) / 1000000); delete(@start[$key]); } }' ❗️ Главное: PSI быстро показывает влияние I/O на задачи, а трассировка помогает исследовать задержки на уровне блочных запросов. Учитывайте, что доступность полей /proc зависит от конфигурации ядра, а привязка запросов по устройству и сектору в упрощённом BPF-примере не является надёжным способом сопоставления всех операций на нагруженном устройстве. tags: #linux #производительность 🧭 @recura_tech