На основе диаграммы Брендана Грегга (2021).
Дополнено инструментами eBPF, cgroup v2, контейнерной и GPU-диагностики.
🟢 Новое 2022–2026 · 🔴 Устаревает
Оглавление
Архитектура и обзор
- Архитектура
- Что изменилось с 2021
Userspace
- Приложения и системные вызовы · tldr
Ядро — путь хранения
- Файловые системы и хранение · tldr
Ядро — сетевой путь
- Сетевой стек · tldr
Ядро — вычисления
Оборудование
- Оборудование (CPU, GPU, энергопотребление) · 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)
Связанные заметки
- Linux — мониторинг и отладка — методология USE, journalctl, perf и eBPF
- Linux — сводный cheatsheet — сводная шпаргалка по всему циклу
- FreeBSD — мониторинг и отладка — аналогичный набор инструментов во FreeBSD
- SATA, SAS и NVMe — слой ниже блочного: где искать потолок, если упёрлись не в диск, а в подключение
- Наблюдаемость: Prometheus, node_exporter, Grafana, Loki — слой, который показывает следствие; причину ищут инструментами отсюда
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.