---
title: 通信性能数据解析
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/Profiling/atlasprofiling_16_0027.html
sourcePath: /source/zh/canncommercial/900/devaids/Profiling/atlasprofiling_16_0027.html
indexId: 34746e131b9cd5169bd583ed54941d4bd4723a077b4122eb38a755a53ff9ab5075
---
# 通信性能数据解析

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | x |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

msprof通信性能数据解析功能主要用于统计通信类的分段耗时、拷贝信息、带宽等信息，以便进行通信类数据分析。通信类数据只有在多卡、多节点或集群场景下存在。


#### 注意事项

- 请先完成  使用前准备
。
- 请先对PROF_XXX目录执行msprof的解析导出操作，同时关闭数据精简模式，命令示例如下：

```
msprof --export=on --output=/home/xxx/profiler_data/PROF_XXX --clear=off
```


- 以下产品不支持在设备上直接解析，需要将采集到的PROF_XXX目录拷贝到安装了Toolkit包的环境下进行解析：

  - Atlas 200I/500 A2 推理产品的Ascend RC场景


#### 命令格式

msprof命令行方式：

```
msprof --analyze=on [--type=<type>] [--rule=communication] --output=<dir> [--clear=on]
```

msprof.py脚本方式：

```
python3 msprof.py analyze [--type <type>] --rule communication -dir <dir> [--clear]
```


#### 参数说明


**表1 参数说明（msprof命令行方式）**

| 参数 | 说明 | 可选/必选 |
| --- | --- | --- |
| \-\-analyze | 分析性能数据文件，可选on或off，默认值为off。 on：表示开启 off：表示关闭 | 必选 |
| \-\-type | 设置性能数据解析结果文件格式，即可以选择msprof命令行执行后自动解析的结果文件格式，取值为： text：表示解析为json格式文件和communication\_analyzer.db文件。 db：表示解析为communication\_analyzer.db文件。 默认为text。 | 可选 |
| \-\-rule | 分析规则，取值为： communication：分析通信类数据。 \-\-type=text时，在PROF\_XXX/analyze目录下生成communication.json文件，展示单卡所有通信算子通信耗时、带宽等详细信息，如图4所示；以及生成communication\_analyzer.db文件。 \-\-type=db时，在PROF\_XXX/analyze目录下仅生成communication\_analyzer.db文件，保存CommAnalyzerTime（通信耗时）和CommAnalyzerBandwidth（通信带宽）信息表。 communication\_matrix：分析通信矩阵数据。 \-\-type=text时，在PROF\_XXX/analyze目录下生成communication\_matrix.json文件，展示通信小算子基本的信息，包含通信size、通信带宽、通信rank等信息，用于分析通信细节，如图5所示；以及生成communication\_analyzer.db文件。 \-\-type=db时，在PROF\_XXX/analyze目录下仅生成communication\_analyzer.db文件，保存CommAnalyzerMatrix（通信矩阵）信息表。 以上两个参数值可以同时配置，使用逗号分隔，例如：\-\-rule=communication,communication\_matrix。 默认同时设置以上两个参数值。 | 可选 |
| \-\-output | 性能数据文件目录。须指定为PROF\_XXX目录，例如：/home/HwHiAiUser/profiler\_data/PROF\_XXX。 路径中不能包含特殊字符："\n", "\\n", "\f", "\\f", "\r", "\\r", "\b", "\\b", "\t", "\\t", "\v", "\\v", "\u007F", "\\u007F", "\"", "\\\"", "'", "\'", "\\", "\\\\", "%", "\\%", ">", "\\>", "<", "\\<", "\|", "\\\|", "&", "\\&", "$", "\\$", ";", "\\;", "\`", "\\\`"。 | 必选 |
| \-\-clear | 数据精简模式，开启后将在导出性能数据后删除PROF\_XXX目录下的sqlite目录，以节省存储空间。可选on或off，默认值为off。 | 可选 |


**表2 参数说明（msprof.py脚本方式）**

| 参数 | 说明 | 可选/必选 |
| --- | --- | --- |
| analyze | 分析性能数据文件。 | 必选 |
| \-\-type | 设置性能数据解析结果文件格式，即可以选择msprof.py脚本执行后自动解析的结果文件格式，取值为： text：表示解析为json格式文件和communication\_analyzer.db文件。 db：表示解析为communication\_analyzer.db文件。 默认为text。 | 可选 |
| \-r或\-\-rule | 分析规则，取值为： communication：分析通信类数据。 \-\-type text时，在PROF\_XXX/analyze目录下生成communication.json文件，展示单卡所有通信算子通信耗时、带宽等详细信息，如图4所示；以及生成communication\_analyzer.db文件。 \-\-type db时，在PROF\_XXX/analyze目录下仅生成communication\_analyzer.db文件，保存CommAnalyzerTime（通信耗时）和CommAnalyzerBandwidth（通信带宽）信息表。 communication\_matrix：分析通信矩阵数据。 \-\-type text时，在PROF\_XXX/analyze目录下生成communication\_matrix.json文件，展示通信小算子基本的信息，包含通信size、通信带宽、通信rank等信息，用于分析通信细节，如图5所示；以及生成communication\_analyzer.db文件。 \-\-type db时，在PROF\_XXX/analyze目录下仅生成communication\_analyzer.db文件，保存CommAnalyzerMatrix（通信矩阵）信息表。 以上两个参数值可以二选一也可以同时配置，同时配置时使用逗号分隔，例如：\-\-rule communication,communication\_matrix。 | 必选 |
| \-dir或\-\-collection\-dir | 性能数据文件目录。须指定为PROF\_XXX目录，例如：/home/profiler\_data/PROF\_XXX。 路径中不能包含特殊字符："\n", "\\n", "\f", "\\f", "\r", "\\r", "\b", "\\b", "\t", "\\t", "\v", "\\v", "\u007F", "\\u007F", "\"", "\\\"", "'", "\'", "\\", "\\\\", "%", "\\%", ">", "\\>", "<", "\\<", "\|", "\\\|", "&", "\\&", "$", "\\$", ";", "\\;", "\`", "\\\`"。 | 必选 |
| \-\-clear | 数据精简模式，开启后将在导出性能数据后删除PROF\_XXX目录下的sqlite目录，以节省存储空间。配置该参数时表示开启数据精简模式，未配置表示关闭，默认关闭。 | 可选 |


#### 使用示例（msprof命令行方式）

指定/home/profiler_data/PROF_XXX目录为性能数据文件目录，开启分析性能数据文件功能。

```
msprof --analyze=on --output=/home/profiler_data/PROF_XXX
```


#### 使用示例（msprof.py脚本方式）

1. 以Toolkit包的运行用户登录开发环境。
2. 切换至msprof.py脚本所在目录。
  ${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msprof，${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例，安装后文件默认存储路径为：/usr/local/Ascend/cann。

3. 设置分析通信类数据，指定/home/profiler_data/PROF_XXX目录为性能数据文件目录，执行分析命令。

```
python3 msprof.py analyze --rule communication -dir /home/profiler_data/PROF_XXX
```


#### 输出结果文件说明

- --type=text或--type=db以及--rule=communication
  图1 CommAnalyzerTime

**表3 CommAnalyzerTime**

| 字段 | 说明 |
| --- | --- |
| hccl\_op\_name | 通信算子名称。 |
| group\_name | 通信算子的分组。 |
| start\_timestamp | 通信开始时间戳。 |
| elapse\_time | 算子的通信总耗时，单位ms。 |
| transit\_time | 通信时长，单位ms。表示通信算子的通信耗时，如果通信耗时过长，可能是某条链路存在问题。 |
| wait\_time | 等待时长，单位ms。节点之间通信前首先需要进行同步，确保通信的两个节点同步完成，再进行通信。 |
| synchronization\_time | 同步时长，单位ms。节点之间进行同步需要的时长。 |
| idle\_time | 空闲时间，单位ms。空闲时间（idle\_time） = 算子的通信总耗时（elapse\_time） \- 通信时长（transit\_time） \- 等待时长（wait\_time）。 |


  图2 CommAnalyzerBandwidth

**表4 CommAnalyzerBandwidth**

| 字段 | 说明 |
| --- | --- |
| hccl\_op\_name | 通信算子名称。 |
| group\_name | 通信算子的分组。 |
| transport\_type | 通信传输类型，包含：LOCAL、SDMA、RDMA、PCIE、HCCS、SIO。 |
| transit\_size | 通信数据量，单位MB。 |
| transit\_time | 通信时长，单位ms。表示通信算子的通信耗时，如果通信耗时过长，可能是某条链路存在问题。 |
| bandwidth | 通信带宽大小，单位GB/s。 |
| large\_packet\_ratio | 通信数据大包占比。 |
| package\_size | 一次传输的通信数据包大小，单位MB。 |
| count | 通信传输次数。 |
| total\_duration | 数据传输总耗时，单位ms。 |


- --type=text或--type=db以及--rule=communication_matrix
  图3 CommAnalyzerMatrix

**表5 CommAnalyzerMatrix**

| 字段 | 说明 |
| --- | --- |
| hccl\_op\_name | 通信算子名称。 |
| group\_name | 通信算子的分组。 |
| src\_rank | 通信源Rank。 |
| dst\_rank | 通信目的Rank。 |
| transport\_type | 通信传输类型，包含：LOCAL、SDMA、RDMA、PCIE、HCCS、SIO。 |
| transit\_size | 通信数据量，单位MB。 |
| transit\_time | 通信时长，单位ms。表示通信算子的通信耗时，如果通信耗时过长，可能是某条链路存在问题。 |
| bandwidth | 通信带宽大小，单位GB/s。 |


- --type=text、--rule=communication
  图4 communication.json

- --type=text、--rule=communication_matrix
  图5 communication_matrix.json
