Flameshow: A terminal flamegraph viewer(github.com)
github.com
Flameshow: A terminal flamegraph viewer
https://github.com/laixintao/flameshow
18 comments
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...
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
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
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?
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?
Historically brendangregg's since AIUI he basically invented flamegraphs
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.
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.
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/
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
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).
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.
There appears to be zero documentation on what it needs as input.
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.
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.
> Stack samples can be captured using Linux perf_events, FreeBSD pmcstat (hwpmc), DTrace, SystemTap, and many other profilers. See the stackcollapse-* converters
https://github.com/brendangregg/FlameGraph
https://github.com/brendangregg/FlameGraph
from the README:
> Currently it only supports Golang's pprof dump, I am working on supporting more formats
> Currently it only supports Golang's pprof dump, I am working on supporting more formats
Awesome work!