msprof采集System Profiling数据
命令示例
命令示例如下:
# 登录运行环境并进入“msprof”文件所在目录执行以下命令。
./msprof --output=/home/HwHiAiUser --model-execution=on --runtime-api=on --aicpu=on
参数说明
参数 |
描述 |
可选/必选 |
---|---|---|
--output |
收集到的profiling的数据的存放路径。 |
必选 |
--ai-core |
控制AI Core数据采集的开关,可选on或off,默认值为off。 |
可选 |
--aic-mode |
AI Core硬件的采集类型,可选值task-based或sample-based,默认task-based。task-based是以task为粒度进行性能数据采集,sample-based是以固定的时间周期进行性能数据采集。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-freq |
sample-based场景下的采样频率,默认值10,范围10~1000,单位hz。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--aic-metrics |
AI Core性能指标采集项,默认为PipeUtilization,包括ArithmeticUtilization、PipeUtilization、Memory、MemoryL0、ResourceConflictRatio。以上各参数值对应的详细采集指标请参见AI Core性能指标采集项说明。 该参数配置前提是ai-core参数设置为on。 |
可选 |
--sys-period |
系统的采样时长,范围>0,单位s。 |
必选 |
--sys-devices |
设备id,system场景必须配置,可以为all或多个设备id(以逗号分隔)。 |
必选 |
--sys-hardware-mem |
控制片上内存,LLC的读写带宽数据采集开关,可选on或off,默认为off。 |
可选 |
--sys-hardware-mem-freq |
片上内存、LLC采集频率,范围1~1000,默认值为50,单位hz。 设置该参数需要sys-hardware-mem参数设置为on。 |
可选 |
--llc-profiling |
LLC Profiling采集事件,可以设置为 1、read:读事件,二级缓存读速率; 2、write:写事件,二级缓存写速率。 默认为read。该参数需要sys-hardware-mem设置为on。 |
可选 |
--sys-cpu-profiling |
CPU(AI CPU、Ctrl CPU、TS CPU)热点函数、PMU事件采集开关。可选on或off,默认值为off。 |
可选 |
--sys-cpu-freq |
CPU(AI CPU、Ctrl CPU、TS CPU)热点函数、PMU事件采集频率,范围1-50,默认值为50,单位hz。 设置该参数需要sys-cpu-profiling参数设置为on。 |
可选 |
--sys-profiling |
系统CPU usage及System memory采集开关。可选on或off,默认值为off。 |
可选 |
--sys-sampling-freq |
系统CPU usage及System memory采集频率,范围1-10,默认值为10,单位hz。 设置该参数需要sys-profiling参数设置为on。 |
可选 |
--sys-pid-profiling |
进程的CPU usage及进程的memory采集开关。可选on或off,默认值为off。 |
可选 |
--sys-pid-sampling-freq |
进程的CPU usage及进程的memory采集频率,范围1-10,默认值为10,单位hz。 设置该参数需要sys-pid-profiling参数设置为on。 |
可选 |
--sys-io-profiling |
NIC(Atlas 200/300/500 推理产品)(Atlas 训练系列产品)、ROCE(Atlas 训练系列产品)采集开关。可选on或off,默认值为off。 |
可选 |
--sys-io-sampling-freq |
NIC(Atlas 200/300/500 推理产品)(Atlas 训练系列产品)、ROCE(Atlas 训练系列产品)采集频率,范围1-100,默认值为100,单位hz。 设置该参数需要sys-io-profiling参数设置为on。 |
可选 |
--sys-interconnection-profiling |
PCIe、HCCS采集开关,可选on或off,默认值为off。 |
可选 |
--sys-interconnection-freq |
PCIe、HCCS采集频率,范围1-50,默认值为50,单位hz。 设置该参数需要sys-interconnection-profiling参数设置为on。 |
可选 |
--dvpp-profiling |
DVPP采集开关,可选on或off,默认值为off。 |
可选 |
--dvpp-freq |
DVPP采集频率,范围1-100,默认值为50,单位hz。 设置该参数需要dvpp-profiling参数设置为on。 |
可选 |
--l2 |
控制L2采样数据的开关,可选on或off,默认为off。该参数配置前提是application参数已配置。 |
可选 |
--host-sys |
Host侧性能数据采集开关,取值包括cpu,mem,disk,network和osrt,可选其中的一项或多项,选多项时用逗号隔开。配置该项必须配置host-sys-pid 参数。各项取值含义如下:
配置示例:--host-sys=cpu,mem,disk,network。 |
可选 |
--host-sys-pid |
指定需要采集的应用的pid。 |
可选 |

- 采集Host侧disk性能数据需要安装第三方开源工具iotop,采集osrt性能数据需要安装第三方开源工具perf和ltrace,其安装方法参见安装perf、iotop、ltrace工具。
- 使用开源工具ltrace采集osrt性能数据会导致CPU占用率过高,其与应用工程的pthread加解锁相关,会影响进程运行速度。
- 由于开源工具iotop依赖于系统原生Python,请确保在采集Host侧disk性能数据时的环境为系统原生的Python环境。
- KylinV10SP1操作系统下不支持--host-sys=osrt参数。
- 在仅采集system profiling数据时,参数--sys-period、--sys-devices、--output必须同时指定。
- 采集整网训练Profiling数据,即既采集job profiling数据,又采集system profiling数据时,参数--sys-period、--sys-devices无需配置。
- Ascend EP场景下,使用msprof命令行方式采集整网训练Profiling数据时,通过配置--sys-cpu-profiling、--sys-profiling和--sys-pid-profiling采集项采集相应数据,采集完成后--sys-cpu-profiling采集项仅有TS CPU的数据生成,其余采集项均不会生成数据;但在仅采集System Profiling数据,即不配置--application参数时,配置上述几个采集项均会有数据生成。
- 完成解析后数据含义请参见Profiling数据说明,性能分析思路请参见Profiling性能分析样例参考。
采集数据说明
配置msprof采集System Profiling数据参数后生成的Profiling数据如表2和表3所示。
timeline文件名 |
相关参数 |
说明 |
---|---|---|
llc_aicpu_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-mem --llc-profiling=capacity |
AI CPU的三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见AI CPU的三级缓存使用量数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
llc_ctrlcpu_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-mem --llc-profiling=capacity |
Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见Control CPU三级缓存使用量数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
llc_bandwidth_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-mem --llc-profiling=bandwidth |
三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。文件详情请参见三级缓存带宽数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
llc_read_write_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-mem |
三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据说明(Atlas 训练系列产品)。 仅Atlas 训练系列产品与Atlas 推理系列产品会生成该文件。 |
ddr_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-mem |
片上内存读写速率。详情请参见片上内存读写速率数据。 |
hbm_{device_id}_{model_id}_{iter_id}.json |
--sys-hardware-me |
片上内存读写速率。文件详情请参见片上内存读写速率数据。 仅Atlas 训练系列产品会生成该文件。 |
hccs_{device_id}_{model_id}_{iter_id}.json |
--sys-interconnection-profiling |
仅Atlas 训练系列产品会生成该文件。 集合通信带宽数据。文件详情请参见集合通信带宽数据说明(Atlas 训练系列产品)。 仅Atlas 训练系列产品会生成该文件。 |
nic_{device_id}_{model_id}_{iter_id}.json |
--sys-io-profiling |
每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据说明(Atlas 200/300/500 推理产品)(Atlas 训练系列产品)。 仅Atlas 训练系列产品与Atlas 200/300/500 推理产品会生成该文件。 |
roce_{device_id}_{model_id}_{iter_id}.json |
--sys-io-profiling |
RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据说明(Atlas 训练系列产品)。 仅Atlas 训练系列产品会生成该文件。 |
pcie_{device_id}_{model_id}_{iter_id}.json |
--sys-interconnection-profiling |
PCIe带宽。详情请参见PCIe带宽数据说明(Atlas 推理系列产品与Atlas 训练系列产品)。 仅Atlas 训练系列产品与Atlas 推理系列产品会生成该文件。 |
ai_core_utilization_{device_id}_{model_id}_{iter_id}.json |
--ai-core |
每个Core上指令占比数据,sample-based模式下才会生成。详情请参见每个Core上指令占比数据。 |
host_cpu_usage.json |
--host-sys=cpu |
Host侧CPU利用率。详情请参见Host侧CPU利用率数据说明。 |
host_disk_usage.json |
--host-sys=disk |
Host侧磁盘I/O利用率。详情请参见Host侧磁盘I/O利用率数据说明。 |
host_mem_usage.json |
--host-sys=mem |
Host侧内存利用率。详情请参见Host侧内存利用率数据说明。 |
host_network_usage.json |
--host-sys=network |
Host侧网络I/O利用率。详情请参见Host侧网络I/O利用率数据说明。 |
os_runtime_api.json |
--host-sys=osrt |
Host侧syscall和pthreadcall数据。详情请参见Host侧syscall和pthreadcall数据说明。 |
注:{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。 |
summary文件名 |
相关参数 |
说明 |
---|---|---|
l2_cache_{device_id}_{model_id}_{iter_id}.csv |
--l2 |
L2Cache数据。详情请参见L2Cache数据说明(Atlas 推理系列产品与Atlas 训练系列产品)。 仅Atlas 训练系列产品和Atlas 推理系列产品会生成该文件。 |
ai_core_utilization_{device_id}_{model_id}_{iter_id}.csv |
--ai-core |
每个Core上指令占比数据,sample-based模式下才会生成。详情请参见每个Core上指令占比数据说明。 |
ddr_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem |
片上内存读写速率。详情请参见片上内存读写速率数据说明。 |
hbm_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem |
片上内存读写速率。详情请参见片上内存读写速率数据说明。 仅Atlas 训练系列产品会生成该文件。 |
hccs_{device_id}_{model_id}_{iter_id}.csv |
--sys-interconnection-profiling |
集合通信带宽数据。文件详情请参见集合通信带宽数据说明(Atlas 训练系列产品)。 仅Atlas 训练系列产品会生成该文件。 |
roce_{device_id}_{model_id}_{iter_id}.csv |
--sys-io-profiling |
RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据说明(Atlas 训练系列产品)。 仅Atlas 训练系列产品会生成该文件。 |
pcie_{device_id}_{model_id}_{iter_id}.csv |
--sys-interconnection-profiling |
PCIe带宽。详情请参见PCIe带宽数据说明(Atlas 推理系列产品与Atlas 训练系列产品)。 仅Atlas 训练系列产品和Atlas 推理系列产品会生成该文件。 |
cpu_usage_{device_id}_{model_id}_{iter_id}.csv |
--sys-profiling |
AI CPU、Control CPU利用率。文件详情请参见AI CPU、Ctrl CPU利用率数据说明。 |
process_cpu_usage_{device_id}_{model_id}_{iter_id}.csv |
--sys-pid-profiling |
进程CPU占用率。生成文件详情请参见进程CPU占用率数据说明。 |
process_mem_{device_id}_{model_id}_{iter_id}.csv |
--sys-pid-profiling |
进程内存占用率。文件详情请参见进程内存占用率数据说明。 |
sys_mem_{device_id}_{model_id}_{iter_id}.csv |
-sys-profiling |
指定device的内存使用情况。详情请参见系统内存数据说明。 |
nic_{device_id}_{model_id}_{iter_id}.csv |
--sys-io-profiling |
每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据说明(Atlas 200/300/500 推理产品)(Atlas 训练系列产品)。 仅Atlas 训练系列产品和Atlas 200/300/500 推理产品会生成该文件。 |
dvpp_{device_id}_{model_id}_{iter_id}.csv |
--dvpp-profiling |
DVPP数据。文件详情请参见DVPP数据说明(Atlas 200/300/500 推理产品)(Atlas 训练系列产品)。 仅Atlas 训练系列产品和Atlas 200/300/500 推理产品会生成该文件。 |
llc_read_write_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem |
三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据说明(Atlas 推理系列产品与Atlas 训练系列产品)。 仅Atlas 训练系列产品和Atlas 推理系列产品会生成该文件。 |
llc_aicpu_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem --llc-profiling=capacity |
AI CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见AI CPU三级缓存使用量数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
llc_ctrlcpu_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem --llc-profiling=capacity |
Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见Ctrl CPU三级缓存使用量数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
llc_bandwidth_{device_id}_{model_id}_{iter_id}.csv |
--sys-hardware-mem --llc-profiling=bandwidth |
三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。三级缓存带宽数据说明(Atlas 200/300/500 推理产品)。 仅Atlas 200/300/500 推理产品会生成该文件。 |
ai_cpu_top_function_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
AI CPU热点函数。文件详情请参见AI CPU热点函数数据说明。 |
ai_cpu_pmu_events_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
AI CPU PMU事件。文件详情请参见AI CPU PMU事件数据说明。 |
ctrl_cpu_top_function_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
Ctrl CPU热点函数。文件详情请参见Ctrl CPU热点函数数据说明。 |
ctrl_cpu_pmu_events_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
Ctrl CPU PMU事件。文件详情请参见Ctrl CPU PMU事件数据说明。 |
ts_cpu_top_function_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
TS CPU热点函数。文件详情请参见TS CPU热点函数数据说明。 |
ts_cpu_pmu_events_{device_id}_{model_id}_{iter_id}.csv |
--sys-cpu-profiling |
TS CPU PMU事件。文件详情请参见TS CPU PMU事件数据说明。 |
os_runtime_statistic.csv |
--host-sys=osrt |
Host侧syscall和pthreadcall数据。详情请参见Host侧syscall和pthreadcall数据说明。 |
注:{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。 |