lsof
Список открытых файлов (включая сокеты, pipe, устройства).
# Все открытые файлы процесса
lsof -p 1234
# Кто держит файл/каталог открытым
lsof /var/log/syslog
# Все сетевые соединения процесса (-a обязателен: без него условия объединяются по ИЛИ)
lsof -a -i -p 1234
# Кто слушает на порту 8080
lsof -i :8080
# Удалённые, но не освобождённые файлы (частая причина «кончилось место»)
lsof +L1
fatrace
Мониторинг активности файловой системы через fanotify (ядерный механизм, низкий оверхед).
# Все файловые события в системе
fatrace
# Только записи, с таймштампами
fatrace -f W -t
# Только та ФС, на которой лежит текущий каталог (-c не принимает путь)
cd /data && fatrace -c
# Остановить через 10 секунд
fatrace -s 10
filelife
eBPF: время жизни файлов — от создания до удаления. Полезно для выявления tmp-спама.
# Все короткоживущие файлы в системе
filelife
# Только для конкретного PID
filelife -p 1234
pcstat
Показывает, какая доля файла находится в page cache. Диагностика cache hit/miss.
# Проверить кэширование конкретного файла
pcstat /var/lib/mysql/ibdata1
# Проверить все .db файлы в каталоге
pcstat /data/*.db
ext4dist / ext4slower
eBPF: распределение задержек и медленные операции ext4. Аналоги есть для btrfs, xfs, zfs, nfs.
# Гистограмма задержек ext4 (read, write, open, fsync) за 10 секунд
ext4dist 10
# Операции ext4 медленнее 10 мс
ext4slower 10
# Аналог для XFS
xfsdist 10
xfsslower 10
# Аналог для NFS — полезно для диагностики сетевых FS
nfsslower 10
iostat
Классическая статистика I/O блочных устройств. Первый инструмент при подозрении на I/O bottleneck.
# Расширенная статистика, обновление каждую секунду
iostat -xz 1
# Только конкретное устройство
iostat -xz -d nvme0n1 1
# Вывод в мегабайтах, 5 итераций
iostat -xm 1 5
Ключевые колонки: %util (насыщенность), await (средняя задержка), r_await/w_await (read/write задержки), aqu-sz (средняя длина очереди).
biosnoop
eBPF: трассировка каждого блочного I/O запроса с PID, задержкой и секторами.
# Все блочные I/O операции в реальном времени
biosnoop
# Только для конкретного диска
biosnoop -d nvme0n1
# Со временем ожидания в очереди ОС (фильтра по задержке у biosnoop нет)
biosnoop -Q
biolatency
eBPF: гистограмма задержек блочного I/O. Показывает распределение, а не средние.
# Гистограмма задержек, интервал 1 секунда
biolatency 1
# С разбивкой по дискам
biolatency -D 1
# В миллисекундах (по умолчанию — микросекунды)
biolatency -m 1
# С разбивкой по флагам (read/write/sync/async)
biolatency -F 1
biotop
eBPF: top-подобный вид блочного I/O по процессам.
# Обновление каждую секунду (интерактивный)
biotop 1
# 5 итераций, потом выход
biotop 1 5
blktrace
Детальная трассировка блочного уровня. Тяжёлый, но даёт полную картину I/O pipeline.
# Запись трассировки устройства (Ctrl+C для остановки)
blktrace -d /dev/nvme0n1 -o trace
# Анализ записанной трассировки
blkparse -i trace | head -50
# Быстрый вариант: трассировка + парсинг в одну команду
btrace /dev/nvme0n1
nvme-cli 🟢
Управление и диагностика NVMe-устройств. SMART, задержки, firmware.
# Список NVMe-устройств
nvme list
# SMART-лог (здоровье, температура, износ)
nvme smart-log /dev/nvme0n1
# Лог ошибок
nvme error-log /dev/nvme0n1
# Информация о контроллере (модель, firmware, возможности)
nvme id-ctrl /dev/nvme0n1
# Проверка задержек через self-test (неразрушающий)
nvme device-self-test /dev/nvme0n1 -s 1
Связанные заметки
- Linux — средства диагностики производительности — обзорная карта инструментов
- Linux — файловые системы: ext4, XFS, Btrfs, LVM — устройство ФС и томов
- Linux — справочник команд: память — page cache и dirty writeback
- SATA, SAS и NVMe — что за интерфейс под блочным устройством и почему у него такая глубина очереди
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.