A visualization tool for profiling data that converts stack traces into interactive flame graphs to identify performance bottlenecks.
FlameGraph is a collection of Perl scripts that generate flame graph visualizations from profiling data. It solves the problem of interpreting complex performance profiles by converting stack traces into an intuitive visual format where the width of each box corresponds to the time spent in that function.
Performance engineers, system administrators, and developers who need to analyze CPU, memory, or other resource usage in applications and systems.
Developers choose FlameGraph because it provides a standardized, interactive way to visualize profiling data across multiple platforms, making performance bottlenecks immediately visible without requiring deep expertise in raw profiling tools.
Stack trace visualizer
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works with data from Linux perf_events, DTrace, SystemTap, Java profilers, and more, as evidenced by the numerous stackcollapse-* scripts provided in the README for different systems.
Generates SVG flame graphs with zoom and search features, allowing users to click boxes to focus on specific stack frames and use regex highlighting for deeper analysis, as shown in the example interactions.
Offers various color palettes, adjustable dimensions, and options like inverted views, enabling tailored visualizations for specific analysis needs, with commands like --colors and --width documented in the options section.
Supports performance comparison between states using consistent palettes via the --cp option, making it easy to identify changes in profiles, as demonstrated in the consistent palette examples.
Requires capturing stacks, folding them with specific scripts, and generating graphs, which is more cumbersome and error-prone compared to automated, integrated profiling tools.
Being written in Perl, it may not run in environments without Perl, limiting adoption in modern containerized or restricted setups where Perl isn't standard.
Primarily designed for static, post-mortem analysis, lacking built-in support for live monitoring or continuous profiling without additional tooling and scripting.