resq-flame
Version:SVG CPU flame graph profiler for ResQ servicesv0.1.16· License:Apache-2.0· Crate: crates.io · API docs: docs.rs
Overview
inferno-flamegraph.
Overview
resq-flame supports multiple profiling backends (V8 CPU profiles, pprof, py-spy, Linux perf) and converts their output into the folded-stack format consumed by inferno. The result is an interactive SVG flame graph you can open in any browser.
Profiling Pipeline
Installation
Prerequisites
| Tool | Required For | Install |
|---|---|---|
inferno | All SVG generation | cargo install inferno |
py-spy | Python (PDIE) profiling | pip install py-spy |
perf | Linux kernel profiling | sudo apt install linux-perf or sudo pacman -S perf |
CLI Arguments
Global Flags
| Flag | Short | Default | Description |
|---|---|---|---|
--output <path> | -o | flamegraph.svg | Output SVG file path |
--open | false | Open the SVG in the default browser after generation |
Subcommand: hce
Fetch a V8 CPU profile from the Coordination HCE server.
| Flag | Short | Default | Description |
|---|---|---|---|
--url <url> | -u | http://localhost:5000 | HCE server URL |
--duration <ms> | -d | 5000 | Profile duration in milliseconds |
Usage Examples
Interactive TUI (default)
j/k to navigate, Enter to start profiling the selected target, and q or Esc to quit.
Subcommand Mode
Profiling Targets (TUI)
| Target | Engine | Description |
|---|---|---|
| Coordination HCE | hce | Node.js/Bun service via HTTP metrics |
| Infrastructure API | api | Rust backend via pprof |
| Intelligence PDIE | python | Python AI engine via py-spy |
| Linux Perf | perf | System-wide profiling via perf record |
TUI Keybindings
| Key | Action |
|---|---|
q / Esc | Quit |
Enter | Profile the selected target |
Up / k | Move selection up |
Down / j | Move selection down |
Environment Variables
| Variable | Description |
|---|---|
RESQ_TOKEN | Bearer token for HCE authentication |
RESQ_API_KEY | API key for infrastructure-api and PDIE |
Output Format
The tool generates interactive SVG flame graphs using theinferno crate:
- Folded stacks are the intermediate format (
frame1;frame2;frameN count). - SVG output supports interactive features when opened in a browser: click to zoom,
Ctrl+Fto search.
Input Format Support
| Format | Function | Description |
|---|---|---|
V8 .cpuprofile | cpuprofile_to_folded | Chrome/Node.js CPU profiles with tree structure |
| bpftrace histogram | parse_bpftrace_output | frame1, frame2: count lines |
| Pre-folded stacks | parse_folded_stacks | Standard stack count lines |
Reading Flame Graphs
- Width of a frame = proportion of total samples where that function was on the stack
- Height = call depth (bottom is root, top is leaf)
- Wide frames at the top = hot leaf functions (primary optimization targets)
- Wide frames in the middle = called frequently from many paths
Safety Notes
- Profiling is read-only — it does not modify the target service.
- External profiler binaries (
py-spy,perf) are invoked as subprocesses; the tool handles missing binaries gracefully. - Use reasonable durations when profiling production environments to minimize overhead.
- The HCE subcommand connects via HTTP and does not require kernel-level access.
perfmode requires appropriate Linux capabilities (CAP_SYS_ADMINorperf_event_paranoidsettings).