---
tags: [linux, tooling]
verified: 2026-09-01
---

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

> На основе [диаграммы Брендана Грегга](http://www.brendangregg.com/linuxperf.html) (2021).  
> Дополнено инструментами eBPF, cgroup v2, контейнерной и GPU-диагностики.  
> 🟢 Новое 2022–2026 · 🔴 Устаревает

---

## Оглавление

**Архитектура и обзор**
- [Архитектура](#архитектура)
- [Что изменилось с 2021](#что-изменилось-с-2021)

**Userspace**
- [Приложения и системные вызовы](#приложения-и-системные-вызовы) · [tldr](./linux-tldr-syscall.md)

**Ядро — путь хранения**
- [Файловые системы и хранение](#файловые-системы-и-хранение) · [tldr](./linux-tldr-storage.md)

**Ядро — сетевой путь**
- [Сетевой стек](#сетевой-стек) · [tldr](./linux-tldr-network.md)

**Ядро — вычисления**
- [CPU и планировщик](#cpu-и-планировщик) · [tldr](./linux-tldr-cpu-scheduler.md)
- [Память](#память) · [tldr](./linux-tldr-memory.md)

**Оборудование**
- [Оборудование (CPU, GPU, энергопотребление)](#оборудование) · [tldr](./linux-tldr-hardware.md)

**Сквозные**
- [Фреймворки трассировки](#фреймворки-трассировки) · [tldr](./linux-tldr-tracing.md)
- [cgroup v2 / Контейнеры / Kubernetes](#cgroup-v2--контейнеры--kubernetes) · [tldr](./linux-tldr-containers-k8s.md)

---

## Архитектура

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](./linux-tldr-syscall.md)

---

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

| Инструмент | Статус | Назначение |
|------------|--------|------------|
| `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 |

📖 [Справочник команд: хранение](./linux-tldr-storage.md)

---

## Сетевой стек

| Инструмент | Статус | Назначение |
|------------|--------|------------|
| `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 |

📖 [Справочник команд: сеть](./linux-tldr-network.md)

---

## 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 и планировщик](./linux-tldr-cpu-scheduler.md)

---

## Память

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

📖 [Справочник команд: память](./linux-tldr-memory.md)

---

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

| Инструмент | Статус | Назначение |
|------------|--------|------------|
| `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) |

📖 [Справочник команд: оборудование](./linux-tldr-hardware.md)

---

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

| Инструмент | Статус | Назначение |
|------------|--------|------------|
| `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` | ⚪ | Универсальная системная статистика |

📖 [Справочник команд: трассировка](./linux-tldr-tracing.md)

---

## 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](./linux-tldr-containers-k8s.md)

---

## Что изменилось с 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](http://www.brendangregg.com/linuxperf.html) (2021)*

---

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

- [Linux — мониторинг и отладка](./linux-monitoring-debugging.md) — методология USE, journalctl, perf и eBPF
- [Linux — сводный cheatsheet](./linux-map-cheatsheet.md) — сводная шпаргалка по всему циклу
- [FreeBSD — мониторинг и отладка](./freebsd-monitoring-debugging.md) — аналогичный набор инструментов во FreeBSD
- [SATA, SAS и NVMe](./storage-interfaces.md) — слой ниже блочного: где искать потолок, если упёрлись не в диск, а в подключение
- [Наблюдаемость: Prometheus, node_exporter, Grafana, Loki](./observability-stack.md) — слой, который показывает следствие; причину ищут инструментами отсюда
