空闲时间原因分析

简介

空闲时间原因分析(free_analysis)提供了对Device侧大块空闲时间的自动分析功能,能够识别空闲时间产生的原因,帮助用户定位性能问题。该功能可以识别以下情况:

  • Device侧仍有任务在执行(但不属于计算/通信统计范围)
  • PyTorch层长时间未下发任务(host/框架侧idle)
  • CANN层存在异常的下发/launch间隔或node@launch耗时偏大

使用前准备

环境准备

完成msprof-analyze工具安装,具体请参见《msprof-analyze工具安装指南》。

数据准备

msprof-analyze需要传入采集的性能数据文件夹,如何采集性能数据请参见数据准备章节。

空闲时间原因分析

功能说明

使用msprof-analyze工具的空闲时间原因分析功能,对采集到的集群数据进行分析,识别每个rank中耗时最长的空闲时间及其产生原因。

命令格式

msprof-analyze -m free_analysis -d <cluster_data> [-o <output_path>] [--export_type <export_type>] [--top_num <top_num>]

参数说明

参数 可选/必选 说明
-m 必选 设置为free_analysis,使能空闲时间原因分析功能。
-d 必选 集群性能数据文件夹路径。
-o 可选 指定输出文件路径,默认为-d参数指定的路径。
--export_type 可选 指定输出文件类型,可选db或text,默认为db。
--top_num 可选 每个rank输出的Top空闲时间数量(按duration排序),默认为10。

更多参数详细介绍请参见msprof-analyze的参数说明

使用示例

执行空闲时间原因分析。

msprof-analyze -m free_analysis -d ./xxx/cluster_data -o ./xxx/output_path --top_num 10 --export_type text

输出说明

  • 当--export_type设置为db时,在-o参数指定的输出文件路径下生成cluster_analysis.db文件,本功能的分析结果为在该db文件中生成FreeAnalysis表。
  • 当--export_type设置为text时,在-o参数指定的输出文件路径下生成cluster_analysis_output/FreeAnalysis/free_analysis.csv文件。 具体介绍请参见输出结果文件说明

输出结果文件说明

本工具分析结果如下图示例: 输出结果展示

FreeAnalysis表

表字段如下:

字段 说明
rankId 卡号,INTEGER类型。
startTime(us) 空闲时间开始时间戳,TEXT类型,单位为us。
endTime(us) 空闲时间结束时间戳,TEXT类型,单位为us。
duration(us) 空闲时间持续时间,REAL类型,单位为us。
pytorchIdleTime(us) PyTorch层idle时间,REAL类型,单位为us。无数据时可能为0或NULL。
cannIdleTime(us) CANN层idle时间,REAL类型,单位为us。无数据时可能为0或NULL。
reason 空闲原因描述,TEXT类型。

free_analysis.csv

CSV文件列名如下:

字段 说明
Rank ID 卡号,TEXT类型。
Start Time(us) 空闲时间开始时间戳,TEXT类型,单位为us。
End Time(us) 空闲时间结束时间戳,TEXT类型,单位为us。
Duration(us) 空闲时间持续时间,REAL类型,单位为us。
Pytorch Idle Time(us) PyTorch层idle时间,REAL类型,单位为us。
Cann Idle Time(us) CANN层idle时间,REAL类型,单位为us。
Reason 空闲原因描述,TEXT类型。