У меня есть вывод профилировщика perf linux (perf_events) в файле perf.data
.Этот файл является результатом perf record ./some_multithreaded_app
или perf record -a sleep 600
.В моем приложении чередуются несколько видов работ: генерация данных, полезные вычисления по данным, некоторая проверка результатов;со всех трех этапов началось много раз.Мое приложение также печатает временные метки между этапами (теперь только с точностью до секунды, следует изменить их на микро- или наносекунду).
Когда я делаю нормальный perf report
, я получаю смесь результатов профилей со всех этапов.
Я хочу отфильтровать события, записанные в perf.data
, для некоторых временных интервалов, когда работал второй этап, и получить вывод в виде нового файла, отформатированного perf.data
, например perf.data.loop1.stage2
.
Возможно лианализировать события из perf.data
, применять простой фильтр к отметке времени события и выводить отфильтрованные события обратно в формат perf.data
, задокументированный в
Как мой perf.data
былиз нескольких ядер процессора события в perf.data
могут быть не в порядке (не отсортированы по временным меткам - perf.data-file-format.txt: «события не обязательно расположены в порядке меток времени» )