Article development led by
This visualization of software execution
is a new necessity for performance
profiling and debugging.
BY BRENDAN GREGG
AN EVERYDAY PROBLEM in our industry is understanding
how software is consuming resources, particularly
CPUs. What exactly is consuming how much, and how
did this change since the last software version? These
questions can be answered using software profilers—
tools that help direct developers to optimize their code
and operators to tune their environment. The output of
profilers can be verbose, however, making it laborious
to study and comprehend. The flame graph provides
a new visualization for profiler output and can make
for much faster comprehension, reducing the time for
root cause analysis.
In environments where software
changes rapidly, such as the Netflix
cloud microservice architecture, it is especially important to understand profiles quickly. Faster comprehension can
also make the study of foreign software
more successful, where one’s skills, appetite, and time are strictly limited.
Flame graphs can be generated
from the output of many different software profilers, including profiles for
different resources and event types.
Starting with CPU profiling, this article
describes how flame graphs work, then
looks at the real-world problem that
led to their creation.