Установка и использование perf на CentOS 8

Perf — это инструмент анализа производительности в Linux. Он предлагает набор подкоманд для статистического профилирования всей системы, поддерживает tracepoints, программные и аппаратные счётчики производительности, а также динамические пробки (dynamic probes). Perf полезен для решения сложных задач производительности и устранения неполадок.
Что понадобится
- Сервер под управлением CentOS 8.
- Доступ под root или права sudo.
Важно: для анализа с символами ядра и приложений может потребоваться пакет с отладочными символами (kernel-debuginfo) и доступ к соответствующим репозиториям.
Установка perf
Пакет perf доступен в стандартном репозитории CentOS 8. Установите его командой:
dnf install perf -yПосле установки можно вывести список подкоманд perf:
perf --helpВы увидите перечисление доступных подкоманд и опций.

Perf stat — базовая статистика для команды
perf stat запускает указанную команду и собирает статистику её выполнения (количество тактов CPU, кэш-промахи, вызовы и т. п.).
Показать список предопределённых событий в системе можно так:
perf list stat
Пример: собрать статистику для команды free -m:
perf stat free -mРезультат покажет суммарные счётчики для выполнения команды (время, CPU cycles, instructions и т.д.).

Совет: используйте perf stat для быстрого сравнения двух реализаций или изменений конфигурации (A/B), оценивая относительное изменение счётчиков.
Perf top — интерактивный сэмплинг в реальном времени
perf top генерирует профиль счётчиков производительности в реальном времени и похож по духу на top/htop, но с фокусом на функции/символы, потребляющие CPU.
Посмотреть все известные типы событий:
perf top -a
Показать только события, связанные с cpu-clock:
perf top -e cpu-clock
Когда использовать: для поиска «горячих» функций или модулей в работающей системе. Это быстрый способ увидеть, где тратится время CPU.
Perf record и perf report — запись и анализ профиля
perf record запускает команду и сохраняет профиль в файл perf.data в текущей директории:
perf record df -h
Затем perf report анализирует этот файл и генерирует плоский или графовый профиль:
perf report
perf report полезен для детального разбора, какие функции и строки кода потребляли ресурсы во время записи.
Краткая методика быстрого профилирования (mini-методология)
- Сформулируйте гипотезу (что именно медленнее или вызывает нагрузку).
- Соберите базовую метрику: perf stat <команда> и системные метрики (top, vmstat).
- Запустите perf record для реплицируемого сценария работы приложения.
- Проанализируйте perf report, найдите горячие пути.
- Внесите изменение, повторите шаги 2–4 для валидации.
Роли и контрольные списки
Системный администратор:
- Установить perf и проверить версию.
- Проверить права (perf_event) и значение perf_event_paranoid.
- Собрать системную статистику и отчёт.
Разработчик:
- Запустить perf record для локального теста.
- Проанализировать отчёт и сопоставить со строками кода.
- Протестировать оптимизацию и регистрировать изменения.
SRE/инженер по производительности:
- Сравнить профили до и после изменений.
- Автоматизировать сбор профилей в тестовом окружении.
Когда perf не показывает ожидаемых данных — частые причины
- Ограничения прав: проверьте значение /proc/sys/kernel/perf_event_paranoid. Для записи системных профилей иногда требуется 0 или -1.
cat /proc/sys/kernel/perf_event_paranoid- Отсутствие отладочных символов: для читаемых имен функций может потребоваться пакет kernel-debuginfo или символьные таблицы приложений.
- Версия ядра или дистрибутива не поддерживает некоторые аппаратные счётчики на конкретной платформе.
- Контейнерные окружения: в контейнерах могут быть ограничения на доступ к производительности хоста.
Important: изменять perf_event_paranoid следует осторожно — это влияет на безопасность и видимость профайлинга между пользователями.
Подходы и альтернативы
- Если нужно трассировать системные вызовы — используйте strace для детального трейсинга конкретного процесса.
- Для распределённого профилирования приложений рассмотрите eBPF-инструменты (bpftrace, bcc) или специализированные APM.
- Для профилирования памяти — valgrind massif или massif-visualizer; для heap-профайлинга Java — jmap/jfr.
Критерии приёмки
- Установлен perf и доступен в PATH.
- perf stat корректно собирает счётчики для тестовой команды.
- perf record создаёт perf.data, perf report отображает читаемый отчёт (хотя бы с именами функций).
- Повторный прогон с изменением конфигурации показывает ожидаемое изменение в счётчиках.
Краткий глоссарий
- tracepoint — точка трассировки в ядре или приложении, позволяющая фиксировать события.
- счётчик (counter) — метрика аппаратного/программного происхождения (CPU cycles, cache-misses).
- sampling — сбор профиля по выборочным сэмплам, а не трассировка каждого события.
Итоги
perf — мощный и гибкий инструмент для системного профилирования на Linux. Он покрывает широкий набор сценариев: от быстрой статистики отдельных команд до подробного анализа записанных профилей. Начните с perf stat и perf top, затем переходите к perf record + perf report для детального разбора «горячих» участков кода. Обязательно учитывайте права доступа и наличие отладочных символов для лучшей читаемости отчётов.
Полезные команды для быстрого старта:
dnf install perf -y
perf --help
perf stat <команда>
perf top -a
perf record <команда>
perf report
cat /proc/sys/kernel/perf_event_paranoidNotes: для сложных случаев объединяйте данные perf с логами приложения и метриками системы (CPU, память, I/O) — только так вы получите полную картину.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента