昇腾社区首页
中文
注册

Step内内存分析

Step内的内存问题主要包括内存泄漏、踩踏、内存碎片,导致内存池空闲、内存过多等问题,msLeaks工具当前仅支持Step内内存泄漏问题的定位。

前提条件

  • 请使用Step内内存分析功能时,如果需要设置--events参数,请确保--events参数中包含alloc和free。
  • 在使用Step内内存分析功能时,请勿设置--steps参数。

工具使用

在进行Step内内存分析时,需配合使用mstx打点功能进行问题定位,mstx打点详情参考性能调优工具用户指南中的mstx API参考章节内容。

  1. 使用msLeaks工具拉起用户程序,application为用户程序。
    msleaks application
  2. 执行完成后,会出现如下两种回显信息。
    1. 如果出现如下回显信息,表示存在内存泄漏问题。回显信息中分别展示了每张卡内存泄漏的汇总信息,包括泄漏发生的Step数、关联的kernel、地址以及泄漏大小等信息。
      图1 内存泄漏
    2. 如果出现如下回显信息,表示存在内存波动。回显信息中展示了单个Step内的内存波动(用最小和最大的内存池分配占用比值定义)以及最小的内存池分配占用,同时给出最小比值和最大比值作为参考,用户可根据该值判断是否存在内存泄漏风险。

      在第一个Step时,内存尚未稳定,所以只支持分析从第二个Step开始的内存波动,第一个Step内存波动可忽略。

      图2 内存波动
  3. 将结果件中的json文件(可视化内存信息)使用可视化工具展示,如图3所示,可查看内存申请释放情况。
    图3 内存申请释放情况
  4. 用户的打点信息如图4所示,当泄漏内存申请的时间与箭头标识的时间重合时,表示此时mstx打点位置附近的代码发生了内存泄漏。
    图4 标识打点

结果说明

Step内内存问题主要依靠内存信息可视化图进行分析,可视化信息详解可参见工具使用中的结果件说明