So if you can make your tool eat whatever https://github.com/brendangregg/FlameGraph is fed with you're going to support a lot of existing tooling across OSes and languages.
Since pprof is supported you could use parca-agent [1], an eBPF-based profiler that I happen to work on, as when you browse the debug UI on port 7071 you can download a pprof formatted profile for any process running on the machine.
Supports Go, Rust, C++, C, Ruby, Python, C#, Java, Julia, Erlang, Nodejs, wasmtime, and more.
If that's true, you should probably update the docs. Everything I could find implied dotnet, jvm, python were still unsupported. For example, the roadmap section of the readme mentions most of these as future targets but nothing even mentions dotnet. However I did find your tickets and a demo being merged in which makes dotnet seem maybe supported?
Thanks for mentioning that! We'll do that. To clarify the current state: dotnet and jvm require enabling flags, python fully works without any changes (as of 2 weeks ago blog post on how we made this possible is about to be released).
There is a "live" flamegraph TUI that uses Austin for those interested in Python profiling https://github.com/P403n1x87/austin-tui. The data collected can be exported and then converted into pprof, and analysed further with flameshow etc...
This is awesome work and textual being able to support terminal or web (https://github.com/Textualize/textual-web) also gives hope that this can be more than a terminal app. I'm hoping that in the future features like this can be standard in Linux's perf tool, for example, Firefox profiler support was recently added as a Google summer-of-code contribution: https://perf.wiki.kernel.org/index.php/Tutorial#Firefox_Prof...
> Stack samples can be captured using Linux perf_events, FreeBSD pmcstat (hwpmc), DTrace, SystemTap, and many other profilers. See the stackcollapse-* converters
18 comments
[ 3.6 ms ] story [ 243 ms ] threadI wish it to be compatible with my go-to Ruby tools:
https://github.com/ruby-prof/ruby-prof
https://github.com/rbspy/rbspy
thus replacing this one:
https://github.com/brendangregg/FlameGraph
Let me check those tools, thank you very much!
I support if FlameGraph can render those, other tools should be able to interpret the dump as well.
But I am working on other supports.
Is there any common format for flamegraph (stacks), or should I do the work for all tools and languages?
https://www.brendangregg.com/flamegraphs.html
So if you can make your tool eat whatever https://github.com/brendangregg/FlameGraph is fed with you're going to support a lot of existing tooling across OSes and languages.
Supports Go, Rust, C++, C, Ruby, Python, C#, Java, Julia, Erlang, Nodejs, wasmtime, and more.
[1] https://github.com/parca-dev/parca-agent
[2] https://www.parca.dev/
Ticket: https://github.com/parca-dev/parca-agent/issues/161
Demo: https://github.com/parca-dev/parca-demo/pull/18
There appears to be zero documentation on what it needs as input.
https://github.com/brendangregg/FlameGraph
> Currently it only supports Golang's pprof dump, I am working on supporting more formats
I already figure out how to integrate with golang's pprof, seems I need to work with other perf tools as well.
I am thinking about adding a flag like `--input-format=pprof` for different outputs.