Инструменты для анализа производительности и отладки

Когда программа падает, "тормозит" или жрёт память, недостаточно print(). Нужны отладчик (пошаговое выполнение, точки останова), профайлер (где тратится CPU/RAM) и в продакшене — наблюдаемость (метрики, логи, трейсы).


Системные метрики (CPU, RAM, диск, сеть)

Инструмент Платформа Назначение
htop / btop Linux, macOS Интерактивный список процессов
vmstat, iostat, mpstat Linux (sysstat) Память, диск, CPU в CLI
dstat Linux Сводка ресурсов в одном окне
Process Explorer Windows Расширенный диспетчер задач
CrystalDiskMark Windows Тест скорости диска

Linux: трассировка и профилирование ядра

strace

Трассировка системных вызовов процесса — что реально спрашивает у ядра (файлы, сокеты).

strace -f -e open,read,write -p PID
strace -c ./myapp    # сводка по syscall

perf

Аппаратные счётчики CPU: циклы, cache miss, ветвления.

perf record -g ./myapp
perf report

eBPF / bpftrace

Динамическая трассировка без пересборки ядра; основа современных observability-агентов.


lsof

Какие файлы и сокеты открыты процессом: lsof -i :443.


sysdig

Объединяет идеи strace, tcpdump и метрик контейнеров.


Отладка C, C++, нативного кода

gdb (GNU Debugger)

gdb ./program
(gdb) break main
(gdb) run
(gdb) next
(gdb) print variable

LLDB

Отладчик LLVM; по умолчанию в Xcode, подходит для C/C++/Swift.


Valgrind

Динамический анализ: утечки памяти, обращения вне буфера (memcheck), гонки (helgrind).

valgrind --leak-check=full ./program

WinDbg

Отладка дампов и ядра Windows; расширения для .NET и native.


ProcDump (Sysinternals)

Снятие дампа по порогу CPU или при исключении.


.NET

Инструмент Описание
Visual Studio Diagnostic Tools CPU, память, события GC в IDE
dotTrace / dotMemory (JetBrains) Профилирование и heap (.NET)
PerfView (Microsoft) ETW-трассы, GC, JIT (Windows)

JVM (Java, Kotlin)

Инструмент Описание
JProfiler, YourKit Коммерческие профайлеры CPU/RAM
Java VisualVM, JConsole Входят в JDK / отдельно
Async Profiler Flame graphs с низким overhead
MAT (Eclipse) Анализ heap-дампов
JFR Flight Recorder в современных JDK

Python

# Стандартная библиотека
python -m cProfile -o stats.prof script.py

# Без остановки процесса
py-spy record -o profile.svg --pid PID

memory_profiler — построчное потребление RAM; Scalene — CPU/GPU/RAM по строкам.


Go

pprof встроен в runtime:

go test -cpuprofile=cpu.prof
go tool pprof cpu.prof

Сеть

Инструмент Назначение
tcpdump Захват пакетов в CLI
Wireshark Разбор pcap, фильтры display
Prometheus + node_exporter Метрики хоста и сервисов

Observability в продакшене

Компонент Роль
Prometheus Сбор и хранение метрик (pull)
Grafana Дашборды, алерты
OpenTelemetry Единый SDK для traces/metrics/logs
LTTng, SystemTap Низкоуровневая трассировка Linux
Netdata Быстрый локальный дашборд
Три сигнала

Метрики — "сколько и как быстро".

Логи — "что случилось".

Трейсы — "какой путь запроса через сервисы". Вместе они сокращают время поиска узкого места.


Веб и front-end

Инструмент Метрики
Chrome DevTools → Performance FPS, JS, layout, LCP
Firefox Profiler Смешанные стеки JS + native
Lighthouse Core Web Vitals, доступность

Нагрузочное тестирование

Связывает профилирование с нагрузкой: JMeter, k6, Gatling — см. тестирование.


Визуализация профилей

Flame graph (Brendan Gregg) — иерархия стеков: ширина = доля времени. Строится из вывода perf, py-spy, Async Profiler, pprof.


Мобильные платформы

Инструмент Платформа
Xcode Instruments iOS, macOS
Android Profiler Android Studio
Intel VTune / AMD uProf Низкоуровневый CPU (x86)

См. также