18 comments

[ 3.6 ms ] story [ 243 ms ] thread
What format does this support? Would be nice to have more examples, like how do I connect this to node profiling for instance?
URL in example says Go pprof so at least that.

I 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

Go pprof for now.

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.

rbspy supports pprof output. I haven't tried using it with this tool yet, but it should work.
For now, golang only.

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?

I find py-spy really useful in python, it would be neat if you integrated with that somehow.
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.

[1] https://github.com/parca-dev/parca-agent

[2] https://www.parca.dev/

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?

Ticket: https://github.com/parca-dev/parca-agent/issues/161

Demo: https://github.com/parca-dev/parca-demo/pull/18

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...
A missed opportunity not calling it "flamefest".
this is very cool, but...where does one get the data to visualize? Is there a standard for flamegraph data structures?

There appears to be zero documentation on what it needs as input.

from the README:

> Currently it only supports Golang's pprof dump, I am working on supporting more formats

Yes, for now I didn't find any standard format of samples dump.

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.