---
title: Grafana可视化
description: "Grafana工具支持对服务化调优工具采集并解析的性能数据进行可视化展示。"
url: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/devaids/Profiling/mindieprofiling_0015.html
sourcePath: /source/zh/CANNCommunityEdition/920beta1/devaids/Profiling/mindieprofiling_0015.html
indexId: bf0e425af4e23fb46b1b314a66670c7c5131a1c5ced2141945ac1caedba7902184
---
# Grafana可视化

#### 功能说明

Grafana工具支持对服务化调优工具采集并解析的性能数据进行可视化展示。


#### 数据准备

已完成数据解析并输出解析结果。

确认在--output-path指定的路径下存在SQLite数据库文件profiler.db。


#### 环境依赖

工具版本：Grafana=11.3.0，SQLite插件=11.3.0。

安装并连接Grafana

Grafana安装官方网址https://grafana.com/grafana/download?platform=arm&edition=oss(https://grafana.com/grafana/download?platform=arm&edition=oss)，下载安装对应开源版本解压运行。例如：

```
tar -zxvf grafana-11.3.0.linux-arm64.tar.gz
cd grafana-v11.3.0/bin/
./grafana-server
```

配置Windows代理，需要添加Linux设备IP前缀，例如90.90.*;90.91.*，访问http://Linux设备IP:3000/即可打开Grafana的Web端，初始账号密码都为admin。

图1 Grafana示意图


#### 使用示例

1. 新建Data sources，如图2所示。
  图2 Data source

  data source类型选择SQLite类型，如图2 Add data source所示。

  图3 Add data source

  将解析生成的SQLite数据库文件profiler.db连接到Grafana，并记录datasource uid，如图3 Data sources所示。

  图4 Data sources

2. 新建dashboard，导入折线图。
  在/xxx/Ascend/cann-{version}/tools/msserviceprofiler/python/ms_service_profiler/views/路径下包含可视化文件profiler_visualization.json，修改json文件中datasource的uid为步骤2中记录的uid。

  {cann_version}为CANN软件包版本，支持CANN 8.1.RC1及之后的版本。

  图5 uid示意图

  json文件末尾的uid用于唯一标记此dashboard，这里不用修改；title用于给此dashboard命名，默认为Profiler Visualization。

  图6 json示意图

3. 新建dashboard，将修改后的json文件内容粘贴导入，即可在Dashboards中找到相对应名称的dashboard。
  图7 Dashboards

  图8 Import dashboard

  图9 设置参数


#### 可视化结果

生成的Grafana dashboard中包含以下可视化图像：


**表1 可视化图像**

| 可视化图像名称 | 描述 |
| --- | --- |
| Batch Size by Batch ID | 记录BatchSchedule过程中每个batch包含的请求数量折线图。根据时间排序，区分prefill和decode。 |
| Request Status | 服务中处于不同状态下的请求数目随时间变化的折线图。 |
| Kvcache usage percent | 所有请求Kvcache使用率随时间变换折线图。包含所有请求的Kvcache使用率情况。 |
| first\_token\_latency | 所有请求首token时延随时间变化折线图。包含所有请求首token时延的平均值avg，分位值p99、p90、p50等。 |
| prefill\_generate\_speed\_latency | 所有请求prefill阶段，不同时刻吞吐的token平均时延随时间变化折线图。包含所有请求不同时刻吞吐的token平均时延的平均值avg，分位值p99、p90、p50等。 |
| decode\_generate\_speed\_latency | 所有请求decode阶段，不同时刻吞吐的token平均时延随时间变化折线图。包含所有请求不同时刻吞吐的token平均时延的平均值avg，分位值p99、p90、p50等。 |
| request\_latency | 所有请求端到端时延随时间变化折线图。包含所有请求端到端时延的平均值avg，分位值p99、p90、p50等。 |


- Batch Size by Batch ID
  记录BatchSchedule过程中每个batch包含的请求数量折线图。

  横轴：按执行时间顺序的第x个batch，从0开始。

  纵轴：记录对应batch的batch size，区分prefill batch和decode batch。

  图10 Batch Size by Batch ID

- Request Status
  服务化过程中处于不同状态下的请求数目随时间变化的折线图。

  横轴：服务化推理运行时间轴。

  纵轴：当前时刻处于该状态的请求总数。

  图11 Request Status

- Kvcache usage percent
  所有请求Kvcache使用率随时间变化折线图。

  横轴：服务化推理运行时间轴。

  纵轴：所有请求Kvcache使用率的变化情况。单位：%。

  图12 Kvcache usage percent

- first_token_latency
  所有请求token时延随时间变化折线图。

  横轴：服务化推理运行时间轴。

  纵轴：所有请求首token时延的平均值avg，分位值p99、p90、p50。单位：us。

  图13 first_token_latency

- prefill_generate_speed_latency
  所有请求prefill阶段，不同时刻吞吐的token平均时延随时间变化折线图。

  横轴：服务化推理运行时间轴。

  纵轴：所有请求prefill阶段不同时刻吞吐的token平均时延的平均值avg，分位值p99、p90、p50。单位：token个数/s。

  图14 prefill_generate_speed_latency

- decode_generate_speed_latency
  所有请求decode阶段，不同时刻吞吐的token平均时延随时间变化折线图。

  横轴：服务化推理运行时间轴。

  纵轴：所有请求decode阶段不同时刻吞吐的token平均时延的平均值avg，分位值p99、p90、p50。单位：token个数/s。

  图15 decode_generate_speed_latency

- request_latency
  所有请求端到端时延随时间变化折线图。

  横轴：服务化推理运行时间轴。

  纵轴：所有请求端到端时延的平均值avg，分位值p99、p90、p50。单位：us。

  图16 request_latency
