Утилита рerf#
Описание#
Утилита perf измеряет и анализирует производительность различных операций в ядре и пользовательском пространстве, включая использование процессора, памяти, дисковой подсистемы и других ресурсов.
Для этого perf использует аппаратные счетчики производительности (Performance Monitoring Units, PMU) оборудования и точки трассировки ядра. Полученные данные анализируются и представляются в человекочитаемом формате.
Синтаксис утилиты:
perf <options> <command> <args>
Где:
<options>- опции;<command>- команда;<args>- агрументы.
Опции#
Часто используемые опции утилиты представлены в таблице ниже.
Опция |
Описание |
|---|---|
|
Вывести справочную информацию |
|
Отобразить информацию о версии |
|
Вывести возможные опции |
|
Вывести наиболее часто используемые команды |
|
Указать каталог |
|
Записывать вывод отладки в указанный файл |
|
Установить значения ( |
Команды#
Ниже перечислены часто используемые команды утилиты perf:
Команда
perf helpвыводит список команд утилиты. Опции-aили--allвыводят все доступные команды.Команда
perf statпредоставляет статистику по различным событиям, включая выполненные команды и затраченные тактовые циклы.Команда
perf recordзаписывает данные в файлperf.data, который может быть позже проанализирован с помощью командыperf report.Команда
perf reportсчитывает и отображает данные о производительности из файлаperf.data.Вместе с командой можно использовать следующие опции:
--demangle- выводить имена символов в человекочитаемом формате. Включено по умолчанию;--demangle-kernel- выводить имена символов ядра в человекочитаемом формате;--no-demangle- отключить вывод имен символов в человекочитаемом формате.
Команда
perf listвыводит список предопределенных событий, доступных на машине. Эти события будут варьироваться в зависимости конфигурации аппаратного и программного обеспечения.Команда
perf topвыводит информацию о профиле производительности процессора в режиме реального времени. Функционирует аналогично утилитеtop. Но в отличие от нее показывает, сколько времени ЦП использует каждая функция.Команда
perf traceотслеживает системные вызовы, используемые указанным потоком или процессом, и все сигналы, получаемые приложением.
Примеры использования#
Чтобы включить сбор данных о производительности приложения
./sample, используйте команду:perf record ./sampleЧтобы вывести отчет, где имена функций C++ будут отражены в человекочитаемом формате, используйте команду:
perf report --demangle --demangle-kernelПример вывода:
Samples: 7 of event 'task-clock:ppp', Event count (approx.): 1750000 Overhead Command Shared Object Symbol 14.29% hello_world [kernel.kallsyms] [k] __lookup_mnt 14.29% hello_world [kernel.kallsyms] [k] _raw_spin_unlock_irqrestore 14.29% hello_world [kernel.kallsyms] [k] do_user_addr_fault 14.29% hello_world ld-linux-x86-64.so.2 [.] _dl_relocate_object 14.29% hello_world ld-linux-x86-64.so.2 [.] do_lookup_x 14.29% hello_world ld-linux-x86-64.so.2 [.] mmap64 14.29% hello_world ld-linux-x86-64.so.2 [.] strcmp