perf в Linux: профилирование производительности
Обновлено 3 июля 2026 г.
perf показывает, на что уходит процессорное время: какие функции в программе или ядре выполняются чаще всего.
Синтаксис
perf ПОДКОМАНДА [опции]Частые случаи
perf stat ./app # сводка: такты, кэш-промахи, ветвления
perf top # живой топ горячих функций в системе
perf record ./app # записать профиль в perf.data
perf report # разобрать запись по функциям
perf record -g ./app # -g собрать стеки вызововКак это устроено: выборка, а не подсчёт каждого шага
perfне считает каждую инструкцию - это было бы слишком дорого. Он работает выборкой: много раз в секунду прерывает процессор и записывает, какая функция сейчас выполняется. Чем чаще функция попадается, тем больше времени она ест. Из этих выборок собирается профиль: где «горячо».perfопирается на счётчики производительности самого процессора, поэтому видит и кэш-промахи, и ветвления. Из его записей со стеками (-g) строят наглядные flame graph. Для доступа к счётчикам нужны привилегии, которых в песочнице нет.
В книге
Подробно эта тема разобрана в главе Глубокая диагностика производительности.