Flame graph

A flame graph is a software profiling visualization technique that allows for the rapid identification of hot spots in computer programs from stack trace data.
Flame graphs were created by Australian computer engineer Brendan Gregg in 2011.[2]
Usage
The information of a flame graph is represented graphically in a hierarchical manner, creating an intuitive visualization of resource consumption. Each cell in the graph represents a stack frame.[3] Cell position along the y-axis indicates stack depth. Position along the x-axis does not have special meaning; however, cell width indicates "frequency at which that function was present in the stack traces".[3]
The approach is commonly used in profiling system resources such as CPU performance,[4] and memory usage[5] has also seen recent adoption for profiling GPU performance, especially for artificial intelligence software like large language models.[6][7]
Software industry
Flame graphs have seen increases in popularity in the software industry, especially in cloud computing, being employed by companies like Cloudflare, Netflix, Snowflake, Amazon Web Services and Google.[7][8][9][10][11] They are typically used to analyze performance bottlenecks in commonly deployed software runtimes like Node.js and Java, as well as heavy server-side programs like MySQL and MediaWiki.[1][4][10][12]
Development tools
Flame graphs are officially supported in several integrated development environments, including Visual Studio, Visual Studio Code and IntelliJ IDEA.[13][14][15] A flame graph implementation is also included with the web development tools built into Google Chrome and Firefox.[14][16]
Performance of software across different versions can be represented through differential flame graph implementations, which allow both improvements and regressions in efficiency to be identified.[17]
References
- ↑ 1.0 1.1 Livneh, Ori (29 December 2014). "How we made editing Wikipedia twice as fast". https://wikimediafoundation.org/news/2014/12/29/how-we-made-editing-wikipedia-twice-as-fast/.
- ↑ Gregg, Brendan. "Flame Graphs". https://www.brendangregg.com/flamegraphs.html.
- ↑ 3.0 3.1 Gregg, Brendan (23 May 2016). "The flame graph". Communications of the ACM 59 (6): 48–57. doi:10.1145/2909476.
- ↑ 4.0 4.1 "CPU Flame Graphs". https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html.
- ↑ Joab, Jackson (2013-11-08). "Flame graph shows computer system performance in a new light" (in en). https://www.pcworld.com/article/448565/usenix-flame-graph-shows-system-performance-in-a-new-light.html.
- ↑ "Intel Makes "AI Flame Graphs" Open-Source" (in en). https://www.phoronix.com/news/Intel-AI-Flame-Graphs-Open.
- ↑ 7.0 7.1 "Scaling vLLM for Embeddings: 16x Throughput and Cost Reduction" (in en). https://www.snowflake.com/en/engineering-blog/embedding-inference-arctic-16x-faster/.
- ↑ "The story of one latency spike" (in en). 19 November 2015. https://blog.cloudflare.com/the-story-of-one-latency-spike/.
- ↑ "Netflix FlameScope". https://netflixtechblog.com/netflix-flamescope-a57ca19d47bb.
- ↑ 10.0 10.1 "Analyzing Java applications performance with async-profiler in Amazon EKS Containers". 23 April 2025. https://aws.amazon.com/blogs/containers/analyzing-java-applications-performance-async-profiler-amazon-eks/.
- ↑ "Flame graphs - Cloud Profiler" (in en). https://docs.cloud.google.com/profiler/docs/concepts-flame.
- ↑ "Flame Graphs". https://nodejs.org/en/learn/diagnostics/flame-graphs.
- ↑ "Identify hot paths with the Flame Graph" (in en-us). https://learn.microsoft.com/en-us/visualstudio/profiling/flame-graph?view=visualstudio.
- ↑ 14.0 14.1 Anderson, Tim. "Visual Studio Code 1.50 goes hard on extensions support, but tackling add-on bloat is becoming more onerous". https://www.theregister.com/2020/10/13/visual_studio_code_1_50/.
- ↑ "Read the profiler snapshot". https://www.jetbrains.com/help/idea/read-the-profiling-report.html.
- ↑ Wajsberg, Julien (27 October 2022). "What's new with the Firefox Profiler? (Q3 2022)". https://blog.mozilla.org/performance/2022/10/27/whats-new-with-the-firefox-profiler-q3-2022/.
- ↑ Bezemer, Cor-Paul; Pouwelse, Johan; Gregg, Brendan (March 2015). "Understanding software performance regressions using differential flame graphs". 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER). pp. 535–539. doi:10.1109/SANER.2015.7081872. ISBN 978-1-4799-8469-5.
