mindstudio_monitor模块接口参考
mindstudio_monitor模块介绍
提供IPC(Inter-Process Communication)通信接口以及独立控制 MSPTI Monitor 采集和获取性能数据的能力
- IPC控制通道: profiler backend 向 dynolog daemon 获取 profiler 配置
- IPC数据通道: MSPTI Monitor 向 dynolog daemon 发送性能数据
- 轻量化性能数据采集
- 控制 MSPTI Monitor 启停采集数据
- 在线获取 MSPTI Monitor 采集的性能数据
- 将 MSPTI Monitor 采集的性能数据以 Excel 格式导出到本地
PyDynamicMonitorProxy接口说明
负责与 dynolog daemon 进行 IPC 通信,向其发送注册请求、Profiler 配置参数等,用户不需要直接调用该接口。
init_dyno向 dynolog daemon 发送注册请求- input: npu_id(int)
- return: None
poll_dyno向 dynolog daemon 获取 Profiler 控制参数- input: None
- return: str,返回控制参数
enable_dyno_npu_monitor开启mspti监测- input: cfg_map(Dict[str,str]) 参数配置
- return: None
finalize_dyno释放 msmonitor 中相关资源、线程- input: None
- return: None
update_profiler_status上报 Profiler 状态- input: status(Dict[str,str])
- return: None
Monitor特性接口说明
ActivityKind枚举类
该枚举类定义 MSPTI Monitor 支持的数据采集类型,用于 monitor 模块的配置,每个枚举值对应 MSPTI Monitor 的一种数据采集类型
- ActivityKind.Marker: 采集 mstx 打点数据,返回 Marker 数据结构
- ActivityKind.Kernel: 采集计算类算子的耗时数据,返回 Kernel 数据结构
- ActivityKind.Communication: 采集通信类算子的耗时数据,返回 Communication 数据结构
- ActivityKind.API: 采集算子调用 API 的耗时数据,返回 API 数据结构
- ActivityKind.AclAPI: 采集 ACL API 的调用耗时数据,返回 API 数据结构
- ActivityKind.NodeAPI: 采集 Node API 的调用耗时数据,返回 API 数据结构
- ActivityKind.RuntimeAPI: 采集 Runtime 组件 API 的调用耗时数据,返回 API 数据结构
Monitor接口
start开启 monitor 数据采集- input: kinds(List[ActivityKind]) 数据采集类型列表
- return: None
stop停止 monitor 数据采集- input: None
- return: None
get_result获取 monitor 采集的性能数据- input: None
- return: Dict[ActivityKind, List[ActivityData]],返回性能数据
save保存 monitor 采集的性能数据- input: file_path(str) 保存文件路径
- return: None
ActivityData数据结构
定义 Monitor 采集的性能数据结构
Marker结构体字段
name(str): mstx打点消息内容sourceKind(str): 消息来源类型,"Host" 或 "Device"domain(str): 消息所属 domain 名称id(int): 消息IDstartNs(int): mstx打点开始时间,单位:nsendNs(int): mstx打点结束时间,单位:nspid(int): sourceKind 为 "Host" 时为进程ID,为 "Device" 时为 0tid(int): sourceKind 为 "Host" 时为线程ID,为 "Device" 时为 0deviceId(int): sourceKind 为 "Device" 时为marker所属设备ID,为 "Host" 时为 0streamId(int): sourceKind 为 "Device" 时为marker所属流ID,为 "Host" 时为 0
Kernel结构体字段
name(str): 计算类算子名称startNs(int): 算子执行开始时间,单位:nsendNs(int): 算子执行结束时间,单位:nsdeviceId(int): 算子执行所在的设备IDstreamId(int): 算子执行所在的流IDcorrelationId(int): 算子执行关联ID,用于和API数据关联type(str): 算子类型,例如 "KERNEL_AICORE"、"KERNEL_AIVEC"、"KERNEL_AICPU" 等
Communication结构体字段
name(str): 通信类算子名称startNs(int): 算子执行开始时间,单位:nsendNs(int): 算子执行结束时间,单位:nsdeviceId(int): 算子执行所在的设备IDstreamId(int): 算子执行所在的流IDcount(int): 算子传输的数据量dataType(str): 算子传输的数据类型,例如 "FP32"、"INT8" 等commName(str): 算子所属通信域名称algType(str): 算子所属通信算法类型,例如 "RING"、"MESH" 等correlationId(int): 算子执行关联ID,用于和API数据关联
API结构体字段
name(str): API 名称startNs(int): API 调用开始时间,单位:nsendNs(int): API 调用结束时间,单位:nspid(int): 调用 API 的进程IDtid(int): 调用 API 的线程IDcorrelationId(int): API调用关联ID,用于和Kernel/Communication数据关联
安装方式
mindstudio_monitor模块安装请参见《msMonitor工具安装指南》。