昇腾社区首页
中文
注册

msprof采集应用工程的Profiling数据

命令示例

命令示例如下:
# 登录运行环境并进入“msprof”文件所在目录执行以下命令。
./msprof --application=/home/HwHiAiUser/HIAI_PROJECTS/MyAppname/out/main --output=/home/HwHiAiUser

参数说明

表1 参数说明

参数

描述

可选/必选

--ascendcl

控制acl性能数据采集的开关,可选on或off,默认为on。该参数配置前提是application参数已配置。

可采集acl性能数据,Host与Device之间、Device间的同步异步内存复制时延acl性能数据。

可选

--model-execution

控制ge model execution性能数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。

可选

--runtime-api

控制runtime api性能数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。

可采集runtime-api性能数据(不包含Host和Devise之间的数据搬运),Host与Device之间、Device间的同步异步内存复制时延runtime-api性能数据。

可选

--hccl

控制hccl数据采集开关,可选on或off,默认为off。该参数配置前提是application参数已配置。

可选

--task-time

控制ts timeline数据(Atlas 200/300/500 推理产品)。

控制hwts log数据(Atlas 训练系列产品Atlas 推理系列产品)采集开关。

可选on或off,默认为on。该参数配置前提是application参数已配置。

可选

--aicpu

采集AICPU算子的详细信息,如:算子执行时间、数据拷贝时间等。可选on或off,默认值为off。该参数配置前提是application参数已配置。

可选

--ai-core

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

可选

--aic-mode

AI Core硬件的采集类型,可选值task-based或sample-based,默认task-based。task-based是以task为粒度进行性能数据采集,sample-based是以固定的时间周期进行性能数据采集。

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

可选

--aic-freq

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

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

可选

--aic-metrics

AI Core性能指标采集项,默认为PipeUtilization,包括ArithmeticUtilization、PipeUtilization、Memory、MemoryL0、MemoryUB、ResourceConflictRatio。以上各参数值对应的详细采集指标请参见AI Core性能指标采集项说明

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

可选

--msproftx

控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。

Profiling开启msproftx功能之前,需要在程序内调用msproftx相关接口来开启程序的Profiling数据流的输出,详细操作请参见Profiling AscendCL API for Extension(Profiling AscendCL API扩展接口)

可选

--host-sys

Host侧性能数据采集开关,取值包括cpu,mem,disk,network和osrt,可选其中的一项或多项,选多项时用逗号隔开。配置该项必须配置host-sys-pid 参数或application参数。各项取值含义如下:

  • cpu:进程级别的CPU利用率。
  • mem:进程级别的内存利用率。
  • disk:进程级别的磁盘I/O利用率。
  • osrt:进程级别的syscall和pthreadcall。
  • network:系统级别的网络I/O利用率。

配置示例:--host-sys=cpu,mem,disk,network。

可选

--host-sys-pid

指定需要采集的Host侧应用程序的pid。

可选

  • 采集Host侧disk性能数据需要安装第三方开源工具iotop,采集osrt性能数据需要安装第三方开源工具perf和ltrace,其安装方法参见安装perf、iotop、ltrace工具
  • 使用开源工具ltrace采集osrt性能数据会导致CPU占用率过高,其与应用工程的pthread加解锁相关,会影响进程运行速度。
  • 由于开源工具iotop依赖于系统原生Python,请确保在采集Host侧disk性能数据时的环境为系统原生的Python环境。
  • KylinV10SP1操作系统下不支持--host-sys=osrt参数。
  • 完成解析后数据含义请参见Profiling数据说明,性能分析思路请参见Profiling性能分析样例参考

采集数据说明

配置msprof采集应用工程的Profiling数据参数后生成的Profiling数据如表2表3所示。

表2 timeline文件介绍

timeline文件名

相关参数

说明

msprof_{device_id}_{model_id}_{iter_id}.json

all

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

ai_stack_time_{device_id}_{model_id}_{iter_id}.json

--ascendcl

--model-execution

--runtime-api

--task-time

以上四个参数至少开启一个。

各个组件(ACL,GE,Runtime,Task Scheduler)的耗时。详情请参见各个组件的耗时数据说明

task_time_{device_id}_{model_id}_{iter_id}.json

--task-time

Task Scheduler任务调度信息。文件详情请参见Task Scheduler任务调度信息数据说明

acl_{device_id}_{model_id}_{iter_id}.json

--ascendcl

AscendCL接口耗时数据。文件详情请参见AscendCL接口耗时数据说明

runtime_api_{device_id}_{model_id}_{iter_id}.json

--runtime-api

Runtime接口耗时数据。文件详情请参见Runtime接口耗时数据说明

ge_{device_id}_{model_id}_{iter_id}.json

--model-execution

GE接口耗时数据。文件详情请参见GE接口耗时数据说明

step_trace_{device_id}_{model_id}_{iter_id}.json

-

迭代轨迹数据,每轮迭代的耗时。文件详情请参见迭代轨迹数据说明

hccl_{device_id}_{model_id}_{iter_id}.json

--hccl

HCCL数据。文件详情请参见HCCL数据说明

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侧内存利用率。生成该文件需要采集的profiling数据中包含host_mem开头的文件。详情请参见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数据说明

msproftx数据

msproftx

msproftx数据,通过Profiling AscendCL API for Extension(Profiling AscendCL API扩展接口)采集用户和上层框架程序的性能数据,并由msprof命令行的--msproftx参数进行数据导出。

注:{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。

表3 summary文件介绍

summary文件名

相关参数

说明

acl_{device_id}_{model_id}_{iter_id}.csv

--ascendcl

AscendCL接口的耗时。详情请参见AscendCL接口耗时数据说明

acl_statistic_{device_id}_{model_id}_{iter_id}.csv

--ascendcl

AscendCL接口调用次数及耗时。详情请参见AscendCL接口调用次数及耗时数据说明

op_summary_{device_id}_{model_id}_{iter_id}.csv

--task-time(可选)

--ai-core(可选)

--aic-metrics(可选)

--aicpu(可选)

配置--task-time、--ai-core和--aic-metrics生成AI Core算子信息;配置--aicpu生成AI CPU算子信息。

AI Core数据,获取每个task的ai core metrics的耗时。详情请参见AI Core数据说明

op_statistic_{device_id}_{model_id}_{iter_id}.csv

--task-time(可选)

--ai-core(可选)

--aic-metrics(可选)

--aicpu(可选)

配置--task-time、--ai-core和--aic-metrics生成AI Core算子信息;配置--aicpu生成AI CPU算子信息。

AI Core算子调用次数及耗时,从算子类型维度找出耗时最大的算子类型。详情请参见AI Core算子调用次数及耗时数据说明

step_trace_{device_id}_{model_id}_{iter_id}.csv

-

迭代轨迹数据。文件详情请参见迭代轨迹数据说明

ai_stack_time_{device_id}_{model_id}_{iter_id}.csv

--ascendcl

--model-execution

--runtime-api

--task-time

以上四个参数至少开启一个。

每个组件(AscendCL,GE,Runtime,Task Scheduler)的耗时。详情请参见各个组件的耗时数据说明

runtime_api_{device_id}_{model_id}_{iter_id}.csv

--runtime-api

每个runtime api的调用时长。详情请参见Runtime接口耗时数据说明

aicpu_{device_id}_{model_id}_{iter_id}.csv

--aicpu

AI CPU数据。文件详情请参见AI CPU数据说明

fusion_op_{device_id}_{model_id}_{iter_id}.csv

-

模型中算子融合前后信息。详情请参见模型中算子融合前后信息数据说明

task_time_{device_id}_{model_id}_{iter_id}.csv

--task-time

Task Scheduler的任务调度信息数据。详情请参见:

os_runtime_statistic.csv

--host-sys=osrt

Host侧syscall和pthreadcall数据。详情请参见Host侧syscall和pthreadcall数据说明

prof_rule_0.json

-

调优建议。

注:{device_id}表示设备ID,{model_id}表示模型ID,{iter_id}表示某轮迭代的ID号。