Библиотека — Linux — средства диагностики производительности (редакция 2026) [X]
Шифр
linux-perf-tools
Разделы
linux tooling
Сверено
1 сентября — в этот день утверждения статьи сверялись с первоисточниками, а не правился текст
Объём
10 090 знаков · 12 разделов · чтения около 10 минут

Linux — средства диагностики производительности (редакция 2026)


На основе диаграммы Брендана Грегга (2021).
Дополнено инструментами eBPF, cgroup v2, контейнерной и GPU-диагностики.
🟢 Новое 2022–2026 · 🔴 Устаревает


Оглавление

Архитектура и обзор

  • Архитектура
  • Что изменилось с 2021

Userspace

  • Приложения и системные вызовы · tldr

Ядро — путь хранения

  • Файловые системы и хранение · tldr

Ядро — сетевой путь

  • Сетевой стек · tldr

Ядро — вычисления

  • CPU и планировщик · tldr
  • Память · tldr

Оборудование

  • Оборудование (CPU, GPU, энергопотребление) · tldr

Сквозные

  • Фреймворки трассировки · tldr
  • cgroup v2 / Контейнеры / Kubernetes · tldr

Архитектура

Userspace: Приложения → системные библиотеки → интерфейс системных вызовов

Подсистемы ядра (три основных пути от системных вызовов):

  • Хранение: VFS → файловые системы → менеджер томов → блочные устройства → драйверы
  • Сеть: сокеты → TCP/UDP → IP/XDP → сетевые устройства → драйверы
  • Вычисления: планировщик → CPU; виртуальная память → DRAM

Сквозные компоненты (новые с 2021):

  • cgroup v2 / PSI 🟢 — учёт ресурсов и мониторинг дефицита (какую долю времени задачи ждут CPU, память или I/O)
  • eBPF VM 🟢 — динамическая инструментация всех уровней ядра
  • GPU 🟢 — полноценный наблюдаемый ресурс наряду с CPU и DRAM

Приложения и системные вызовы

Инструмент Статус Назначение
strace ⚪ Трассировка системных вызовов процесса
ltrace ⚪ Трассировка вызовов библиотек
perf trace ⚪ Низкоуровневая трассировка syscall через perf
opensnoop ⚪ Трассировка открытия файлов (eBPF)
execsnoop ⚪ Трассировка запуска новых процессов
eStrace 🟢 Замена strace на eBPF, меньший оверхед

📖 Справочник команд: приложения и syscall


Файловые системы и хранение

Инструмент Статус Назначение
lsof ⚪ Список открытых файлов
fatrace ⚪ Активность файловой системы (fanotify)
filelife ⚪ Время жизни файлов
pcstat ⚪ Статистика page cache
ext4dist / ext4slower ⚪ Распределение задержек ext4 / медленные операции (также btrfs, xfs, zfs, nfs)
iostat ⚪ Статистика I/O блочных устройств
biosnoop ⚪ Трассировка блочного I/O (eBPF)
biolatency ⚪ Распределение задержек блочного I/O
biotop ⚪ Топ блочного I/O по процессам
blktrace ⚪ Трассировщик блочного уровня
nvme-cli 🟢 Задержки NVMe + мониторинг SMART

📖 Справочник команд: хранение


Сетевой стек

Инструмент Статус Назначение
ss ⚪ Статистика сокетов (замена netstat)
nstat ⚪ Счётчики сетевой статистики
gethostlatency ⚪ Задержки DNS-запросов
tcplife ⚪ Время жизни TCP-соединений
tcpretrans ⚪ Повторные передачи TCP
udpconnect ⚪ Трассировка UDP-соединений
tcpdump ⚪ Захват пакетов
ip ⚪ Конфигурация и статистика сети (iproute2)
nicstat ⚪ Статистика сетевых интерфейсов
ethtool ⚪ Настройки драйвера NIC
lldptool ⚪ Обнаружение LLDP
pwru 🟢 eBPF-трассировка пути пакета через ядро
retis 🟢 Трассировка через netfilter / TC / XDP

📖 Справочник команд: сеть


CPU и планировщик

Инструмент Статус Назначение
mpstat ⚪ Утилизация по каждому CPU
runqlen ⚪ Длина очереди планировщика
offcputime ⚪ Анализ off-CPU времени
profile ⚪ Профилирование CPU / flame graphs
softirqs ⚪ Время на программные прерывания
hardirqs ⚪ Время на аппаратные прерывания
criticalstat ⚪ Задержки критических секций
top / atop / htop ⚪ Мониторинг процессов
ps / pidstat ⚪ Снимок процессов / статистика по PID
sched_ext 🟢 Подключаемые BPF-планировщики (kernel 6.12+): scx_rusty, scx_lavd
scx_stats 🟢 Интроспекция sched_ext через /sys/kernel/sched_ext/

📖 Справочник команд: CPU и планировщик


Память

Инструмент Статус Назначение
vmstat ⚪ Статистика VM: подкачка, свопинг
slabtop ⚪ Статистика slab-аллокатора ядра
free ⚪ Сводка использования памяти
numastat ⚪ Статистика распределения памяти NUMA

📖 Справочник команд: память


Оборудование

Инструмент Статус Назначение
turbostat ⚪ Частоты CPU, C-states, энергопотребление
rdmsr ⚪ Чтение MSR-регистров
tiptop ⚪ IPC, cache-miss, branch-miss по процессам
powercap / RAPL 🟢 Мониторинг энергопотребления Intel RAPL
amd-pstate 🟢 Драйвер управления частотой AMD
nvidia-smi 🟢 GPU NVIDIA: утилизация, память, температура
intel_gpu_top 🟢 Мониторинг GPU Intel
rocm-smi 🟢 Мониторинг GPU AMD (ROCm)

📖 Справочник команд: оборудование


Фреймворки трассировки

Инструмент Статус Назначение
perf ⚪ Профилировщик: семплирование, tracepoints, kprobes
Ftrace ⚪ Трассировщик функций ядра
bpftrace ⚪ Высокоуровневый язык eBPF-трассировки
bpftool 🟢 Управление BPF-программами, картами, ссылками
libbpf-tools 🟢 CO-RE инструменты, замена BCC
BCC 🔴 Python BPF toolkit — предпочтительнее libbpf-tools или bpftrace
LTTng 🔴 Трассировщик userspace — теряет актуальность в пользу eBPF
sar ⚪ Репортер системной активности
/proc /sys ⚪ Файловые системы proc и sys
dmesg ⚪ Кольцевой буфер ядра
dstat ⚪ Универсальная системная статистика

📖 Справочник команд: трассировка


cgroup v2 / Контейнеры / Kubernetes

Этот раздел полностью отсутствует на диаграмме 2021 года — главный пробел оригинала.

cgroup v2 / PSI

Инструмент Статус Назначение
systemd-cgtop 🟢 Top-подобный вид использования ресурсов по cgroup
/proc/pressure/* 🟢 PSI: доля времени простоя задач из-за нехватки CPU, памяти, I/O — по cgroup
/sys/fs/cgroup/ 🟢 sysfs cgroup v2: cpu.stat, memory.stat, io.stat

Среда выполнения контейнеров

Инструмент Статус Назначение
docker stats 🟢 CPU, память, сеть, блочный I/O по контейнерам
podman stats 🟢 Статистика контейнеров (без демона)
cAdvisor 🟢 Метрики по контейнерам, экспорт в Prometheus
crictl stats 🟢 Статистика CRI-совместимых рантаймов

Observability в Kubernetes

Инструмент Статус Назначение
kubectl top 🟢 Метрики ресурсов узлов и подов
Tetragon 🟢 eBPF security и observability (Cilium)
Inspektor Gadget 🟢 eBPF-гаджеты для отладки K8s
Hubble 🟢 eBPF сетевая observability (Cilium)
Kepler 🟢 Энергопотребление K8s (RAPL + GPU)

Security observability

Инструмент Статус Назначение
Falco (eBPF) 🟢 Обнаружение угроз в рантайме (CNCF)
Tracee 🟢 Безопасность рантайма через eBPF
KubeArmor 🟢 eBPF-фреймворк аудита

Непрерывное профилирование

Инструмент Статус Назначение
Parca 🟢 eBPF непрерывное профилирование, flame graphs на весь парк
Pyroscope 🟢 Непрерывное профилирование (Grafana)
async-profiler 🟢 Асинхронный профилировщик JVM

📖 Справочник команд: контейнеры и Kubernetes


Что изменилось с 2021

Область Ключевые добавления Ключевые сдвиги
eBPF bpftool, libbpf-tools BCC → libbpf CO-RE; LTTng теряет актуальность
Планировщик sched_ext, scx_stats Подключаемые BPF-планировщики (kernel 6.12+)
Сеть pwru, retis eBPF-трассировка пакетов через весь путь в ядре
Оборудование powercap, amd-pstate, GPU Energy-aware computing; GPU как первоклассный ресурс
Контейнеры cgroup v2, PSI, cAdvisor, crictl cgroup v2 по умолчанию; PSI показывает долю времени простоя задач из-за нехватки CPU, памяти или I/O
Kubernetes Tetragon, Inspektor Gadget, Hubble, Kepler eBPF-native observability в K8s
Безопасность Falco, Tracee, KubeArmor eBPF runtime security как стандартная практика
Профилирование Parca, Pyroscope Непрерывное профилирование вместо ad-hoc семплирования

Оригинал: brendangregg.com/linuxperf.html (2021)


Связанные заметки

Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.

Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.