

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 火焰图
<a name="v10-panels-flamegraph"></a>

****  
本文档主题专为支持 **Grafana 10.x 版本**的 Grafana 工作区而设计。  
有关支持 Grafana 版本 12.x 的 Grafana 工作空间，请参阅。[在 Grafana 版本 12 中工作](using-grafana-v12.md)  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 8](using-grafana-v8.md)。

火焰图允许可视化分析数据。使用此可视化效果，可以将配置文件表示为火焰图和/或表。

![显示 Grafana 中火焰图可视化示例的图像。](http://docs.aws.amazon.com/zh_cn/grafana/latest/userguide/images/viz/flamegraph-panel-example.png)


## 火焰图模式
<a name="v10-panels-flamegraph-mode"></a>

火焰图利用了分析数据的层次性。这种图形将数据压缩成一种格式，让您轻松查看哪些代码路径消耗了最多的系统资源，如 CPU 时间、分配的对象或测量内存时的空间。火焰图中的每个块代表堆栈中的一个函数调用，宽度代表其值。

Grayed-out 节是一组表示相对较小的值的函数，出于性能方面的考虑，它们被合并成一个部分。

您可以将鼠标悬停在特定函数上以查看工具提示，其中显示有关该函数的其他数据，例如函数的值、占总值的百分比以及函数的样本数。

**Drop-down actions**

您可以单击某个函数，以显示包含其他操作的下拉菜单：
+ **焦点块**：当您选择**焦点块**时，数据块或函数将设置为火焰图宽度的 100%，并且所有子函数都会显示，其宽度相对于父函数的宽度更新。这使得更容易向下钻取到火焰图的较小部分。
+ **复制函数名称**：当您选择**复制函数名称**时，将复制该块所代表的函数的全名。
+ **三明治视图**：三明治视图允许显示点击函数的上下文。该视图在顶部显示函数的所有调用放，在底部显示所有被调用方。这显示了函数的聚合上下文，因此如果该函数存在于火焰图中的多个位置，则所有上下文都显示并聚合在三明治视图中。

**状态栏**

 状态栏显示有关火焰图和当前应用修改的元数据，例如图形的哪个部分处于焦点或三明治视图中显示什么函数。单击状态栏中的 **X** 以删除修改。

## 工具栏
<a name="v10-panels-flamegraph-toolbar"></a>

**搜索**

您可以使用搜索字段查找具有特定名称的函数。火焰图中与搜索匹配的所有函数都将保持彩色，而其余函数将灰显。

**颜色方案选取器**

您可以根据函数的值或软件包名称切换着色函数，以便直观地将同一软件包中的函数联系在一起。

**文本对齐**

将文本向左或向右对齐，以便在函数名称不适合块时显示函数名称中更重要的部分。

**可视化选取器**

您可以选择仅显示火焰图和/或仅显示表。

## 顶部表模式
<a name="v10-panels-flamegraph-toptablemode"></a>

顶部表以表格式显示了配置文件中的函数。该表有三列：符号、自身和总计。默认情况下，该表按自身时间排序，但也可以通过单击列标题按总时间或符号名称重新排序。如果给定函数出现在配置文件中的多个位置，则每行表示该函数的聚合值。

每行左侧还有操作按钮。第一个按钮搜索函数名称，第二个按钮显示函数的三明治视图。

## 数据 API
<a name="v10-panels-flamegraph-dataapi"></a>

为了渲染火焰图，必须使用[嵌套集模型](https://wikipedia.org/wiki/Nested_set_model)格式化数据帧数据。

嵌套集模型可确保火焰图中的每个项目仅通过其嵌套级别作为整数值、元数据及其在数据帧中的顺序编码。这意味着项目的顺序很重要，必须正确。排序是对火焰图中项目的深度优先遍历，可重新创建图形，而无需像在子数组中那样在数据帧中使用可变长度值。

必填字段：


| 字段名称 | Type | 说明 | 
| --- | --- | --- | 
| level | 数字 | 项目的嵌套级别。换句话说，这个项目和火焰图的顶部项目之间有多少项目。 | 
| 值 | 数字 | 项目的绝对值或累积值。这相当于图形中项目的宽度。 | 
| label | 字符串 | 为特定项目显示的标签。 | 
| self | 数字 | 自身值，通常是项目的累积值减去其直接子项目的累积值之和。 | 