Главная > Управление пакетами и системой > perf

perf: Инструмент анализа производительности Linux

perf — это мощный инструмент мониторинга и анализа производительности, встроенный в ядро Linux. Он используется для отслеживания различных аппаратных и программных событий, таких как использование ЦП, промахи кэша, системные вызовы, для выявления и оптимизации узких мест в производительности приложений и систем. Он работает на уровне ядра, предоставляя очень подробные и точные данные о производительности.

Обзор

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`, чтобы быстро определить функции, потребляющие больше всего времени ЦП в текущей системе.

Те же команды в категории