菜单
开源

火焰图

火焰图提供了对您的剖析数据的可视化摘要。火焰图是分层数据的完整可视化表示,例如堆栈跟踪和文件系统内容,并附带一个度量指标(通常是资源使用情况)附加到数据上。

持续剖析的一个基本方面是火焰图,这是一种可视化性能数据的便捷方式。这些图表提供了对应用程序内资源分配和瓶颈的清晰直观理解。

火焰图的创建者 Brendan Gregg,受到无法使用常规剖析器查看、读取和理解堆栈跟踪来调试性能问题的启发。

Pyroscope 如何创建火焰图

此图显示了代码如何转换为火焰图。在此示例中,Pyroscope 采样应用程序的堆栈跟踪,以了解每个函数花费了多少 CPU 周期。然后,它聚合此数据并将其转换为火焰图。

code to flame graph diagram

火焰图代表什么?

在水平方向上,火焰图代表此应用程序运行时间的 100%。每个节点的宽度代表在该函数中花费的时间量。节点越宽,在该函数中花费的时间越多。节点越窄,在该函数中花费的时间越少。

在垂直方向上,火焰图中的节点代表函数调用及其在每个函数中花费的时间的层级结构。顶部节点是根节点,代表在应用程序中花费的总时间。其下方的节点代表被调用的函数以及在每个函数中花费的时间。再往下方的节点代表从这些函数中被调用的函数以及在每个函数中花费的时间。这会持续到您到达火焰图的底部。

这是一个 CPU 剖析,但剖析数据可以表示许多其他类型的资源,例如内存、网络、磁盘等。

flame graph

火焰图可视化面板 UI

要详细了解 Grafana、Grafana Cloud 和 Grafana Profiles Drilldown 中的火焰图用户界面,请参阅火焰图可视化面板

要详细了解 Pyroscope UI 中的火焰图,请参阅Pyroscope UI