通信性能数据解析
msprof通信性能数据解析功能主要用于统计通信类的分段耗时、拷贝信息、带宽等信息,以便进行通信类数据分析。通信类数据只有在多卡、多节点或集群场景下存在。
前提条件
- 完成使用前准备。
 - 对PROF_XXX目录已执行msprof的export(关闭clear)操作。
 
操作步骤(msprof命令行方式)
执行分析命令。
命令示例如下:
msprof --analyze=on [--type=<type>] [--rule=communication] --output=<dir> [--clear=on]
参数  | 
说明  | 
可选/必选  | 
|---|---|---|
--analyze  | 
分析性能数据文件,可选on或off,默认值为off。  | 
必选  | 
--type  | 
设置性能数据解析结果文件格式,即可以选择msprof命令行执行后自动解析的结果文件格式,取值为: 
 默认为text。  | 
可选  | 
--rule  | 
分析规则,可取值为: 
 以上两个参数值可以同时配置,使用逗号分隔,例如:--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。  | 
可选  | 
操作步骤(msprof.py脚本方式)
执行分析命令。
命令示例如下:
python3 msprof.py analyze [--type <type>] --rule communication -dir <dir> [--clear]
msprof.py脚本保存路径为:${INSTALL_DIR}/tools/profiler/profiler_tool/analysis/msprof,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。
参数  | 
说明  | 
可选/必选  | 
|---|---|---|
analyze  | 
分析性能数据文件。  | 
必选  | 
--type  | 
设置性能数据解析结果文件格式,即可以选择msprof.py脚本执行后自动解析的结果文件格式,取值为: 
 默认为text。  | 
可选  | 
-r或--rule  | 
分析规则,可取值为: 
 以上两个参数值可以二选一也可以同时配置,同时配置时使用逗号分隔,例如:--rule communication,communication_matrix。  | 
必选  | 
-dir或--collection-dir  | 
性能数据文件目录。须指定为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目录,以节省存储空间。配置该参数时表示开启数据精简模式,未配置表示关闭,默认关闭。  | 
可选  | 
解析结果
- --type=text、--rule=communication
 - --type=text、--rule=communication_matrix
 - --type=db、--rule=communication图3 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)。
图4 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=db、--rule=communication_matrix图5 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。
 

