We've been using flamegraph for full-system benchmarking at Oxide, relying heavily on custom sampling commands (since it only samples one process by default). This PR would let us stop using custom commands by adding their functionality into the main flamegraph executable:
--kernel changes the flamegraph probe to also capture kernel stack frames
--global captures a flamegraph of everything in the system, instead of a single process
--timeout tells flamegraph to exit after a certain amount of time, e.g. to capture 1 second of full-system traces
The results are pretty neat:
I have only implemented these flags for the DTrace backend, but perf will print helpful error messages if you try to use them. If you want to maintain strict CLI parity, let me know and I can dig into what perf changes would be required.
We've been using
flamegraph
for full-system benchmarking at Oxide, relying heavily on custom sampling commands (since it only samples one process by default). This PR would let us stop using custom commands by adding their functionality into the mainflamegraph
executable:--kernel
changes the flamegraph probe to also capture kernel stack frames--global
captures a flamegraph of everything in the system, instead of a single process--timeout
tellsflamegraph
to exit after a certain amount of time, e.g. to capture 1 second of full-system tracesThe results are pretty neat:
I have only implemented these flags for the DTrace backend, but
perf
will print helpful error messages if you try to use them. If you want to maintain strict CLI parity, let me know and I can dig into whatperf
changes would be required.