使用说明
支持调用栈火焰图和内存折线块图局部放大
MindStudio Insight支持通过鼠标左键框选放大选中部分,放大功能默认关闭。
在“调用栈火焰图”或者“内存申请/释放折线图&内存块图”中,如果图中右上角
按钮,是蓝色的,则默认开启放大功能,单击鼠标左键框选需要放大的区域,松开鼠标左键,框选部分将会被放大(“调用栈火焰图”或“内存申请/释放折线图&内存块图”会同时放大),框选放大区域如图1所示。单击
按钮,图形恢复至原始状态。
可单击“内存申请/释放折线图&内存块图”正上方的图例,隐藏所选的折线和内存块,隐藏后,该折线和内存块在图中不展示,对应图例置灰,再次单击置灰图例,可将其重新展示。
- 单击图中右上角
按钮,使其为置灰状态,折线图和块图被锁定,不支持鼠标左键框选放大功能;单击按钮使其变蓝,开启框选放大功能。放大功能默认开启。 - 单击折线图和块图右上方
按钮,图形将会恢复最初状态。
支持显示内存详情拆解图
当鼠标置于“调用栈火焰图”或者“内存申请/释放折线图&内存块图”中,会显示一条时间线,在“内存申请/释放折线图&内存块图”区域,单击时间线,则会在“内存申请/释放折线图&内存块图”下方展示对应时间点的内存详情拆解图,便于开发者查看内存占用情况。“内存详情拆解图”展示的内容会随所选择的类型而变化。
如果需要查看指定的内存层级,可单击“内存详情拆解图”下方的层级目录条进入所选层级。
- 当类型选择HAL时,“内存详情拆解图”中仅展示通过CANN级别分类分级的内存数据,如图2所示。
- 当类型选择除HAL之外的其它选项时,“内存详情拆解图”中展示对应框架侧内存池的内存分类分级情况。例如当类型选择PTA时,“内存详情拆解图”中仅展示PTA框架的内存情况,如图3所示。
“内存详情拆解图”支持左右上下拖拽和缩放展示。
- 鼠标放置在图中,按住鼠标左键可实现左右上下拖拽。
- 在“内存详情拆解图”上,使用鼠标滚轮实现缩放展示;或选择任一内存块,单击鼠标左键,可将选中的内存层级放大展示。
调用栈图与内存块图支持联动
双击“调用栈火焰图”中单个调用栈块时,会以该调用栈块的起始时间和截止时间为界放大调用栈图,显示该时间段的所有调用栈信息,同时,“内存申请/释放折线图&内存块图”同步放大,显示该时间段内的所有内存块。
双击“内存申请/释放折线图&内存块图”的指定内存块,会以该内存块的起始时间和截止时间为界放大内存块图,显示该时间段的所有内存块,同时,“调用栈火焰图”实现联动,同步放大显示该时间段内的所有调用栈,并自动匹配至对应的“线程ID”,如图4所示。
如果需要将图形恢复最初状态,单击图形右上方
按钮即可。
如果内存块对应的“线程ID”未采集调用栈数据,则“调用栈火焰图”区域将为空。
内存详情展示
在内存详情表区域,通过“内存块视图”和“内存事件视图”分别展示内存的详细信息,默认展示所有内存相关信息。
表格中呈现的字段支持排序和搜索,单击字段名称后
,可搜索所需信息。
“内存块视图”中的“内存块大小”、“申请时间”和“释放时间”字段,“内存事件视图”中的“时间戳(ns)”字段,单击
,支持筛选,可输入最小值和最大值进行区间筛选,只能输入整数,输入的数值最小为0,最大为当前展示的对应字段的最大值。
- 内存块视图:展示内存块的详细信息,如图5所示,字段解释如表1所示。
当在“内存申请/释放折线图&内存块图”中分别选择不同“设备ID”和“类型”时,内存块视图的展示信息也会随之更新;当框选“内存申请/释放折线图&内存块图”中部分区域展示时,内存块视图的信息也会随之更新,展示的是所有与框选时间范围存在交集的内存块信息。
在“内存块视图”表格右上方,单击“过滤低效显存”按钮,弹出筛选弹框,分别通过设置“提前申请阈值”、“延迟释放阈值”或“空闲过长阈值”,筛选低效显存。
表1 内存块视图字段说明 中文字段
英文字段
说明
内存块ID
ID
内存块ID,内存块唯一标识。
内存块地址
Addr
内存块地址,对应内存申请/释放/访问事件的地址。
内存块大小(bytes)
Size(bytes)
内存块大小,对应内存申请事件,单位为bytes。
申请时间(ns)
Malloc Timestamp(ns)
内存块申请时间,对应内存申请事件的时间,单位ns。
释放时间(ns)
Free Timestamp(ns)
内存块释放时间,对应内存释放事件的时间,单位ns。
申请者
Owner
内存块持有者所属标签。
进程ID
Process ID
内存块所属进程号,对应内存申请/释放事件的所属进程号。
线程ID
Thread ID
内存块所属线程号,对应内存申请/释放事件的所属线程号。
首次访问时间(ns)
First Access Timestamp(ns)
首次访问事件时间。
末次访问时间(ns)
Last Access Timestamp(ns)
末次访问事件时间。
最大访问时间间隔(ns)
Max Access Interval(ns)
访问事件的最大间隔时间。
特有属性
Attr
扩展属性,包含以下信息:
- allocation_id:内存块所属的申请/访问/释放序列id,唯一标识一组内存事件。
- lazy_used:提前申请场景,取值为true或者false,true表示已识别到该场景。
- delayed_free:延迟释放场景,取值为true或者false,true表示已识别到该场景。
- long_Idle:超长闲置场景,取值为true或者false,true表示已识别到该场景。
- 如果导入的数据是使用MindStudio 8.2.RC1之前版本的msLeaks工具采集的,或者数据中没采集到访问事件,那么allocation_id显示为0,首次访问时间(ns)、末次访问时间(ns)显示为-1,最大访问时间间隔(ns)显示为0。
- 由于msLeaks工具当前仅支持采集ATB和Ascend Extension for PyTorch算子场景的内存访问事件,则首次访问时间(ns)、末次访问时间(ns)和最大访问间隔(ns)也仅支持展示对应场景的详情,其余场景下,首次访问时间(ns)、末次访问时间(ns)显示为-1,最大访问时间间隔(ns)显示为0。
- 内存事件视图:展示内存事件的详细信息,如图6所示,字段解释如表2所示。
当在“内存申请/释放折线图&内存块图”中选择不同“设备ID”时,内存事件视图的展示信息也会随之更新;当框选“内存申请/释放折线图&内存块图”中部分区域展示时,内存事件视图的信息也会随之更新,展示的是框选时间范围内的所有内存事件。
表2 内存事件视图字段说明 中文字段
英文字段
说明
事件ID
ID
事件ID,与Process ID共同标识唯一一个内存事件。
事件类型
Event
msLeaks记录的事件。
事件子类型
Event Type
事件子类型。
名称
Name
事件名称,与Event值有关。
时间戳(ns)
Timestamp(ns)
内存事件发生的时间。
进程ID
Process ID
进程号。
线程ID
Thread ID
线程号。
内存地址
Addr
内存地址。
特有属性
Attr
内存事件特有属性,每个事件类型有各自的属性项。
调用栈(Python)
Call Stack(Python)
Python调用栈。
仅当数据中采集到该信息时,则显示该字段。
调用栈(C)
Call Stack(C)
C调用栈。
仅当数据中采集到该信息时,则显示该字段。





