采集昇腾AI处理器系统数据

命令示例

以运行用户登录Ascend-cann-toolkit开发套件包所在环境,完成环境准备后执行性能数据采集命令,命令示例如下:

msprof --output=/home/projects/output --sys-devices=<ID> --sys-period=<period> --ai-core=on --sys-hardware-mem=on --sys-cpu-profiling=on --sys-profiling=on --sys-pid-profiling=on --dvpp-profiling=on

采集昇腾AI处理器系统数据时,不指定--application参数,表示仅采集昇腾AI处理器系统数据,此时--output、--sys-period、--sys-devices参数必选;若同时指定--application参数及昇腾AI处理器系统数据参数,此时--sys-period--sys-devices参数不生效。

参数说明

表1 参数说明

参数

描述

支持情况

--sys-period

系统的采样时长,取值范围大于0,上限为30*24*3600,单位s。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-devices

设备ID。可以为all或多个设备ID(以逗号分隔)。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--ai-core

控制AI Core和AI Vector Core数据采集的开关,可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持AI Core采集

Atlas 200/500 A2推理产品:支持AI Core和AI Vector Core采集

Atlas 推理系列产品(Ascend 310P处理器):支持AI Core采集

Atlas 训练系列产品:支持AI Core采集

Atlas A2训练系列产品:支持AI Core和AI Vector Core采集

--aic-mode

AI Core和AI Vector Core硬件的采集类型,可选值task-based或sample-based。

task-based是以task为粒度进行性能数据采集,sample-based是以固定的时间周期进行性能数据采集。

配置为采集AI任务运行性能数据时自动识别为task-based;配置为采集昇腾AI处理器系统数据时自动识别为sample-based。

该参数配置前提是ai-core参数设置为on。

Atlas 200/300/500 推理产品:支持AI Core硬件采集类型

Atlas 200/500 A2推理产品:支持AI Core和AI Vector Core硬件采集类型

Atlas 推理系列产品(Ascend 310P处理器):支持AI Core硬件采集类型

Atlas 训练系列产品:支持AI Core硬件采集类型

Atlas A2训练系列产品:支持AI Core和AI Vector Core硬件采集类型

--aic-freq

sample-based场景下的采样频率,默认值100,范围1~100,单位hz。

该参数配置前提是ai-core参数设置为on。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--aic-metrics

AI Core和AI Vector Core性能指标采集项。取值包括:

该参数配置前提是ai-core参数设置为on。

说明:
支持自定义需要采集的寄存器,例如:--aic-metrics=Custom:0x49,0x8,0x15,0x1b,0x64,0x10。
  • Custom字段表示自定义类型,配置为具体的寄存器值,取值范围为[0x1, 0x6E]。
  • 配置的寄存器数最多不能超过8个,寄存器通过“,”区分开。
  • 寄存器的值支持十六进制或十进制。

Atlas 200/300/500 推理产品:支持AI Core采集

Atlas 200/500 A2推理产品:支持AI Core和AI Vector Core采集

Atlas 推理系列产品(Ascend 310P处理器):支持AI Core采集

Atlas 训练系列产品:支持AI Core采集

Atlas A2训练系列产品:支持AI Core和AI Vector Core采集

--sys-hardware-mem

DDR、HBM带宽及内存采集开关、LLC的读写带宽数据采集开关、acc_pmu数据和SoC传输带宽信息采集开关,可选on或off,默认为off。

Atlas 200/300/500 推理产品:支持采集DDR、LLC

Atlas 200/500 A2推理产品:支持采集DDR、LLC、acc_pmu数据、SoC传输带宽信息

Atlas 推理系列产品(Ascend 310P处理器):支持采集DDR、LLC

Atlas 训练系列产品:支持采集DDR、HBM、LLC

Atlas A2训练系列产品:支持采集HBM、LLC、acc_pmu数据、SoC传输带宽信息

--sys-hardware-mem-freq

DDR、HBM带宽及内存、LLC的读写带宽数据、acc_pmu数据和SoC传输带宽信息采集频率,范围[1,100],默认值为50,单位hz。

设置该参数需要sys-hardware-mem参数设置为on。

和--sys-hardware-mem参数支持情况保持一致

--llc-profiling

LLC Profiling采集事件,取值包括:

  • Atlas 200/300/500 推理产品
    • capacity:采集AI CPU和Control CPU的LLC capacity数据。
    • bandwidth:采集LLC bandwidth。默认值为capacity。
  • Atlas 200/500 A2推理产品
    • read:读事件,三级缓存读速率。
    • write:写事件,三级缓存写速率。默认为read。
  • Atlas 推理系列产品(Ascend 310P处理器)
    • read:读事件,三级缓存读速率。
    • write:写事件,三级缓存写速率。默认为read。
  • Atlas 训练系列产品
    • read:读事件,三级缓存读速率。
    • write:写事件,三级缓存写速率。默认为read。
  • Atlas A2训练系列产品
    • read:读事件,三级缓存读速率。
    • write:写事件,三级缓存写速率。默认为read。

如要采集该数据,需要sys-hardware-mem设置为on。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-cpu-profiling

CPU(AI CPU、Ctrl CPU、TS CPU)采集开关。可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-cpu-freq

CPU采集频率,范围[1,50],默认值为50,单位hz。

设置该参数需要sys-cpu-profiling参数设置为on。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-profiling

系统CPU usage及System memory采集开关。可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-sampling-freq

系统CPU usage及System memory采集频率,范围[1,10],默认值为10,单位hz。

设置该参数需要sys-profiling参数设置为on。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-pid-profiling

所有进程的CPU usage及所有进程的memory采集开关。可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-pid-sampling-freq

所有进程的CPU usage及所有进程的memory采集频率,范围[1,10],默认值为10,单位hz。

设置该参数需要sys-pid-profiling参数设置为on。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--sys-io-profiling

NIC、ROCE采集开关。可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持采集NIC

Atlas 200/500 A2推理产品:支持采集NIC,容器场景参数不生效

Atlas 推理系列产品(Ascend 310P处理器):不支持该参数

Atlas 训练系列产品:支持采集NIC和和ROCE

Atlas A2训练系列产品:支持采集NIC和ROCE

--sys-io-sampling-freq

NIC、ROCE采集频率,范围[1,100],默认值为100,单位hz。

设置该参数需要sys-io-profiling参数设置为on。

和--sys-io-profiling参数支持情况保持一致

--sys-interconnection-profiling

集合通信带宽数据(HCCS)、PCIe数据采集开关、片间传输带宽信息采集开关。可选on或off,默认值为off。

Atlas 200/300/500 推理产品:不支持该参数

Atlas 200/500 A2推理产品:不支持该参数

Atlas 推理系列产品(Ascend 310P处理器):支持采集PCIe数据

Atlas 训练系列产品:支持采集HCCS、PCIe数据

Atlas A2训练系列产品:支持采集HCCS、PCIe数据、片间传输带宽信息

--sys-interconnection-freq

集合通信带宽数据(HCCS)、PCIe数据采集频率、片间传输带宽信息采集频率,范围[1,50],默认值为50,单位hz。

设置该参数需要sys-interconnection-profiling参数设置为on。

和--sys-interconnection-profiling参数支持情况保持一致

--dvpp-profiling

DVPP采集开关,可选on或off,默认值为off。

Atlas 200/300/500 推理产品:支持

Atlas 200/500 A2推理产品:支持

Atlas 推理系列产品(Ascend 310P处理器):支持采集性能数据,暂不支持解析

Atlas 训练系列产品:支持

Atlas A2训练系列产品:支持

--dvpp-freq

DVPP采集频率,范围[1,100],默认值为50,单位hz。

设置该参数需要dvpp-profiling参数设置为on。

和--dvpp-profiling参数支持情况保持一致

--instr-profiling

采集AI Core和AI Vector的带宽和延时开关,可选on或off,默认值为off。

需要在单算子场景下采集AI任务性能数据(即指定--application参数)时才能采集到具体性能数据。

Atlas 200/300/500 推理产品:不支持

Atlas 200/500 A2推理产品:不支持

Atlas 推理系列产品(Ascend 310P处理器):不支持

Atlas 训练系列产品:不支持

Atlas A2训练系列产品:仅单算子场景支持

--instr-profiling-freq

AI Core和AI Vector的带宽和延时采集频率,范围[300,30000],默认值为1000,单位cycle。

设置该参数需要instr-profiling参数设置为on。

和--instr-profiling参数的支持情况保持一致

  • Ascend EP场景下,使用msprof命令行方式采集整网推理Profiling数据时,如果通过配置--llc-profiling--sys-cpu-profiling--sys-profiling--sys-pid-profiling采集项采集相应数据,采集完成后,除--sys-cpu-profiling采集项仅生成TS CPU数据外,其余采集项均不会生成数据;但在不配置--application参数时,配置上述几个采集项均会有数据生成。
  • 对于Atlas A2训练系列产品,--instr-profiling开关与--ascendcl、--model-execution、--runtime-api、--hccl、--task-time、--aicpu、--ai-core、--aic-mode、--aic-freq、--aic-metrics、--l2互斥,无法同时执行。

采集数据说明

配置采集昇腾AI处理器系统数据参数后生成的性能数据如表2表3所示。

表2 采集内容(timeline)

timeline文件名

相关参数

说明

msprof_*.json

所有可生成数据的参数均会在此文件写入数据。

timeline数据总表。对采集到的timeline性能数据按照迭代粒度进行性能展示。详情请参见msprof(timeline数据总表)

ai_core_utilization_*.json

--ai-core

--aic-metrics

--aic-mode=sample-based

每个Core上指令占比数据。详情请参见每个Core上指令占比数据

ddr_*.json

--sys-hardware-mem

DDR内存读写速率。详情请参见DDR内存读写速率数据

hbm_*.json

--sys-hardware-mem

HBM内存读写速率。文件详情请参见HBM内存读写速率数据

llc_aicpu_*.json

--sys-hardware-mem

--llc-profiling=capacity

AI CPU的三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见AI CPU的三级缓存使用量数据

llc_ctrlcpu_*.json

--sys-hardware-mem

--llc-profiling=capacity

Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。文件详情请参见Control CPU三级缓存使用量数据

llc_bandwidth_*.json

--sys-hardware-mem

--llc-profiling=bandwidth

三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。文件详情请参见三级缓存带宽数据

llc_read_write_*.json

--sys-hardware-mem

三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据

acc_pmu_*.json

--sys-hardware-mem

加速器带宽及并发数据。文件详情请参见加速器带宽及并发数据

stars_soc_*.json

--sys-hardware-mem

SoC传输带宽信息。文件详情请参见SoC传输带宽信息数据

npu_mem_*.json

--sys-hardware-mem

NPU内存占用信息。文件详情请参见NPU内存占用数据

nic_*.json

--sys-io-profiling

每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据

roce_*.json

--sys-io-profiling

RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据

hccs_*.json

--sys-interconnection-profiling

集合通信带宽数据。文件详情请参见集合通信带宽数据

pcie_*.json

--sys-interconnection-profiling

PCIe带宽。文件详情请参见PCIe带宽数据

stars_chip_trans_*.json

--sys-interconnection-profiling

片间传输带宽信息。文件详情请参见片间传输带宽信息数据

instr_*.json

--instr-profiling

AI Core和AI Vector的带宽和延时数据。文件详情请参见AI Core和AI Vector的带宽和延时数据

注:“*”表示{device_id}_{model_id}_{iter_id}_{timestamp},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID,{timestamp}表示时间戳。

表3 采集内容(summary)

summary文件名

相关参数

说明

ai_core_utilization_*.csv

--ai-core

--aic-metrics

--aic-mode=sample-based

每个Core上指令占比数据。详情请参见每个Core上指令占比数据

ai_vector_core_utilization_*.csv

--ai-core

--aic-metrics

--aic-mode=sample-based

每个AI Vector Core上指令占比数据。详情请参见每个AI Vector Core上指令占比数据

ddr_*.csv

--sys-hardware-mem

DDR内存读写速率。详情请参见DDR内存读写速率数据

hbm_*.csv

--sys-hardware-mem

HBM内存读写速率,data中包含hbm.开头的文件。详情请参见HBM内存读写速率数据

llc_aicpu_*.csv

--sys-hardware-mem

--llc-profiling=capacity

AI CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见AI CPU三级缓存使用量数据

llc_ctrlcpu_*.csv

--sys-hardware-mem

--llc-profiling=capacity

Control CPU三级缓存使用量,LLC Profiling采集事件设置为capacity时才会导出该文件。详情请参见Ctrl CPU三级缓存使用量数据

llc_bandwidth_*.csv

--sys-hardware-mem

--llc-profiling=bandwidth

三级缓存带宽,LLC Profiling采集事件设置为bandwidth时才会导出该文件。三级缓存带宽数据

llc_read_write_*.csv

--sys-hardware-mem

三级缓存读写速率数据。文件详情请参见三级缓存读写速率数据

npu_mem_*.csv

--sys-hardware-mem

NPU内存占用信息。文件详情请参见NPU内存占用数据

ai_cpu_top_function_*.csv

--sys-cpu-profiling

AI CPU热点函数。文件详情请参见AI CPU热点函数数据

ai_cpu_pmu_events_*.csv

--sys-cpu-profiling

AI CPU PMU事件。文件详情请参见AI CPU PMU事件数据

ctrl_cpu_top_function_*.csv

--sys-cpu-profiling

Ctrl CPU热点函数。文件详情请参见Ctrl CPU热点函数数据

ctrl_cpu_pmu_events_*.csv

--sys-cpu-profiling

Ctrl CPU PMU事件。文件详情请参见Ctrl CPU PMU事件数据

ts_cpu_top_function_*.csv

--sys-cpu-profiling

TS CPU热点函数。文件详情请参见TS CPU热点函数数据

ts_cpu_pmu_events_*.csv

--sys-cpu-profiling

TS CPU PMU事件。文件详情请参见TS CPU PMU事件数据

cpu_usage_*.csv

--sys-profiling

AI CPU、Control CPU利用率。文件详情请参见AI CPU、Ctrl CPU利用率数据

sys_mem_*.csv

--sys-profiling

指定device的内存使用情况。详情请参见系统内存数据

process_cpu_usage_*.csv

--sys-pid-profiling

进程CPU占用率。生成文件详情请参见进程CPU占用率数据

process_mem_*.csv

--sys-pid-profiling

进程内存占用率。文件详情请参见进程内存占用率数据

nic_*.csv

--sys-io-profiling

每个时间节点网络信息数据。文件详情请参见每个时间节点网络信息数据

roce_*.csv

--sys-io-profiling

RoCE通信接口带宽数据。文件详情请参见RoCE通信接口带宽数据

hccs_*.csv

--sys-interconnection-profiling

集合通信带宽数据。文件详情请参见集合通信带宽数据

pcie_*.csv

--sys-interconnection-profiling

PCIe带宽。详情请参见PCIe带宽数据

dvpp_*.csv

--dvpp-profiling

DVPP数据。文件详情请参见DVPP数据

prof_rule_0.json

-

调优建议。无需指定Profiling参数自动生成,完成后打屏显示结果,详细介绍请参见性能调优建议

注:“*”表示{device_id}_{model_id}_{iter_id}_{timestamp},其中{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID,{timestamp}表示时间戳。