# **MindStudio Insight系统调优**
## 简介
MindStudio Insight支持导入性能数据文件,提供时间线视图、内存、算子耗时、通信瓶颈分析等功能,以图形化形式呈现相关内容,帮助开发者快速定位模型性能瓶颈。
## 使用前准备
**环境准备**
请先安装MindStudio Insight工具,具体安装步骤请参见[MindStudio Insight安装指南](../install_guide/mindstudio_insight_install_guide.md)。
**数据准备**
请导入正确格式的性能数据,具体数据说明请参见[数据说明](#数据说明),数据导入操作请参见[导入数据](./basic_operations.md#导入数据)。
## 数据说明
**推荐分析路径**
系统调优文档内容较多,建议根据问题类型选择阅读路径:
| 问题类型 | 推荐阅读路径 |
| --- |----------------------------------------------------------------------------------------|
| 首次导入系统性能数据 | [数据说明](#数据说明) → [导入数据](./basic_operations.md#导入数据) → [时间线(Timeline)](#timeline) |
| 单卡训练/推理性能慢 | [时间线(Timeline)](#timeline) → [算子(Operator)](#operator) → [内存(Memory)](#memory) |
| 集群通信慢或存在快慢卡 | [概览(Summary)](#summary) → [通信(Communication)](#communication) → [时间线(Timeline)](#timeline) |
| 怀疑 Host 侧下发瓶颈 | [时间线(Timeline)](#timeline) → [Host Bound问题分析案例](#host-bound-analysis-case) |
| 强化学习任务空泡或阶段耗时异常 | [强化学习(RL)](#rl) |
**概述**
性能数据文件的采集方式请分别参见《性能调优工具指南》中的“PyTorch训练场景性能分析快速入门”、“TensorFlow训练场景性能分析快速入门”和“msprof采集通用命令”章节内容,以及《[MindSpore教程](https://www.mindspore.cn/tutorials/zh-CN/r2.7.0/index.html)》中的“调试调优 \> [Ascend性能调优](https://www.mindspore.cn/tutorials/zh-CN/r2.7.0/debug/profiler.html)”章节内容。
性能数据分为单卡场景和集群场景,具体请参见[**表 1** 性能数据场景说明](#性能数据场景说明)。
**表 1** 性能数据场景说明
|场景|说明|
|--|--|
|单卡场景|可在MindStudio Insight工具中导入单卡进行分析。当导入单卡场景数据时,MindStudio Insight工具支持显示时间线(Timeline)、内存(Memory)和算子(Operator)界面,具体内容请参见单卡场景。|
|集群场景|- 集群场景根据卡数量可分为小集群场景和大集群场景,导入不同场景的数据,界面展示也会有所变化,具体请参见集群场景。
- 集群精简数据,将集群数据简化,只显示通信大算子数据和部分计算类算子。|
**注意事项**
- 当导入的text场景的性能数据中同时存在db文件,MindStudio Insight工具会优先解析db文件。如果您只需要可视化呈现text场景数据,则需要在性能数据原文件夹中查找db文件并删除,再重新导入,即可呈现text场景数据。
- 支持同时导入系统调优和服务化调优的性能数据,需将两个场景的数据置于同一文件夹中,导入时选择该文件夹即可。
- memory\_record.csv和operator\_memory.csv两个文件必须同时存在且保证在同一目录,导入成功后内存(Memory)界面才能正常展示。
- 导入单卡时,不展示概览(Summary)和通信(Communication)界面。
- 当采集MindSpore训练/推理数据时,在GRAPH模式下,编译优化等级参数jit\_level设置为O2,且调用step接口方式采集的性能数据,在导入MindStudio Insight工具时,不支持展示通信(Communication)界面。
- 对于未完成性能数据解析的PROF\__XXX_目录,需要先使用msprof命令行的export功能解析并导出性能数据文件后才可以使用MindStudio Insight工具展示,数据使用msprof命令行解析并导出的操作请参见《性能调优工具指南》中的“msprof模型调优工具 \> 离线解析”章节。
- 支持导入算子打点数据文件,获取文件方式请参见《性能调优工具指南》中的“Ascend PyTorch Profiler”章节“msprof\_tx”相关内容,导入成功后会在时间线(Timeline)界面展示打点数据。
- 当导入集群数据时,如果性能数据文件中包含cluster\_analysis\_output目录文件,导入成功后,概览(Summary)和通信(Communication)界面会根据cluster\_analysis\_output目录文件内容呈现相关信息;如果性能数据文件中不包含cluster\_analysis\_output目录文件,在MindStudio Insight工具中导入数据时,会生成对应的cluster\_analysis\_output目录文件。
- 在集群场景下,使用Ascend PyTorch Profiler接口或者MindSpore Profiler接口采集到的性能数据,需要使用MindStudio Insight工具显示,则建议配置repeat=1,不推荐配置为0。如果repeat\>1,则需要将采集的性能数据文件夹分为repeat等份,按照文件夹名称中的时间戳先后将文件分别放到不同文件夹下重新导入,才可正常展示。
- 在Linux环境下使用MindStudio Insight工具分析集群场景数据时,如果已经安装了msprof-analyze工具,请检查版本并将其升级至最新版本,最新版本的msprof-analyze工具安装可参考[msprof-analyze](https://gitcode.com/ascend/mstt/blob/master/profiler/msprof_analyze/README.md#%E5%AE%89%E8%A3%85)。
- 支持导入含有ACLGraph构图过程数据的单个json文件。
- 当导入数据的目录中同时存在单卡数据和集群数据,MindStudio Insight仅支持解析集群数据并进行可视化展示。
- 支持profiling采集数据(.text格式和.db格式)和ftrace采集数据(.json格式和.db格式)联合导入,先添加其中一个采集方式的数据工程,再从该工程中添加另一个采集方式的数据文件。
**采集配置与参数说明**
采集性能数据时,不同的采集等级和参数配置会直接影响生成的数据文件和MindStudio Insight工具中可展示的页面及字段。请根据实际分析需求,选择合适的采集配置。
- 采集等级与生成数据、展示页面的对应关系请参见["表 8" 采集等级与数据对应关系](#采集等级与数据对应关系)。
- Ascend PyTorch Profiler接口的完整参数配置请参见[_ExperimentalConfig参数说明](#experimentalconfig参数说明)和[torch_npu.profiler.profile主接口参数说明](#torch_npu.profilerprofile主接口参数说明)。
- 采集参数与页面展示字段的关联关系请参见[采集参数与页面展示字段对应关系](#采集参数与页面展示字段对应关系)。
**"表 8" 采集等级与数据对应关系**
|采集等级|生成文件|可展示界面|说明|
|--|--|--|--|
|ProfilerLevel.Level0|trace_view.json、msprof_*.json、operator_details.csv、kernel_details.csv(无AI Core性能指标)、memory_record.csv、operator_memory.csv|时间线(Timeline)、内存(Memory)、算子(Operator)|基础采集级别,不采集通信数据和AI Core性能指标。|
|ProfilerLevel.Level1|Level0全部文件 + communication.json、communication_matrix.json、kernel_details.csv(含AI Core性能指标,需配合aic_metrics参数)|Level0全部 + 概览(Summary)、通信(Communication)|中等采集级别,额外采集通信数据和AI Core性能指标。|
|ProfilerLevel.Level2|Level1全部文件 + 内存拷贝数据|Level1全部 + 内存拷贝总览(Memcpy Overall)|完整采集级别,包含内存拷贝数据。|
> [!NOTE] 说明
>
> - 当导入单卡场景数据时,即使采集等级为Level1或Level2,也不展示概览(Summary)和通信(Communication)界面。
> - kernel_details.csv中的AI Core性能指标(如aicore_time、aic_mac_ratio等)需要同时配置`aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization`且采集等级为Level1及以上才会采集。
> - 内存拷贝总览(Memcpy Overall)仅在采集等级为Level2时才会在时间线(Timeline)的系统视图中展示。
**_ExperimentalConfig参数说明**
使用Ascend PyTorch Profiler接口采集性能数据时,可通过_ExperimentalConfig配置采集参数,参数说明如["表 9" _ExperimentalConfig参数说明](#experimentalconfig参数说明)所示。
**"表 9" _ExperimentalConfig参数说明**
|参数|类型|默认值|说明|对展示界面的影响|
|--|--|--|--|--|
|export_type|List[ExportType]|[Text, Db]|导出格式,支持Text和Db两种。|Db格式数据在Timeline中额外展示Process泳道;Text和Db格式解析的数据信息量存在差异。|
|profiler_level|ProfilerLevel|Level0|采集等级,可选Level_none、Level0、Level1、Level2。|不同等级对应不同的生成文件和展示界面,详见["表 8" 采集等级与数据对应关系](#采集等级与数据对应关系)。|
|aic_metrics|AiCMetrics|AiCoreNone|AI Core性能指标采集项,可选AiCoreNone、PipeUtilization等。|设置为PipeUtilization且profiler_level为Level1及以上时,算子详情中展示AI Core性能指标字段(如aicore_time、aic_mac_ratio等)。|
|msprof_tx|bool|False|是否启用msprof_tx打点采集。|设置为True时,时间线(Timeline)界面展示打点数据。|
|mstx_domain_include|List[str]|[]|MSTX打点包含的域。|仅展示指定域的MSTX打点数据。|
|mstx_domain_exclude|List[str]|[]|MSTX打点排除的域。|排除指定域的MSTX打点数据。|
|l2_cache|bool|False|是否采集L2 Cache信息。|设置为True时,算子详情中展示L2 Cache相关字段。|
|op_attr|bool|False|是否采集算子属性信息。|设置为True且profiler_level为Level2时,算子详情中展示Attr Info字段。|
|data_simplification|bool|False|是否启用数据精简。|启用后将精简采集数据,减少数据量。|
|record_op_args|bool|False|是否记录算子参数。|设置为True时,算子详情中展示Args字段。|
|gc_detect_threshold|int/None|None|GC检测阈值,单位为毫秒。|设置后,时间线(Timeline)界面展示Python GC泳道,显示超过阈值的GC事件。|
|host_sys|List[HostSystem]|[]|Host侧系统指标采集,可选CPU、MEM。|设置后,时间线(Timeline)界面展示Host侧CPU/内存利用率数据泳道。|
|sys_io|bool|False|是否采集系统IO信息。|设置为True时,时间线(Timeline)界面展示系统IO相关数据。|
|sys_interconnection|bool|False|是否采集系统互连信息。|设置为True时,时间线(Timeline)界面展示系统互连相关数据。|
**torch_npu.profiler.profile主接口参数说明**
torch_npu.profiler.profile主接口的参数说明如["表 10" torch_npu.profiler.profile参数说明](#torch_npu.profilerprofile主接口参数说明)所示。
**"表 10" torch_npu.profiler.profile参数说明**
|参数|说明|对展示界面的影响|
|--|--|--|
|activities|采集事件类型,可选CPU(框架侧)和NPU(CANN软件栈及NPU硬件层)。|CPU:时间线展示Python/CANN层API数据;NPU:时间线展示底层NPU Task数据。|
|schedule|采集调度策略,参数包括wait(等待轮数)、warmup(预热轮数)、active(采集轮数)、repeat(重复次数)、skip_first(跳过首轮)。|repeat建议配置为1,repeat>1时需拆分数据文件夹重新导入。|
|record_shapes|是否记录算子输入输出shape。|设置为True时,算子详情中展示Input Shapes和Output Shapes字段。|
|profile_memory|是否采集内存分配信息。|设置为True时,生成memory_record.csv和operator_memory.csv,内存(Memory)界面可正常展示。|
|with_stack|是否采集Python调用栈。|设置为True时,算子详情中展示调用栈信息。|
|with_modules|是否采集模块信息。|设置为True时,算子详情中展示模块信息。|
|with_flops|是否估算FLOPS。|设置为True时,算子详情中展示FLOPS估算值。|
|experimental_config|_ExperimentalConfig配置对象,用于配置采集参数。|详见[_ExperimentalConfig参数说明](#experimentalconfig参数说明)。|
**采集参数与页面展示字段对应关系**
不同采集参数配置会影响MindStudio Insight各页面中字段的展示情况。当页面中某些字段显示为N/A或为空时,可能是因为未配置对应的采集参数。["表 11" 采集参数与页面展示字段对应关系](#采集参数与页面展示字段对应关系)列出了各页面关键字段所需的采集条件。
**"表 11" 采集参数与页面展示字段对应关系**
|页面|字段|采集条件|
|--|--|--|
|时间线(Timeline)- 选中详情|Input Shapes|profiler_level >= Level0,且为NPU加速核上的算子;record_shapes=True|
|时间线(Timeline)- 选中详情|Input Data Types|profiler_level >= Level0,且为NPU加速核上的算子|
|时间线(Timeline)- 选中详情|Input Formats|profiler_level >= Level0,且为NPU加速核上的算子|
|时间线(Timeline)- 选中详情|Output Shapes|profiler_level >= Level0,且为NPU加速核上的算子;record_shapes=True|
|时间线(Timeline)- 选中详情|Output Data Types|profiler_level >= Level0,且为NPU加速核上的算子|
|时间线(Timeline)- 选中详情|Output Formats|profiler_level >= Level0,且为NPU加速核上的算子|
|时间线(Timeline)- 选中详情|Attr Info|op_attr=True 且 profiler_level >= Level2|
|时间线(Timeline)- 选中详情|Args|record_op_args=True|
|时间线(Timeline)- Python GC泳道|GC事件|gc_detect_threshold已设置|
|时间线(Timeline)- Host侧系统数据泳道|CPU/内存利用率|host_sys包含CPU和/或MEM|
|时间线(Timeline)- MSTX打点数据|MSTX事件|msprof_tx=True或mstx_domain_include非空|
|算子(Operator)- 计算算子详情|AI Core性能指标(aicore_time等)|aic_metrics=PipeUtilization 且 profiler_level >= Level1|
|算子(Operator)- 计算算子详情|Input Shapes|profiler_level >= Level0,NPU加速核上的算子|
|算子(Operator)- 计算算子详情|Attr Info|op_attr=True 且 profiler_level >= Level2|
|内存(Memory)|算子内存折线图|profile_memory=True,且memory_record.csv和operator_memory.csv同时存在|
|概览(Summary)|并行策略分析|profiler_level >= Level1,需存在通信数据|
|概览(Summary)|内存拷贝总览|profiler_level = Level2|
|通信(Communication)|通信矩阵|profiler_level >= Level1,需存在communication.json或communication_matrix.json|
|通信(Communication)|通信耗时分析|profiler_level >= Level1,需存在通信数据|
> [!NOTE] 说明
>
> - 当导入单卡场景数据时,概览(Summary)和通信(Communication)界面不展示,即使采集等级为Level1或Level2。
> - 当采集数据时task-time配置为l0(对应ProfilerLevel.Level0),Input Shapes、Input Data Types等字段不采集,显示为N/A。
> - 当采集数据时task-time配置为l1(对应ProfilerLevel.Level1),Attr Info字段不采集,显示为N/A;只有开启aclnn,task-time配置为l2(对应ProfilerLevel.Level2)时,才有此字段。
**单卡场景**
在单卡场景下,性能数据可分为三大类型,如下所示:
- PyTorch训练/推理数据:支持导入以“ascend\_pt”结尾的性能数据目录,性能数据文件详情请参见[**表 2** PyTorch训练/推理性能数据文件](#PyTorch训练/推理性能数据文件)。
**表 2** PyTorch训练/推理性能数据文件
|文件名|说明|展示界面|
|--|--|--|
|trace_view.json|包括应用层数据、CANN层数据和底层NPU数据。|时间线(Timeline)|
|msprof_*.json|Timeline数据总表。如果存在变频数据(AI Core Freq)信息,会展示AI Core Freq层级。|时间线(Timeline)|
|operator_details.csv|统计PyTorch算子在Host侧(下发)和Device侧(执行)的耗时。|时间线(Timeline)|
|memory_record.csv|进程级内存申请情况信息。|内存(Memory)|
|operator_memory.csv|算子内存申请情况信息。|内存(Memory)|
|kernel_details.csv|NPU上执行的所有算子的信息。|算子(Operator)|
|step_trace_time.csv|迭代中计算和通信的时间统计。|概览(Summary)|
|communication.json|通信算子通信耗时、带宽等详细信息文件。|通信(Communication)|
|communication_matrix.json|通信小算子基本信息文件。|通信(Communication)|
|ascend_pytorch_profiler_{*rank_id*}.db|Ascend PyTorch Profiler接口采集的性能数据文件。|时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)|
|analysis.db|多卡或集群等存在通信的场景下,采集到的数据文件。|时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)|
|注:“*”表示{timestamp}时间戳。|||
- MindSpore训练/推理数据:支持导入MindSpore框架性能数据,获取方式请参见《[MindSpore教程](https://www.mindspore.cn/tutorials/zh-CN/r2.7.0/index.html)》中的“调试调优 \> [Ascend性能调优](https://www.mindspore.cn/tutorials/zh-CN/r2.7.0/debug/profiler.html)”章节。
MindStudio Insight工具支持导入以“ascend\_ms”结尾的性能数据目录,性能数据文件详情请参见[**表 3** MindSpore训练/推理性能数据文件](#MindSpore训练/推理性能数据文件)。
**表 3** MindSpore训练/推理性能数据文件
|文件名|说明|展示界面|
|--|--|--|
|msprof_*.json|Timeline数据总表。如果存在变频数据(AI Core Freq)信息,会展示AI Core Freq层级。|时间线(Timeline)|
|trace_view.json|包括应用层数据、CANN层数据和底层NPU数据。|时间线(Timeline)|
|memory_record.csv|进程级内存申请情况信息。|内存(Memory)|
|operator_memory.csv|算子内存申请情况信息。|内存(Memory)|
|static_op_mem.csv|静态图场景内存申请情况信息。当static_op_mem.csv存在时,内存(Memory)界面会展示静态图模式。|内存(Memory)|
|kernel_details.csv|NPU上执行的所有算子的信息。|算子(Operator)|
|step_trace_time.csv|迭代中计算和通信的时间统计。|概览(Summary)|
|communication.json|通信算子通信耗时、带宽等详细信息文件。|通信(Communication)|
|communication_matrix.json|通信小算子基本信息文件。|通信(Communication)|
|注:“*”表示{timestamp}时间戳。|||
- 离线推理数据:支持导入mindstudio\_profiler\_output目录下性能数据,性能数据文件详情请参见[**表 4** 离线推理性能数据文件](#离线推理性能数据文件)。
**表 4** 离线推理性能数据文件
|文件名|说明|展示界面|
|--|--|--|
|msprof_*.json|Timeline数据总表。|时间线(Timeline)|
|fusion_op_*.csv|模型中算子融合前后信息。单算子场景下无此性能数据文件。|时间线(Timeline)|
|api_statistic_*.csv|用于统计CANN层的API执行耗时信息。|时间线(Timeline)|
|memory_record_*.csv|进程级内存申请情况信息。|内存(Memory)|
|operator_memory_*.csv|算子内存申请情况信息。|内存(Memory)|
|op_summary_*.csv|AI Core和AI CPU算子数据。|算子(Operator)|
|op_statistic_*.csv|AI Core和AI CPU算子调用次数及耗时统计。|算子(Operator)|
|prof_rule_0_*.json|调优建议。|时间线(Timeline)
概览(Summary)
通信(Communication)|
|step_trace_*.csv|迭代轨迹数据。单算子场景下无此性能数据文件。|-|
|step_trace_*.json|迭代轨迹数据,每轮迭代的耗时。单算子场景下无此性能数据文件。|-|
|task_time_*.csv|Task Scheduler任务调度信息。|-|
|msprof_*.db|统一db文件。当前该格式数据与text参数解析的数据信息量存在差异。|时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)|
|注:“*”表示{timestamp}时间戳。|||
- npumonitor数据:支持导入npumonitor采集的性能数据。npumonitor是基于dynolog开源项目的轻量化在线监测工具,支持NPU Monitor(常态监测)和NPU Trace-dump(精准采集)两种模式,采集方式和安装指南请参见:
- npumonitor工具特性说明:https://gitcode.com/Ascend/msmonitor/blob/master/docs/zh/user_guide/npumonitor_instruct.md
- msMonitor产品文档:https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha003/devaids/Profiling/atlasprofiling_16_1153.html
- msMonitor工具下载:https://gitee.com/ascend/mstt/tree/master/msmonitor
性能数据文件详情请参见**“表 5” 性能数据文件详情表**(#性能数据文件详情表)。
**表 5** 性能数据文件详情表
|文件名|说明|展示界面|
|--|--|--|
|msmonitor_{pid}\_{timestamp}\_{rank_id}.db|npumonitor采集的db文件。|时间线(Timeline)|
> [!NOTE]
>
> - pid为进程号,timestamp为时间戳。如果是集群数据,rank\_id为非负整数,从0排序;如果是单卡数据,rank\_id为-1。
> - MindStudio Insight支持导入npumonitor采集的单个db文件;也支持导入db文件的上一级目录,目录中多个db文件平铺展示。在数据量大的情况下,建议导入单个db文件,如果全部导入,数据解析耗时较长,可能会引发OOM(Out of Memory,内存溢出)问题。
**集群场景**
- 集群场景也称多卡场景,由多个单卡组成的集群数据,集群数据可分为小集群和大集群,MindStudio Insight工具导入不同场景的数据时,也有所不同,如[**表 6** 集群场景说明](#集群场景说明)所示。
如果在大集群场景下,直接导入性能调优工具采集的全部原始数据,解析耗时较长,不建议直接导入。
**集群数据采集与预处理流程**
集群场景下,需要先使用性能调优工具采集各Rank的性能数据,再通过msprof-analyze工具对多Rank数据进行预处理,生成集群分析数据后导入MindStudio Insight工具进行可视化展示。
> 以下内容来源于msprof-analyze工具文档(https://gitcode.com/Ascend/mstt/blob/master/profiler/msprof_analyze/README.md),如有更新请以源文档为准。
1. 安装msprof-analyze工具。
msprof-analyze工具包含在MSTT(MindStudio Tuning Toolset)工具集中,安装方式请参见msprof-analyze工具文档。
2. 使用性能调优工具采集各Rank的性能数据,采集方式请参见《Ascend PyTorch Profiler接口采集指南》。
3. 使用msprof-analyze工具对多Rank数据进行预处理,生成集群分析数据。
**msprof-analyze工具常用命令**
|平台|命令|
|--|--|
|Windows|`cluster_analysis.exe -d <数据目录> -m <分析模式>`|
|Linux|`python3 cluster_analysis.py -d <数据目录> -m <分析模式>`|
|Mac|`cluster_analysis -d <数据目录> -m <分析模式>`|
若采集数据为DB格式,需额外添加`--data_simplification`选项。
**分析模式说明**
|模式|说明|生成文件|
|--|--|--|
|all|生成全部集群分析数据|cluster_step_trace_time.csv、cluster_communication_matrix.json、cluster_communication.json、communication_group.json(TEXT格式)或cluster_analysis.db(DB格式)|
|communication_time|仅生成通信耗时分析|cluster_communication.json、communication_group.json(TEXT格式)或cluster_analysis.db(DB格式)|
|communication_matrix|仅生成通信矩阵分析|cluster_step_trace_time.csv、cluster_communication_matrix.json、communication_group.json(TEXT格式)或cluster_analysis.db(DB格式)|
|filter_db|生成集群精简数据,仅提取大通信算子、关键计算函数和关键框架函数|cluster_analysis.db(DB格式)|
4. 将生成的集群分析数据导入MindStudio Insight工具。
- TEXT格式:将cluster_step_trace_time.csv、cluster_communication_matrix.json、cluster_communication.json、communication_group.json文件与各Rank原始数据放在同一目录下导入。
- DB格式:将cluster_analysis.db文件与各Rank原始数据放在同一目录下导入。
> [!NOTE] 说明
>
> - 在大型集群场景下,建议使用filter_db模式生成精简数据后再导入,以减少数据量和解析耗时。
> - 集群分析数据必须与各Rank原始数据在同一目录下,否则MindStudio Insight无法正确关联集群数据。
> - msprof-analyze工具的详细参数说明请参见msprof-analyze工具文档。
**AI Core/AI Vector Core性能指标字段说明**
当采集配置中设置了`aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization`且profiler_level为Level1及以上时,计算算子详情中会展示AI Core和AI Vector Core性能指标字段。这些指标可以帮助用户分析算子的计算瓶颈,如["表 12" AI Core性能指标字段说明](#ai-core性能指标字段说明)和["表 13" AI Vector Core性能指标字段说明](#ai-vector-core性能指标字段说明)所示。
**"表 12" AI Core性能指标字段说明**
|字段|说明|含义解读|
|--|--|--|
|aicore_time(us)|AI Core执行时间|算子在AI Core上的实际执行时间,不包含等待时间。|
|aic_total_cycles|AI Core总周期数|执行总时钟周期数,可用于估算指令执行效率。|
|aic_mac_time(us)|MAC单元耗时|矩阵乘单元耗时,MAC单元负责矩阵乘加运算。|
|aic_mac_ratio|MAC单元占比|MAC耗时/总耗时,高值表示计算密集型算子,计算资源利用率高。|
|aic_scalar_time(us)|Scalar单元耗时|标量处理单元耗时,Scalar负责控制流和标量运算。|
|aic_scalar_ratio|Scalar单元占比|Scalar耗时/总耗时,高值可能表示控制逻辑较复杂。|
|aic_mte1_time(us)|MTE1耗时|内存传输引擎1耗时,负责从L1缓存读取数据。|
|aic_mte1_ratio|MTE1占比|MTE1耗时/总耗时,高值表示L1缓存读取频繁。|
|aic_mte2_time(us)|MTE2耗时|内存传输引擎2耗时,负责从DDR/L2读取数据到L1。|
|aic_mte2_ratio|MTE2占比|MTE2耗时/总耗时,高值表示内存带宽瓶颈,算子为内存bound。|
|aic_fixpipe_time(us)|FixPipe单元耗时|数据后处理单元耗时,负责格式转换和精度处理。|
|aic_fixpipe_ratio|FixPipe单元占比|FixPipe耗时/总耗时。|
|aic_icache_miss_rate|AI Core iCache未命中率|指令缓存未命中率,高值表示指令缓存命中率低,可能需要优化指令布局。|
**"表 13" AI Vector Core性能指标字段说明**
|字段|说明|含义解读|
|--|--|--|
|aiv_time(us)|AI Vector执行时间|算子在AI Vector Core上的实际执行时间。|
|aiv_total_cycles|AI Vector总周期数|执行总时钟周期数。|
|aiv_vec_time(us)|Vector单元耗时|向量计算单元耗时。|
|aiv_vec_ratio|Vector单元占比|Vector耗时/总耗时,高值表示向量计算密集。|
|aiv_scalar_time(us)|Vector Scalar单元耗时|向量标量处理单元耗时。|
|aiv_scalar_ratio|Vector Scalar占比|Vector Scalar耗时/总耗时。|
|aiv_mte2_time(us)|Vector MTE2耗时|向量内存传输引擎2耗时,负责从DDR/L2读取数据。|
|aiv_mte2_ratio|Vector MTE2占比|Vector MTE2耗时/总耗时,高值表示内存带宽瓶颈。|
|aiv_mte3_time(us)|Vector MTE3耗时|向量内存传输引擎3耗时,负责将数据写回DDR/L2。|
|aiv_mte3_ratio|Vector MTE3占比|Vector MTE3耗时/总耗时。|
|aiv_icache_miss_rate|AI Vector iCache未命中率|向量指令缓存未命中率。|
|cube_utilization(%)|Cube利用率|矩阵乘单元利用率百分比,反映Cube单元的使用效率。|
> [!NOTE] 说明
>
> - AI Core性能指标适用于Accelerator Core为AI_CORE的算子,AI Vector Core性能指标适用于Accelerator Core为AI_VECTOR_CORE或MIX_AIV的算子。
> - 当aic_metrics设置为AiCoreNone(默认值)时,上述字段不会采集,在MindStudio Insight中显示为N/A。
> - 通过分析MAC/MTE2占比,可以判断算子是计算bound还是内存bound:MAC占比高为计算bound,MTE2占比高为内存bound。
**原始数据文件字段定义**
MindStudio Insight工具导入的原始性能数据文件中包含多个CSV和JSON文件,各文件的关键字段定义如["表 14" kernel_details.csv字段定义](#kernel_detailscsv字段定义)至["表 17" memory_record.csv字段定义](#memory_recordcsv字段定义)所示。
**"表 14" kernel_details.csv字段定义**
kernel_details.csv文件记录NPU上执行的所有算子信息,字段定义如下:
|字段|说明|
|--|--|
|Step Id|迭代编号|
|Model ID|模型ID|
|Task ID|任务ID|
|Stream ID|流ID|
|Name|算子名称|
|Type|算子类型(如Conv2D、MatMulV2、TransData等)|
|OP State|算子状态(如dynamic)|
|Accelerator Core|加速器核心(AI_CORE、AI_VECTOR_CORE、DSA_SQE、MIX_AIV)|
|Start Time(us)|开始时间(微秒)|
|Duration(us)|持续时间(微秒)|
|Wait Time(us)|等待时间(微秒)|
|Block Dim|块维度|
|Mix Block Dim|混合块维度|
|HF32 Eligible|是否支持HF32(YES/NO)|
|Input Shapes|输入形状|
|Input Data Types|输入数据类型|
|Input Formats|输入数据格式(NCHW、NC1HWC0、FRACTAL_Z、FORMAT_ND等)|
|Output Shapes|输出形状|
|Output Data Types|输出数据类型|
|Output Formats|输出数据格式|
|Context ID|上下文ID|
|aicore_time(us) ~ aic_icache_miss_rate|AI Core性能指标字段,需配置aic_metrics=PipeUtilization且profiler_level >= Level1,详见["表 12" AI Core性能指标字段说明](#ai-core性能指标字段说明)|
|aiv_time(us) ~ cube_utilization(%)|AI Vector Core性能指标字段,需配置aic_metrics=PipeUtilization且profiler_level >= Level1,详见["表 13" AI Vector Core性能指标字段说明](#ai-vector-core性能指标字段说明)|
**"表 15" step_trace_time.csv字段定义**
step_trace_time.csv文件记录迭代中计算和通信的时间统计,字段定义如下:
|字段|说明|
|--|--|
|Step|迭代编号|
|Computing|计算时间|
|Communication(Not Overlapped)|非重叠通信时间|
|Overlapped|计算与通信重叠时间|
|Communication|总通信时间|
|Free|空闲时间|
|Stage|阶段时间|
|Bubble|气泡时间(流水线并行场景下的等待时间)|
|Communication(Not Overlapped and Exclude Receive)|排除接收的非重叠通信时间|
|Preparing|准备时间|
**"表 16" operator_memory.csv字段定义**
operator_memory.csv文件记录算子内存申请情况,字段定义如下:
|字段|说明|
|--|--|
|Name|算子名称|
|Size(KB)|内存大小(KB)|
|Allocation Time(us)|分配时间|
|Release Time(us)|释放时间|
|Active Release Time(us)|活跃释放时间|
|Duration(us)|持续时间|
|Active Duration(us)|活跃持续时间|
|Allocation Total Allocated(MB)|分配时总已分配内存|
|Allocation Total Reserved(MB)|分配时总预留内存|
|Allocation Total Active(MB)|分配时总活跃内存|
|Release Total Allocated(MB)|释放时总已分配内存|
|Release Total Reserved(MB)|释放时总预留内存|
|Release Total Active(MB)|释放时总活跃内存|
|Stream Ptr|流指针|
|Device Type|设备类型(如NPU:1)|
**"表 17" memory_record.csv字段定义**
memory_record.csv文件记录进程级内存申请情况,字段定义如下:
|字段|说明|
|--|--|
|Component|组件类型(APP/PTA/GE/PTA+GE)|
|Timestamp(us)|时间戳|
|Total Allocated(MB)|总已分配内存|
|Total Reserved(MB)|总预留内存|
|Total Active(MB)|总活跃内存|
|Stream Ptr|流指针|
|Device Type|设备类型|
**DB格式与TEXT格式差异说明**
MindStudio Insight工具支持导入TEXT格式(CSV/JSON文件)和DB格式(SQLite数据库文件)的性能数据。两种格式在数据内容和展示上存在差异,如["表 18" DB格式与TEXT格式差异](#db格式与text格式差异)所示。
**"表 18" DB格式与TEXT格式差异**
|对比项|TEXT格式|DB格式|
|--|--|--|
|文件形式|CSV和JSON文件,每个数据类型一个文件|SQLite数据库文件(.db),所有数据存储在统一数据库中|
|数据完整性|部分数据字段在TEXT格式中不采集|DB格式采集的数据更完整,包含更多API层级和调用链信息|
|时间线(Timeline)展示|展示应用层、CANN层和底层NPU数据|额外展示Process泳道;支持PYTORCH_API、CANN_API、OSRT_API等层级数据|
|算子(Operator)展示|基于kernel_details.csv展示算子信息|基于COMPUTE_TASK_INFO表展示,额外包含attrInfo、waitNs等字段|
|通信(Communication)展示|基于communication.json和communication_matrix.json|基于COMMUNICATION_OP和COMMUNICATION_TASK_INFO表,额外包含transportType、linkType、rdmaType等字段|
|MSTX打点数据|不支持|支持,基于MSTX_EVENTS表展示|
|Python调用栈|不支持|支持,基于PYTORCH_CALLCHAINS表展示|
|内存拷贝信息|不支持|支持,基于MEMCPY_INFO表展示|
|GC记录|不支持|支持,基于GC_RECORD表展示|
|数据解析速度|数据量较小时解析较快|数据量大时解析效率更高|
|推荐场景|单卡场景、数据量较小的场景|多卡/集群场景、需要完整数据信息的场景|
> [!NOTE] 说明
>
> - 当export_type同时包含Text和Db时,MindStudio Insight优先解析DB格式数据。
> - DB格式中的数据表(如PYTORCH_API、CANN_API、TASK等)为内部数据结构,用户无需直接操作,MindStudio Insight会自动解析并展示。
> - 建议在采集性能数据时同时导出Text和Db格式(即export_type=[Text, Db]),以便在不同分析场景下使用。
**表 6** 集群场景说明
|场景|卡数量|导入数据|界面展示|
|--|--|--|--|
|小集群|不超过32卡。|可导入采集到的全部原始数据。|时间线(Timeline)
内存(Memory)
算子(Operator)
概览(Summary)
通信(Communication)|
|大集群|超过32卡,千卡,万卡等。|采用mstt工具集中的msprof-analyze的集群分析能力预处理的原始性能数据,可得到基于通信域的通信分析和迭代耗时分析,导入预处理后得到的数据。
msprof-analyze工具的下载与使用请参见[msprof-analyze](https://gitcode.com/Ascend/mstt/blob/master/profiler/msprof_analyze/README.md#msprof-analyze)。
1. 将所有以“ascend_pt”或“ascend_ms”结尾的目录汇总至同一文件夹。
2. 使用msprof-analyze工具生成通信相关文件“cluster_analysis_output”目录,“cluster_analysis_output”目录中数据文件请参见[**表 7** cluster\_analysis\_output目录文件](#目录文件)。
3. 将生成的“cluster_analysis_output”目录文件拷贝至本地,并导入MindStudio Insight工具。
4. 可先前往通信(Communication)界面分析后,导入对应小集群数据或者单卡数据,再次仔细分析。|概览(Summary)
通信(Communication)|
**表 7** cluster\_analysis\_output目录文件
|文件名|说明|
|--|--|
|cluster_step_trace_time.csv|数据解析模式为communication_matrix、communication_time或all时均生成。|
|cluster_communication_matrix.json|数据解析模式为communication_matrix或all时生成。|
|cluster_communication.json|数据解析模式为communication_time或all时生成,主要为通信耗时数据。|
|cluster_analysis.db|解析analysis.db或ascend_pytorch_profiler_{*rank_id*}.db生成的文件。|
- 集群精简数据,是基于ascend\_pytorch\_profiler\_\{_rank\_id_\}.db文件,提取通信类大算子数据,计算类关键函数和框架关键函数,将数据精简,节约内存,快速进行全局分析,导入集群精简数据后,MindStudio Insight工具只显示时间线(Timeline)界面。
集群数据精简可使用mstt工具集中的msprof-analyze工具,通过设置`-m filter_db`生成集群精简数据,msprof-analyze工具安装可参考[安装msprof-analyze](https://gitcode.com/ascend/mstt/blob/master/profiler/msprof_analyze/README.md#%E5%AE%89%E8%A3%85),设置`-m filter_db`可参考[《recipe结果和cluster\_analysis.db交付件表结构说明》](https://gitcode.com/ascend/mstt/blob/pre-research/profiler/msprof_analyze/docs/recipe_output_format.md#filter_db)中的“filter\_db”内容,集群数据精简功能只支持统一db场景。
## 时间线(Timeline)
### 功能说明
在昇腾异构计算架构中,MindStudio Insight工具以时间线(Timeline)的呈现方式将训练/推理过程中的host、device上的运行详细情况平铺在时间轴上,直观呈现host侧的API耗时情况以及device侧的task耗时,并将host与device进行关联呈现,帮助用户快速识别host瓶颈或device瓶颈,同时提供各种筛选分类、专家建议等功能,支撑用户进行深度调优。
通过观察时间线视图各个层级上的耗时长短、间隙等判断对应组件和算子是否存在性能问题,如算子下发是否存在瓶颈、是否存在高耗时的kernel以及是否存在冗余的转换类算子。
> [!NOTE]
> 时间线(Timeline)界面默认最大展示三分钟的数据。如果导入的数据时间长度超过三分钟,则不支持缩小展示,仅可放大展示,通过左右平移查看其它时间数据。
### 界面介绍
**界面展示**
时间线(Timeline)界面由工具栏(区域一)、时间线树状图(区域二)、图形化窗格(区域三)和数据窗格(区域四)四个部分组成,如[**图 1** 时间线(Timeline)界面](#时间线(Timeline)界面)所示。
**图 1** 时间线(Timeline)界面
界面")
- 区域一:工具栏,包含常用快捷按钮,从左至右依次为标记列表、过滤(支持按卡或按泳道过滤展示)、搜索、连线事件、重置缩放(页面复原)和时间轴缩小放大按钮。
- 区域二:时间线树状图,text场景和db场景显示会有所不同,具体泳道信息请参见[泳道信息](#泳道信息)。
- text场景:显示集群场景下各设备的分层信息,以Rank维度显示分层信息,一层级为Rank ID,二层级为进程或专项分层,三层级为线程等名称。二层级包括Python层数据(包含PyTorch和打点数据的耗时信息)、CANN层数据(包含AscendCL、GE和Runtime组件的耗时数据)、底层NPU数据(包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、Communication和Overlap Analysis通信数据、Memory内存数据以及其他昇腾AI处理器系统数据)和AI Core Freq等层级,层级内容展示随导入的数据而变化。
- db场景:显示各机器下的信息,一层级为机器名称,二层级为Host和Rank ID。Host层级是按照进程与线程级维度展示PyTorch和CANN的数据;Rank ID层级包括底层NPU数据(包含Ascend Hardware下各个Stream任务流的耗时数据和迭代轨迹数据、Communication和Overlap Analysis通信数据、Memory内存数据以及其他昇腾AI处理器系统数据)和AI Core Freq等层级,且卡下属层级内容的展示随导入的数据而变化。
- 区域三:图形化窗格,展示的数据是迭代内的数据,图形化窗格对应时间线树状图,逐行对时间线进行图形化展现,包括上层应用算子、各组件及接口的执行序列和执行时长。
- 区域四:数据窗格,统计信息或算子详情信息展示区,选中详情(Slice Detail)为选中单个算子的详细信息、选中列表(Slice List)为某一泳道选中区域的算子列表信息、系统视图(System View)为某类算子的汇总信息、以及查找(Find)为搜索的算子信息。
**泳道信息**
时间线(Timeline)界面上展示的泳道信息如下。
**表 1** 泳道信息
| 一层级泳道名称 | 二层级泳道名称 | 说明 |
|---|---|---|
| Process | Thread | 仅db格式文件支持展示此泳道,Thread层级泳道下还存在pytorch、CANN和MSTX,分别展示的是PyTorch框架下上层应用线程运行的耗时信息、CANN框架下线程运行的耗时信息和打点信息。 |
| Python | Thread | 应用层数据,每个子泳道Thread包含上层应用线程运行的耗时信息,需要使用PyTorch Profiler或msproftx采集。仅支持在text格式文件下展示该泳道。 |
| CANN | Thread | CANN层数据,每个子泳道Thread主要包含AscendCL、GE、Runtime组件以及Node(算子)的耗时数据。 如果是db格式文件,二层级泳道名称可能包含acl,model,node,hccl,runtime,op,queue,trace,mstx等。 |
| MindSpore | Thread | 在MindSpore场景下,展示当前Thread下运行的阶段耗时,用于分析网络结构性能。 |
| Scope Layer | Thread | 在MindSpore场景下,展示当前Thread网络层级的执行耗时。 |
| Python GC | Python GC | 在PyTorch场景下,若开启GC检测功能且采集周期内发生GC事件,则会在Python GC泳道中显示。 |
| Ascend Hardware | Stream <id> | 底层NPU数据,任务调度信息数据,记录AI任务运行时,各个Task在不同加速器下的执行耗时和AI Core的性能指标。 |
| Stream <id> MSTX domain <domainid> | Stream <id>的MSTX device侧打点数据。 | |
| Step Trace | 迭代轨迹数据。仅step_trace_*.json文件存在时展示该泳道。 | |
| CCU | Communication | 包含集合通信指令数据,CCU任务的起止时间以及CCU任务的一级索引指令的起止时间,以及同步及数据搬运耗时。 CCU泳道仅支持展示 |
| Overlap Analysis | Communication | 通信时间。 |
| Communication(Not Overlapped) | 未被计算掩盖的通信时间。 | |
| Computing | 计算时间。 | |
| Free | Device侧既不在计算也不在通信的时间。按Step维度拆解时,会被进一步区分为Preparing和Free,其中Preparing在做数据预处理,加载拷贝等操作。 | |
| Communication | Group <id> Communication | 通信域下的通信算子。一个卡(Rank)可以存在于不同的通信域中,一个Group标识当前卡在当前通信域的行为。 |
| Plane <id> | 集合通信算子信息。网络平面ID,对多个收发通信链路的并行调度执行,每个Plane就是一个并发通信维度。 | |
| NPU Metrics | Low Power | 低功耗数据,包含功耗、带宽、频率、温度等数据,通过呈现变频曲线,准确识别算子执行过程中的变频情况。 Low Power泳道仅支持展示 |
| Biu Perf | 呈现SU、VEC、CUBE、MTE等指令执行时间,以及打点数据。 Biu Perf泳道仅支持展示 |
|
| UB | 为UDMA和UNIC两种数据类型,呈现UB总体收发带宽情况。 UB泳道仅支持展示 |
|
| Block Detail | 展示各个算子在最早和最晚的AI core或AI Vector Core上的执行时间,当算子为Mix类型时,会同时执行在AIC和AIV上。 Block Detail泳道仅支持展示 |
|
| HBM | HBM内存读写速率,单位为MB/s。 | |
| DDR | DDR内存读写速率 | |
| LLC | 具体说明见表 2 NPU Metrics泳道信息中“LLC”泳道说明 | |
| NPU_MEM | 具体说明见表 2 NPU Metrics泳道信息中“NPU_MEM”泳道说明 | |
| Stars Soc Info | 具体说明见表 2 NPU Metrics泳道信息中“Stars Soc Info”泳道说明 | |
| acc_pmu | 具体说明见表 2 NPU Metrics泳道信息中“acc_pmu”泳道说明 | |
| AI Core Utilization | 具体说明见表 2 NPU Metrics泳道信息中“AI Core Utilization”泳道说明 | |
| AI Core Freq | 展示AI Core芯片在执行AI任务的过程中频率的变化情况。 AI Core Freq泳道仅支持展示 |
|
| SIO | 具体说明见表 2 NPU Metrics泳道信息中“SIO”泳道说明 | |
| QoS | 设备QoS带宽信息。 | |
| NIC | text场景:展示每个时间节点网络信息数据。 db场景:展示带宽信息数据。 泳道名称会根据导入的数据不同而变化。 |
|
| RoCE | RoCE通信接口带宽数据。RoCE泳道仅支持在text格式文件下展示。 | |
| PCIe | 具体说明见表 2 NPU Metrics泳道信息中“PCIe”泳道说明 | |
| HCCS | HCCS集合通信带宽数据,展示接收带宽和发送带宽,单位MB/s。 | |
| biu_group | 具体说明见表 2 NPU Metrics泳道信息中“biu_group”泳道说明 | |
| aic_core_group | 具体说明见表 2 NPU Metrics泳道信息中“aic_core_group”泳道说明 | |
| aiv_core_group | 具体说明见表 2 NPU Metrics泳道信息中“aiv_core_group”泳道说明 | |
| Stars Chip Trans | 具体说明见表 2 NPU Metrics泳道信息中“Stars Chip Trans”泳道说明 | |
| CPU Metrics | CPU Usage | Host侧CPU利用率数据。 |
| Memory Usage | Host侧内存利用率数据。 | |
| Disk Usage | Host侧磁盘I/O利用率数据。 | |
| Network Usage | Host侧网络I/O利用率数据。 | |
| OS Runtime API | Thread | Host侧syscall和pthreadcall数据。OS Runtime API泳道仅支持在text格式文件下展示。 |
| 二层级泳道名称 | 三级层级泳道名称 | 说明 |
|---|---|---|
| Low Power | - | 低功耗数据,包含功耗、带宽、频率、温度等数据,通过呈现变频曲线,准确识别算子执行过程中的变频情况。 Low Power泳道仅支持展示 |
| Biu Perf | Group<id>-aiv<id> | 呈现SU、VEC、CUBE、MTE等指令执行时间,以及打点数据。 Biu Perf泳道仅支持展示 |
| UB | UDMA/UNIC-Ports<id> | 为UDMA和UNIC两种数据类型,呈现UB总体收发带宽情况。 UB泳道仅支持展示 |
| Block Detail | AIC/AIV Earliest | 展示各个算子在最早的AI core或AI Vector Core上的执行时间,当算子为Mix类型时,会同时执行在AIC和AIV上。 Block Detail泳道仅支持展示 |
| AIC/AIV Latest | 展示各个算子在最晚的AI core或AI Vector Core上的执行时间,当算子为Mix类型时,会同时执行在AIC和AIV上。 | |
| HBM | HBM <id>/Read | HBM内存读取速率,单位为MB/s。 |
| HBM <id>/Write | HBM内存写入速率,单位为MB/s。 | |
| DDR | Read | DDR内存读取速率。 |
| Write | DDR内存写入速率。 | |
| LLC | LLC <id> Read/Hit Rate LLC <id> Write/Hit Rate |
三级缓存读写速率数据,三级缓存读取、写入时的吞吐量。 |
| LLC <id> Read/Throughput LLC <id> Write/Throughput |
三级缓存读取、写入时的命中率。 | |
| NPU_MEM | APP/DDR | 进程级DDR内存占用,单位KB。 |
| APP/HBM | 进程级HBM内存占用,单位KB。 | |
| APP/MEMORY | 进程级DDR和HBM内存占用和,单位KB。 | |
| Device/DDR | 设备级DDR内存占用,单位KB。 | |
| Device/HBM | 设备级HBM内存占用,单位KB。 | |
| Device/MEMORY | 设备级DDR和HBM内存占用和,单位KB。 | |
| Stars Soc Info | L2 Buffer Bw Level | SoC传输带宽信息,L2 Buffer带宽等级信息。 |
| Meta Bw Level | Meta带宽等级信息。 | |
| acc_pmu | Accelerator {accId}/readBwLevel | DVPP和DSA加速器读带宽。 acc_pmu泳道在 |
| Accelerator {accId}/readOstLevel | DVPP和DSA加速器读并发。 | |
| Accelerator {accId}/writeBwLevel | DVPP和DSA加速器写带宽。 | |
| Accelerator {accId}/writeOstLevel | DVPP和DSA加速器写并发。 | |
| AI Core Utilization | Average | AI Core指令占比数据的均值。AI Core Utilization泳道仅支持在text格式文件下展示。 |
| Core <id> | 各AI Core在执行Task的total cycle(从AI Core开始执行算子的第一条指令开始计数,到最后一条指令执行完成)占比情况。 | |
| AI Core Freq | AI Core Freq | 展示AI Core芯片在执行AI任务的过程中频率的变化情况。 AI Core Freq泳道仅支持展示 |
| SIO | dat_rx、dat_tx | 数据流通道的接收、发送带宽。SIO泳道仅支持在text格式文件下展示。 SIO泳道仅支持展示 |
| req_rx、req_tx | 请求流通道的接收、发送带宽。 | |
| rsp_rx、rsp_tx | 回应流通道的接收、发送带宽。 | |
| snp_rx、snp_tx | 侦听流通道的接收、发送带宽。 | |
| QoS | QoS <id>:OTHERS | 设备QoS带宽信息。 |
| NIC | Port <id>/Rx Port <id>/Tx |
text场景:展示每个时间节点网络信息数据。 db场景:展示带宽信息数据。 泳道名称会根据导入的数据不同而变化。 |
| RoCE | Port <id>/Rx Port <id>/Tx |
RoCE通信接口带宽数据。RoCE泳道仅支持在text格式文件下展示。 |
| PCIe | PCIe_cpl | 接收写请求的完成数据包,单位MB/s。Tx表示发送端,Rx表示接收端。 |
| PCIe_nonpost | PCIe Non-Posted数据传输带宽,单位MB/s。Tx表示发送端,Rx表示接收端。 | |
| PCIe_nonpost_latency | PCIe Non-Posted模式下的传输时延,单位us。Tx表示发送端,Rx表示接收端。PCIe_nonpost_latency无Rx,取固定值0。 | |
| PCIe_post | PCIe Posted数据传输带宽,单位MB/s。Tx表示发送端,Rx表示接收端。泳道名称会根据导入的数据不同而变化。 | |
| HCCS | txThroughput rxThroughput |
HCCS集合通信带宽数据,展示接收带宽和发送带宽,单位MB/s。 |
| biu_group | Bandwidth Read | BIU总线接口单元读取指令时的带宽。biu_group泳道仅支持在text格式文件下展示。 |
| Bandwidth Write | BIU总线接口单元写入指令时的带宽。 | |
| Latency Read | BIU总线接口单元读取指令时的时延。 | |
| Latency Write | BIU总线接口单元写入指令时的时延。 | |
| aic_core_group | Cube | 矩阵类运算指令在本采样周期内的cycle数和占比。aic_core_group泳道仅支持在text格式文件下展示。 |
| Mte1 | L1->L0A/L0B搬运类指令在本采样周期内的cycle数和占比。 | |
| Mte2 | 片上内存->AICORE搬运类指令在本采样周期内的cycle数和占比。 | |
| Mte3 | AICORE->片上内存搬运类指令在本采样周期内的cycle数和占比。 | |
| aiv_core_group | Mte1 | L1->L0A/L0B搬运类指令在本采样周期内的cycle数和占比。aiv_core_group泳道仅支持在text格式文件下展示。 |
| Mte2 | 片上内存->AICORE搬运类指令在本采样周期内的cycle数和占比。 | |
| Mte3 | AICORE->片上内存搬运类指令在本采样周期内的cycle数和占比。 | |
| Scalar | 标量类运算指令在本采样周期内的cycle数和占比。 | |
| Vector | 向量类运算指令在本采样周期内的cycle数和占比。 | |
| Stars Chip Trans | PA Link Rx | PA流量接收等级。当有集合通信带宽时,不建议参考该字段值,该字段为粗粒度的统计值。Stars Chip Trans泳道仅支持在text格式文件下展示,且 |
| PA Link Tx | PA流量发送等级。当有集合通信带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 | |
| PCIE Read Bandwidth | PCIe读带宽。当有PCIe带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 | |
| PCIE Write Bandwidth | PCIe写带宽。当有PCIe带宽时,不建议参考该字段值,该字段为粗粒度的统计值。 |
| 二层级泳道名称 | 三级层级泳道名称 | 说明 |
|---|---|---|
| CPU Usage | CPU <id> | Host侧CPU利用率数据。 |
| Memory Usage | Memory Usage | Host侧内存利用率数据。 |
| Disk Usage | Disk Usage | Host侧磁盘I/O利用率数据。 |
| Network Usage | Network Usage | Host侧网络I/O利用率数据。 |