Обзор
perf — незаменимый инструмент для разработчиков и системных администраторов при диагностике и оптимизации проблем производительности. Через различные подкоманды он предоставляет широкий спектр функций анализа производительности, включая сбор статистики, запись событий и генерацию отчетов.
Основные функции
- Профилирование ЦП (использование ЦП, анализ стека вызовов)
- Мониторинг аппаратных событий (промахи кэша, ошибки предсказания ветвлений и т. д.)
- Мониторинг программных событий (события планирования, ошибки страниц и т. д.)
- Отслеживание и анализ системных вызовов
- Динамическое отслеживание (kprobes, uprobes)
Основные опции (подкоманды)
perf выполняет свои функции через различные подкоманды. Каждая подкоманда имеет свои уникальные опции.
perf stat: сбор статистики
perf record: запись данных о производительности
perf report: анализ записанных данных
perf list: список доступных событий
Сгенерированная команда:
Комбинируйте команды.
Описание:
`perf` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Различные примеры использования команды perf.
Просмотр статистики выполнения команды ls
perf stat ls
Проверяет базовую статистику производительности, такую как такты ЦП, количество инструкций и промахи кэша, во время выполнения команды ls.
Мониторинг конкретного процесса в течение 5 секунд
perf stat -p 1234 sleep 5
Мониторит статистику производительности процесса с PID 1234 в течение 5 секунд. (Замените на фактический PID)
Запись графа вызовов при выполнении приложения
perf record -g ./my_app
Записывает данные о производительности, включая информацию о стеке вызовов функций, при выполнении my_app. Записанные данные сохраняются в файле perf.data.
Анализ записанных данных
perf report
Интерактивно анализирует файл perf.data, созданный perf record, для визуального определения узких мест в производительности.
Просмотр списка доступных аппаратных событий
perf list hw
Проверяет список всех аппаратных событий производительности, которые perf может отслеживать в текущей системе.
Установка
perf может быть не установлен по умолчанию в большинстве дистрибутивов Linux. Вы можете установить его с помощью следующих команд.
Debian/Ubuntu
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
Команда для установки perf в системах на базе Debian или Ubuntu. Необходимо установить пакет linux-tools, соответствующий вашей версии ядра.
CentOS/RHEL/Fedora
sudo yum install perf
# или sudo dnf install perf (Fedora)
Команда для установки perf в системах на базе CentOS, RHEL или Fedora.
Советы и меры предосторожности
Полезные советы и моменты, на которые следует обратить внимание при использовании perf.
Права root
Большинство команд perf собирают данные о производительности всей системы, поэтому требуются права root (sudo).
- Если при выполнении команды perf возникает ошибка 'Operation not permitted', попробуйте использовать sudo.
Загрузка символов ядра
Если имена функций в perf report отображаются как 'unknown', необходимо загрузить символы ядра. Это возможно путем установки пакетов 'kernel-debuginfo' или 'kernel-devel'.
- CentOS/RHEL: `sudo debuginfo-install kernel`
- Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`
Накладные расходы
perf собирает очень подробные данные, поэтому при использовании `perf record` с высокой частотой выборки может возникать некоторая нагрузка на систему. Следует использовать с осторожностью в производственных средах.
- В системах, чувствительных к производительности, начинайте с низкой частоты выборки (опция -F), чтобы минимизировать накладные расходы.
Использование perf top
`perf top` — это полезная подкоманда, которая в реальном времени отображает функции с высоким использованием ЦП. Она подходит для простого мониторинга производительности.
- Используйте `perf top`, чтобы быстро определить функции, потребляющие больше всего времени ЦП в текущей системе.