Online manpages like https://linux.die.net/man/1/perf-record suggest that there is an option for Linux perf
command that supports incremental profiling, i.e. merging the profiling data from multiple different runs, via perf record --append
. However, on my system with perf
version 4.15.18, the option is missing. Is my perf version too new, or too old, to use the --append
option? Alternatively, if the --append
option is missing, is there another way for me to merge/append perf results from multiple runs and do incremental profiling?
This question arose when doing sampling-based profiling using LLVM. In LLVM, instrumentation-based profiling supports merging profile data across multiple runs, and I was wondering if we can do the same thing with perf
.
It was removed quite a while ago, see https://lore.kernel.org/patchwork/patch/391730/ and related discussion here: https://marc.info/?l=linux-kernel&m=137031146932578&w=2. Looks like the way --append
is implemented is rather simple: simply by changing the write mode of profiling data to "append", and it doesn't work well with perf report
, so they decided to remove it.
There seems to be the option --timestamp-filename
of timestamping the output filename, which is potentially useful to batch-sample programs using perf. When doing sampling-based optimization in LLVM, we can then use AutoFDO to convert the profiles into LLVM-readable profiles and use llvm-profdata merge
to merge everything.