Урок 26: perf, флеймграфы и итоговый проект (Capstone) — TCP echo-сервер
perf — это стандартный инструмент профилирования в Linux: он измеряет циклы CPU, промахи кэша, ошибки предсказания переходов и системные вызовы. Флеймграфы превращают его вывод в наглядную визуализацию. В итоговом разделе (capstone) мы создаём многопоточный TCP echo-сервер на C++, объединяющий все к
perf похож на врача, слушающего сердцебиение программы: он снимает выборки того, чем занят CPU, каждые несколько микросекунд и показывает, где тратится время.
- perf stat
- Режим perf, который запускает программу и сообщает базовые метрики производительности: cycles, instructions, cache-misses, branch-misses, context-switches. Быстрый инструмент диагностики.
- perf record
- Режим perf, который снимает выборки стека вызовов программы и сохраняет их в perf.data. Затем используется с perf report или flamegraph.
- флеймграф
- Визуализация профиля CPU: ось X = время CPU (ширина = стоимость), ось Y = глубина стека вызовов. Каждый прямоугольник = функция. Широкие вершины = горячие точки.
- IPC (Instructions Per Cycle)
- Метрика эффективности CPU: сколько инструкций выполняется в среднем за такт. IPC < 1 сигнализирует о простоях конвейера (memory bound). IPC ≈ 3-4 для хорошо оптимизированного кода.
- итоговый проект (Capstone)
- Проект, объединяющий несколько тем, изученных в курсе. В этом уроке: многопоточный TCP echo-сервер на C++, использующий sockets, threads, mutexes и epoll.