perf

Бесплатно
Открытый исходный код
Linux

Сайт: perf.wiki.kernel.org/index.php/Main_Page

Утилита perf представляет собой мощный инструмент анализа производительности в операционных системах Linux. Она предоставляет разработчикам и системным администраторам средства для мониторинга и профилирования как пользовательского, так и ядрового кода, используя аппаратные счётчики производительности и механизмы трассировки. Perf был включён в ядро Linux начиная с версии 2.6.31, выпущенной в 2009 году, и с тех пор продолжает развиваться, предлагая всё более широкие возможности для анализа производительности.

Perf позволяет собирать и анализировать данные о различных событиях, таких как количество выполненных инструкций, циклы процессора, промахи кэш-памяти, переключения контекста и другие. Это достигается благодаря использованию аппаратных счётчиков производительности (PMU), а также поддержке динамических проб (kprobes и uprobes) и точек трассировки (tracepoints). Утилита предоставляет пользователю гибкие инструменты для анализа собранных данных, включая возможность визуализации результатов и построения профилей производительности.

  • perf stat — измеряет общее количество событий производительности для программы или системы за определённый промежуток времени.
  • perf record — записывает данные о производительности в файл, который затем можно проанализировать с помощью команды perf report.
  • perf report — анализирует файл данных, созданный командой perf record, и предоставляет отчёт о производительности с возможностью визуализации стека вызовов.
  • perf top — отображает в реальном времени динамический профиль горячих функций, аналогичный утилите top.
  • perf trace — выполняет трассировку системных вызовов и событий ядра в реальном времени.
  • perf list — выводит список доступных событий производительности, поддерживаемых на конкретной системе.
  • perf annotate — аннотирует исходный код или ассемблерный код с учётом собранных данных о производительности.
  • perf sched — позволяет анализировать латентность планировщика и поведение планирования задач в ядре.
Подробнее