Linuxlab

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. Для доступа к счётчикам нужны привилегии, которых в песочнице нет.

В книге

Подробно эта тема разобрана в главе Глубокая диагностика производительности.

См. также

Команда vmstat, Средняя нагрузка, Трассировка: strace.