msPTI特性设计说明书¶
| 所属SIG组: | mstt-sig |
| 落入版本: | MindStudio 26.0.0 |
| 设计人员: | chenhao |
| 日期: | 2026.01.21 |
Copyright © 2022 openGauss Community
您对"本文档"的复制,使用,修改及分发受知识共享(Creative Commons)署名—相同方式共享4.0国际公共许可协议(以下简称"CC BY-SA 4.0")的约束。 为了方便用户理解,您可以通过访问https://creativecommons.org/licenses/by-sa/4.0/了解CC BY-SA 4.0的概要 (但不是替代)。 CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:https://creativecommons.org/licenses/by-sa/4.0/legalcode。
改版记录
| 日期 | 修订版本 | 修订描述 | 作者 | 审核 |
|---|---|---|---|---|
| 2026.01.21 | 1.0 | 初稿完成 | chenhao |
- 1.特性概述
- 1.1范围
- 1.2特性需求列表
- 2.需求场景分析
- 2.1特性需求来源与价值概述
- 2.2特性场景分析
- 2.3特性影响分析
- 3.特性/功能实现原理(可分解出来多个Use Case)
- 3.1目标
- 3.2总体方案
- 4.支持CANN Runtime API接口采集能力
- 4.1设计思路
- 4.2约束条件
- 4.3详细实现(从用户入口的模块级别或进程级别消息序列图)
- 4.4子系统间接口(主要覆盖模块接口定义)
- 4.5子系统详细设计
- 4.6DFX属性设计
- 4.7系统外部接口
- 5.数据结构设计(可选)
1.特性概述¶
msPTI工具(MindStudio Profiling Tools Interface)是MindStudio针对Ascend设备提出的一套Profiling API,用户可以通过msPTI构建针对NPU应用程序的工具,用于分析应用程序的性能。 msPTI为通用场景接口,使用msPTI API开发的Profiling分析工具可以在各种框架的推理训练场景生效。
1.1范围¶
msPTI主要包括以下功能:
-
Tracing:在msPTI中Tracing是指CANN应用程序执行启动CANN活动的时间戳和附加信息的收集,如CANN API、Kernel、内存拷贝等。通过了解程序运行耗时,识别CANN代码的性能问题。可以使用Activity API和Callback API收集Tracing信息。
-
Profiling:在msPTI中Profiling是指单独收集一个或一组Kernel的NPU性能指标。
1.2特性需求列表¶
表1:特性需求列表
| 需求编号 | 需求名称 | 特性描述 | 备注 |
|---|---|---|---|
| 1 | 支持CANN Runtime API接口采集能力 | 统计runtime层级的接口调用及耗时统计能力 |
2.需求场景分析¶
2.1特性需求来源与价值概述¶
msPTI对外接口采集能力扩展以支持CANN Runtime API接口采集能力
2.2特性场景分析¶
场景触发条件:Host Bound类业务流程,需要分析CANN接口性能分析影响因素
使用方需要分析CANN Runtime侧的接口性能,接口耗时的获取与分析
2.3特性影响分析¶
2.3.1硬件限制¶
| 产品类型 | 是否支持 |
|---|---|
| 昇腾950代际产品 | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
2.3.2技术限制¶
操作系统:linux
编程语言:C / Python
3.特性/功能实现原理(可分解出来多个Use Case)¶
3.1目标¶
该章节主要描述特性在什么场景下要实现什么规格、达到什么目标
3.2总体方案¶
性能分析Profiling场景:主要针对关键函数、关键计算、通信耗时的打点,数据采集落盘并作离线解析和可视化呈现
图1:mspti方案总体实现原理图
4.支持CANN Runtime API接口采集能力¶
4.1设计思路¶
msPTI通过msptiActivityEnable(msptiActivityKind kind)接口使能runtime api数据采集能力,同时回调接口获取runtime api数据。
4.2约束条件¶
无约束条件
4.3详细实现(从用户入口的模块级别或进程级别消息序列图)¶
本章节具体描述 __Use Case__ 实现过程。使用时序图、流程图描述各模块间的交互过程。
同时用简短文字说明时序图、流程图的各个模块分配需求的变化,尽量使用结构化的语言。
4.4子系统间接口(主要覆盖模块接口定义)¶
扩展接口能力:msptiActivityEnable(msptiActivityKind kind)
4.5子系统详细设计¶
msPTI通过msptiActivityEnable(msptiActivityKind kind)接口使能runtime api数据采集能力,同时回调接口获取runtime api数据。
4.6DFX属性设计¶
4.6.1性能设计¶
性能影响有限,只做接口类别的开关使能和获取,runtime api接口数量范围可控
4.6.2升级与扩容设计¶
不涉及升级及扩容场景
4.6.3异常处理设计¶
有哪些异常场景,是否有规避方案,怎么提示用户,如何保证用户业务影响最小
4.6.4资源管理相关设计¶
使能的runtime api接口会使用使用方传入的内存,通过使用方正常消费可以完成资源规格保持,临界条件使用内存情况下使用方可以控制申请的内存大小
msPTI数据统一在内存管理,磁盘IO属于使用方消费数据后处理流程,可以考虑消费的频率
4.6.5小型化设计¶
不涉及小型化相关的版本设计,无影响
4.6.7 安全设计¶
4.6.7.1 安全设计确认¶
参考安全设计checklist进行确认
| 安全属性 | 检查项 | 检查项详细说明 | 是否涉及 | 是否满足 |
|---|---|---|---|---|
| 访问通道控制 | 是否新增侦听端口 | 新增侦听端口需刷新通信矩阵 | 否 | |
| 访问通道控制 | 是否新增进程或组件间通信 | 新增进程或组件间通信刷新通信矩阵 | 否 | |
| 访问通道控制 | 是否新增认证方式 | 新增认证方式需刷新通信矩阵及产品文档 | 否 | |
| 权限控制 | 是否涉及创建文件或目录 | 创建文件或目录须显式指定文件或目录的访问权限 | 否 | |
| 权限控制 | 账号权限是否满足"权限最小化原则" | 系统中各账号应赋予最小权限 | 否 | |
| 权限控制 | 是否存在用户权限提升 | 禁止出现用户非法权限提升 | 否 | |
| 未公开接口 | 是否新增GUC参数 | 新增GUC参数需刷新产品文档 | 否 | |
| 未公开接口 | 是否新增或修改函数、视图、系统表 | 新增或修改函数、视图、系统表需刷新产品文档,考虑权限控制 | 否 | |
| 未公开接口 | 是否新增SQL语法 | 新增SQL语法需刷新产品文档,支持记录审计日志 | 否 | |
| 未公开接口 | 是否新增内部工具 | 新增内部工具需刷新产品文档 | 否 | |
| 未公开接口 | 脚本中是否存在注释代码 | Shell/Python等解释性语言禁止注释代码,注释代码需要删除 | 否 | |
| 未公开接口 | 是否存在隐藏命令、参数、端口等接入方式 | 对于现网维护期间不会使用的命令/参数、端口等接入方式(包括但不限于产品的生产、调测、维护用途),必须删除(如通过编译宏) | 否 | |
| 未公开接口 | 系统是否存在隐藏后门 | 禁止系统预留任何的未公开账号,所有账号必须可被系统管理,并在资料中予以说明 | 否 | |
| 未公开接口 | 禁止在产品对外部用户发布的软件(包含软件包/补丁包)中提供破解类、网络嗅探类工具。 | 1、禁止在产品对外部用户发布的软件(包含软件包/补丁包)中提供可修改任意用户口令、具有“口令破解能力”(指口令暴力破解、利用系统/算法漏洞恶意破解口令)、对包含敏感数据的文件(如包含密钥的配置文件、数据库)进行解密的功能或工具。2、禁止在系统中保留第三方的网络嗅探工具tcpdump、gdb、strace、readelf网络、进程调试工具,cpp、gcc、dexdump、mirror、JDK开发/编译工具和仅在调测阶段使用的自研调试工具/脚本(例如:仅在调试阶段使用的加解密脚本、调测功能、可以提权的命令),由于业务需要必须保留的,需要进行严格的访问控制。同时在资料中说明保留的原因、使用的场景、风险。 | 否 | |
| 敏感数据保护 | 认证凭据不允许明文存储在系统中,应该加密保护。 | 认证凭据(如口令/私钥等)不允许明文存储在系统中,应该加密保护。 | 否 | |
| 敏感数据保护 | 用于敏感数据传输加密的密钥,不能硬编码在代码中。 | 禁止口令和密钥硬编码。 | 否 | |
| 敏感数据保护 | 是否明文打印口令或密钥等敏感信息 | 禁止在系统中存储的日志、调试信息、错误提示及ps命令等信息打印明文敏感信息(口令/私钥/预共享密钥)。 | 否 | |
| 敏感数据保护 | 是否明文回显口令 | 禁止明文回显口令。 | 否 | |
| 敏感数据保护 | 是否使用第三方和开源软件的缺省口令 | 禁止使用第三方和开源软件的缺省口令,参考安全设计指南第1.5章节。 | 否 | |
| 敏感数据保护 | 是否将密码明文存储在配置文件中 | 明文密码不允许写入配置文件(命令行工具安装部署及使用时必需配置密码的场景除外)。 | 否 | |
| 敏感数据保护 | 是否使用不安全的加密算法 | 禁止使用私有的或业界已知不安全的加密算法。推荐加密算法安全设计指南6.2章节。 | 否 | |
| 敏感数据保护 | 口令等敏感信息是否使用安全的传输通道 | 在非信任网络之间进行敏感信息传输须采用安全传输通道或者加密后传输。参考安全设计指南第10章。 | 否 | |
| 敏感数据保护 | 内存中口令或密钥等敏感信息使用后是否销毁 | 内存中的口令或密钥等信息使用完毕后立即清0。 | 否 | |
| 敏感数据保护 | 密码算法中使用到的随机数必须是密码学意义上的安全随机数。 | 密码算法中使用到的随机数必须是密码学意义上的安全随机数,参考安全设计指南6.3章节。 | 否 | |
| 敏感数据保护 | 资料中是否存在不安全的示例 | 资料中的示例需要是安全的,对用户进行正确的引导,若示例中存在潜在的风险,要在资料中进行说明。 | 否 | |
| 认证 | 是否提供认证机制 | 新系统需要提供认证机制并缺省开启。 | 否 | |
| 认证 | 认证是否在服务端进行 | 认证处理过程需要在服务端进行。 | 否 | |
| 认证 | 认证失败后服务端是否返回有效信息 | 认证失败后,服务端返回信息不能提供详细的、可用于判断具体错误原因的提示。 | 否 | |
| 外部参数校验 | 是否对外部输入进行合法性校验 | 1、使用外部输入数据作为循环终止条件、数组下标、内存分配大小参数等,可能导致系统出现死循环、缓冲区溢出、内存越界、拒绝服务等一系列行为。2、文件路径等外部输入应进行合法性校验,防止注入风险 | 是 | 是 |
| 三方件引入 | 是否新引入三方组件 | 1.新增三方组件需要通过安全编译选项、病毒、漏洞、开源片段引用、license合规、开源组件扫描,参考版本发布网络安全质量要求。2.新增三方组件需保证来源可信。 | 否 |
4.6.7.2 敏感数据分析¶
1. 敏感数据清单¶
不涉及敏感数据
2. 敏感操作检查¶
无敏感操作,不涉及敏感数据
4.6.7.3 设计实现¶
msPTI通过msptiActivityEnable(msptiActivityKind kind)接口使能runtime api数据采集能力,同时回调接口获取runtime api数据。
使能的runtime api接口会使用使用方传入的内存,通过使用方正常消费可以完成资源规格保持,临界条件使用内存情况下使用方可以控制申请的内存大小
msPTI数据统一在内存管理,磁盘IO属于使用方消费数据后处理流程,可以考虑消费的频率
4.7系统外部接口¶
复用接口能力获取API数据:msptiActivityEnable(msptiActivityKind kind)
5.数据结构设计(可选)¶
不涉及结构变更,runtime api数据与其他CANN层级的API接口使用一套数据格式及接口上报接口
