Как уже упоминал @osgx, инструмент для поиска в файле perf.data
- perf script
. perf script -D
выводит необработанные события из файла perf.data
в шестнадцатеричном формате.
Файл perf.data
содержит все события, сгенерированные модулями мониторинга производительности, а также некоторые метаданные. Файл perf.data
на диске обычно начинается с структуры perf_header
приведенной ниже формы -
struct perf_header {
char magic[8]; /* PERFILE2 */
uint64_t size; /* size of the header */
uint64_t attr_size; /* size of an attribute in attrs */
struct perf_file_section attrs;
struct perf_file_section data;
struct perf_file_section event_types;
uint64_t flags;
uint64_t flags1[3];
};
Основная часть файла perf.data
включает в себя события perf, которые могут включать любые типы событий упомянутые здесь , которые содержат метаданные о каждом из событий, такие как 32-битный идентификатор процесса и идентификатор потока, указатель инструкции, информация об используемом процессоре и т. д. c. Хранение этих метаданных зависит от передаваемых флагов, например PERF_SAMPLE_PID
или PERF_SAMPLE_TID
et c. Посмотрите на perf_event_open
manpage . Вы можете отключить запись некоторых метаданных и уменьшить размер данных каждого события, записываемого в файл.
PERF_RECORD_COMM
, PERF_RECORD_FORK
и PERF_RECORD_MMAP
et c. являются событиями боковой полосы, записанными ядром, чтобы помочь в дальнейшей постобработке и детальном анализе. Они включены по умолчанию в исходном коде ядра, который можно увидеть здесь .
struct perf_event_attr {
........
mmap : 1, /* include mmap data */
comm : 1, /* include comm data */
freq : 1, /* use freq, not period */
inherit_stat : 1, /* per task counts */
enable_on_exec : 1, /* next exec enables */
task : 1, /* trace fork/exit */
Наличие 1 в этих полях означает, что они включены по умолчанию, и отключить ведение журнала этих события, вы должны сделать их 0 в исходном коде и перекомпилировать только модуль perf пользовательского пространства ядра . Если установлено значение 0, эти события не будут записываться, как видно здесь .
Нет никаких параметров командной строки или параметров с perf record
, которые позволили бы отключить эти события .