#flame-graph #tui #cli

bin+lib flamelens

Flamegraph viewer in the terminal

2 unstable releases

0.2.0 Jul 7, 2024
0.1.0 Jun 29, 2024

#128 in Profiling

MIT license

98KB
2.5K SLoC

flamelens

flamelens is an interactive flamegraph viewer in the terminal.

Demo

What is it?

Flamegraph tools such as FlameGraph and inferno process output from various profiling tools and generate intermediate data in the "folded" format ready for flamegraph plotting. Instead of plotting the flamegraph as an SVG file, flamelens takes the folded stacks data and generate an interactive flamegraph in the terminal.

No more hauling SVG files and opening a browser just to have a quick look at the profiling result!

Usage

Run flamelens with the filename of the profiling data in the form of "folded stacks":

flamelens <folded-stacks-filename>

You can also pipe data directly to flamelens without providing a filename.

cargo-flamegraph

If you used cargo flamegraph to profile your program on Linux, you would have a perf.data file generated by perf. You can visualize it in flamelens this way with the help of inferno:

perf script -i perf.data | inferno-collapse-perf | flamelens

Python

Display a live flamegraph of a running Python program using py-spy as the profiler:

flamelens --pid <pid-of-python-program>

This requires enabling the python feature when installing.

Example of a live flamegraph

demo-live

Key bindings

Key Action
hjkl (or ← ↓ ↑→ ) Navigate cursor for frame selection
f Scroll down
b Scroll up
G Scroll to bottom
g Scroll to top
Enter Zoom in on the selected frame
Esc Reset zoom
/<regex> Find and highlight frames matching the regex
# Find and highlight frames matching the selected frame
n Jump to next match
N Jump to previous match
r Reset to default view
z (in Live mode) Freeze the flamegraph
q (or Ctrl + c) Exit

Installation

If you have Rust installed, flamelens is available on crates.io and you can install it using:

cargo install flamelens --locked

If you want the live flamegraph functionality, install with the --all-features option:

cargo install flamelens --locked --all-features

Alternatively, build and install from source after cloning this repo:

cargo install --path $(pwd) --locked

Dependencies

~9–23MB
~323K SLoC