【外部】内存标准测试工具-仅ODM使用

来源飞书 docx(obj_token: GVGDdPJVPoCdMbxtnpqchxHmnsd)

本文是 ODM 专用的内存标准测试工具(MTS)使用文档,包含 3 个工具压缩包附件(已本地保存)和 1 张终端演示动图(已上传 MinIO)。文档中提到的 MTS_ODM 工具更新记录为 wiki 链接。

一**、测试工具(MTS)**

作用:

用于应用前后台内存和高优内存池测试,之前的半自动化测试工具也集成到了里面,方便测试

工具下载:

需要 Linux 环境,windows 用户请使用虚拟机安装 ubuntu 后使用。

(场景内存测试已适配windows执行)

更新时间:2026.06.15

更新内容:校准图形内存(若需要校准图形内存则使用4_3后版本, 之前版本无校准图形内存功能)

🔗 MTS_ODM工具更新记录(file-type: wiki, doc-id: JD8cw62Joi8EWbkrlmZcvpCKnN0

工具下载(附件,已本地保存):

📎 MTS 工具压缩包 1(token PlGEbMtOdoz2UhxAveLcM9MXn6e,mime application/zip,~147 MB) 已保存至 attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_Linux_PlGEbMtOdoz2UhxAveLcM9MXn6e.zip

📎 MTS 工具压缩包 2(token HpxgbYUjaokj72xPSsxc3E2ZnrQ,mime application/zip,~237 MB) 已保存至 attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_Windows_HpxgbYUjaokj72xPSsxc3E2ZnrQ.zip

📎 MTS 工具压缩包 3(token DJStbFFxlo71vXxXdEgc3l70n1C,mime application/zip,~197 MB) 已保存至 attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_AndroidOrScene_DJStbFFxlo71vXxXdEgc3l70n1C.zip

二、测试注意事项

  1. 每个应用测试前,需要逐一打开,点掉弹框,设置10分钟/永不锁屏,然后重启手机开始测试;

  2. 刷机后连接wifi,登录小米账号(国际版本需要登录谷歌账号),测试前,需设置不自动更新,使用应用预置版本进行测试;

不自动更新步骤:点开设置——我的设备——点击系统,——点击右上角↗️三点 ——选择系统更新设置 ——选择自动下载,关闭
  1. 注意脚本自动获取的进程名,是否跟待测进程一致,若不一致需要自己手动输入进程名;

  2. 对应测试场景,每测完一条case,都需要一键清理,再测试下一条case。

三、应用前后台内存测试方法

3.1 测试工具使用方法:

执行命令 linux : ./start appdump Window: .\start.exe appdump

先点开测试应用,终端输入如下命令,应用名称支持输入拼音汉字,例如 设置,支持输入”设置”,“shezhi”,“sz”。当终端出现”实时抓取内存中…, 操作APP结束后, 请按Enter键,记录前台5s值”,开始按照上述测试方法执行测试用例,测试用例执行结束,按【Enter】,等30s(个人应用需要等待3min)出结果

测试鸿蒙next执行命令为 : ./start appdump —hidumper 需安装hdc,下载安装链接:https://developer.huawei.com/consumer/cn/download/

$ ./start appdump
 
No:       序列号             设备名 状态
 1:  yp6dlr49nfeqkn4p     M2007J22C device
 2:  jfx4pz7h7pauga4h     M2007J22C device
请选择手机(输入序号):2
 
当前测试设备:jfx4pz7h7pauga4h cannon
请打开待测APP,用于获取测试包名,然后按Enter键继续测试,或者输入'q'结束测试:
[RunShell] command > adb -s jfx4pz7h7pauga4h shell dumpsys window | grep mCurrentFocus
[RunShell] output::std_result >   mCurrentFocus=Window{7c0461 mode=0 rootTaskId=10 u0 com.android.settings/com.android.settings.MainSettings}
 
请输入应用名称(拼音首字母):sz
匹配到应用:设置, 正在获取手机进程,请稍后...
当前包名:com.android.settings, 所有进程:['com.android.settings:remote', 'com.android.settings']
如果进程无误,请按Enter键后开始操作APP,
如果进程有误,请自行输入所有待测试进程名称,各进程间用空格分隔:
 
请输入[待测试进程场景],然后按Enter键后开始操作APP:
 
实时抓取内存中..., 操作APP结束后, 请按Enter键,记录前台5s值
com.android.settings:remote                     22
com.android.settings                            69
TOTAL                                           92
-----------------------
com.android.settings:remote                     22
com.android.settings                            76
TOTAL                                           98
-----------------------
com.android.settings:remote                     22
com.android.settings                            88
TOTAL                                          110
-----------------------
 
----------sleep 5s----------
----------等待30秒,自动记录后台测试结果----------
----------sleep 20s----------
send-trim-memory :  com.android.settings // 此步报错忽略即可
请打开待测APP,用于获取测试包名,然后按Enter键继续测试,或者输入'q'结束测试: q
已保存 应用内存信息 到 /home/cuiyangpei/Documents/work-MIUI/tool/memory_test/mts/out/appdump/2021-03-30_11-28-58 中

动图参考:

终端执行 python3 start.py appdump 的演示动图

前台和后台测试值详见脚本生成的mts/out/appdump/2021-xx-xx/***result***.txt文件

示例:

应用版本:        None
 
com.android.settings:remote        17        17 --------前台峰值 memory(MB)
com.android.settings        78        74 --------前台峰值 memory(MB)
TOTAL:        95--------前台峰值 memory(MB)
TOTAL-EGL:        91--------减去进程EGL的前台峰值 memory(MB)
 
com.android.settings:remote        17        17----------前台操作完静置5秒钟 memory(MB)
com.android.settings        72        63----------前台操作完静置5秒钟 memory(MB)
TOTAL:        89----------前台操作完静置5秒钟 memory(MB)
TOTAL-EGL:        80----------减去进程EGL的前台操作完静置5秒钟 memory(MB)
 
com.android.settings:remote        17        17----------后台静置3钟 memory(MB)
com.android.settings        61        61----------后台静置3钟 memory(MB)
 
高优实际值(TOTAL):        0----------后台静置3分钟 memory(MB)
高优参考值(TOTAL-EGL):        0----------减去进程EGL的后台静置3分钟 memory(MB)
非高优实际值(TOTAL):        78----------后台静置3分钟 memory(MB)
非高优参考值(TOTAL-EGL):        78----------减去进程EGL的后台静置3分钟 memory(MB
实际值(TOTAL):        78----------后台静置3分钟 memory(MB)
参考值(TOTAL-EGL):        78----------减去进程EGL的后台静置3分钟 memory(MB) --

取值:前台峰值、后台

3.2 通过序列号指定设备

./start appdump -s 序列号

3.3 根据之前的测试内容重新生成结果:

使用 ./start appdump -i 加上之前程序的生成结果文件夹,例如:

$ ./start appdump -i /home/liuchao12/Projects/mts/out/appdump/2021-04-26_16-48-27/
重新生成 应用内存信息 到 /home/liuchao12/Projects/mts/out/appdump/2021-04-27_09-45-22 中

3.4 根据最终测试结果,若发现超过标准,则需要手动抓取hprof文件,具体方法如下:

根据最终测试结果,若发现超过标准,则需要手动抓取hprof文件,具体方法如下:

./start appdump --hprof  在前台结束和后台3分钟后抓取hprof

3.5 额外获取高通AI-cpu+npu峰值

在原场景内存命令后添加 —ai,会同时监控npu数据(最后结果生成表格中展示),执行命令如下:

./start appdump --ai

3.6 场景内存获取同时 抓取gfxinfo&Surfaceflinger

执行命令:./start appdump —gs

3.7 场景内存自动定时停止监控

操作场景时间固定,可开始设置停止监控时间,执行命令为:./start appdump —gs

四、剩余内存分布

4.1 开机剩余内存

前提条件

  1. 测试机型要求:出厂默认状态

  2. 线刷normal版本或恢复出厂设置(默认使用稳定版本。开发版需使用pref版)

  3. 开机后,关闭WiFi,设置中打开开发者选项,开启USB调试模式,开启USB调试(安全设置),设置自动锁屏时间为屏幕永不休眠/无操作后10分钟,一键清理内存(最近任务的一键清理按钮),重启手机

  4. 注:

    • USB连接:为了保证手机运行状态,避免直接连接USB对内存的影响,USB连接电脑后解锁手机,运行测试工具(MTS)
    • 开机引导处:同意必须的条约、作为新手机使用、跳过密码设置、跳过小爱、默认导航方式miui14:(“基础设置”页面点”继续”按钮)
    • 不登陆帐户,不能带水印
    • 不要使用调起/使用键盘
    • 不要使用带’搜索’的功能
  5. 检查设备状态(此处测试遇到问题,可联系徐雨晴) (1)检查硬件批次,最好是P2或P2之后的机器

    方法1:查看手机背面有一段带有镭雕号的字样:

N2-P1-AS1-10378, 红色高亮部分为手机的硬件批次 方法2:

adb shell getprop | grep -i hwlevel

如果该项目还没到P2阶段,请忽略第5点(1)(2)(3)的所有测试条件。

(2)确认硬件批次为P2/P2之后的前提下,检查手机是否打开secureboot

     验证方法:adb shell getprop ro.boot.secureboot

     预期结果:返回值:1
          手机一般是在工厂过站时刷secureboot, 在确保硬件批次正确的前提下,secureboot一   般是开着的。

(3)确保设备为minidump debugpolicy状态

      检查方法:adb shell getprop ro.boot.dp

      预期结果:返回值:0x20

!注:如果返回值不为0x20,切到minidump debugpolicy版本的操作方法:

去corgi平台下载该项目工厂版本线刷包,注意筛选条件只 项目名称+工厂版+userdebug 这三个限制条件(找不到工厂包的把除了这三个的限制条件都去掉),解压缩,imges文件夹里有apdp_minidump.mbn, 用fastboot烧写:

fastboot flash apdp ./apdp_minidump.mbn

注意这里是你下载的 apdp_minidump.mbn 的路径

fastboot reboot

# 开机后再次验证 ro.boot.dp 返回值是否为0x20

测试步骤(以下测试步骤为脚本自动执行)

1.重启手机,解锁静置8min 2.计算5轮结果的平均值作为最后的结果。 ⚠️ 重启一次获取一次数据,共重启5轮

测试工具使用方法:

测试鸿蒙next执行命令为 :./hy_memory_dist 测试安卓执行命令为 :./memory_dist

$ ./memory_dist
 
重启手机中...
灭屏
亮屏解锁
静置 480 秒
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
重启手机中...
灭屏
亮屏解锁
静置 480 秒
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
重启手机中...
灭屏
亮屏解锁
静置 480 秒
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
重启手机中...
灭屏
亮屏解锁
静置 480 秒
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
重启手机中...
灭屏
亮屏解锁
静置 480 秒
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
第1轮测试
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution_1.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/source_1
第2轮测试
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution_2.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/source_2
第3轮测试
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution_3.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/source_3
第4轮测试
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution_4.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/source_4
第5轮测试
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution_5.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/source_5
生成 总表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_12-55-09/result/memory_distribution.xlsx静置 480 秒

结果:/out/memdist/ 以时间命名的文件夹

4.2 老化内存分布

前提条件:

不进行任何操作,直接连接老化后的手机

测试工具使用方法

$ ./memory_dist --stress
 
获取数据第 1 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
静置 10 秒
获取数据第 2 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
静置 10 秒
获取数据第 3 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
静置 10 秒
获取数据第 4 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
静置 10 秒
获取数据第 5 次
正在保存 d5e1e553:
         1: 设备信息
         2: /proc/meminfo
         3: dumpsys meminfo
抓取bugreport中
END
抓取参考数据(GC)
生成 内存分布表  : /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_11-50-54/result/memory_distribution.xlsx
链接 手机内存信息: /home/mi/PycharmProjects/mts_odm_bin/out/memdist/2023-01-30_11-50-54/source

结果:/out/memdist/ 以时间命名的文件夹

五、单应用 Monkey 测试

前提条件

测试之前需点掉应用弹窗
仅适用有界面的应用
设置中打开开发者选项,开启USB调试模式,开启USB调试(安全设置),设置自动锁屏时间为屏幕永不休眠/无操作后10分钟,直接进入系统
 

设置配置文件

在配置文件中列出需要测试的应用以及每个应用测试时长(默认1小时)

[packages]
# 应用进程可在 applist.json 文件自行添加
name=
    设置
 
[basic]
# 应用 monkey 时长(s)
timeout=3600
# 达到内存阈值(MB)立即停止
memory_threshold=999999

注意:应用配置可能不全,可以在applist.json中自行配置应用包名及进程列表

运行脚本

#./start appdump --monkey
 
上次更新时间 2022年 12月 05日 星期一 17:16:04 CST,自动更新程序中...
error: 不能变基式拉取:您有未暂存的变更。
error: 请提交或贮藏它们。
更新失败,请手动执行 git pull 更新。
com.android.settings                            31
com.android.settings:remote                      0
com.xiaomi.misettings                            0
com.xiaomi.misettings:remote                     0
TOTAL                                           31
-----------------------
shell        23985  1798 5175588 118636 futex_wait_queue_me 0 S com.android.commands.monkey
 
2023-01-12_22-03-52
2023-01-12_22-03-54
----------请稍后,程序自动记录后台测试结果----------
----------sleep 20s----------
com.android.settings    31      31      31      31
com.android.settings:remote     0       0       0       0
com.xiaomi.misettings   0       0       0       0
com.xiaomi.misettings:remote    0       0       0       0
send-trim-memory :  com.android.settings
send-trim-memory :  com.android.settings:remote
send-trim-memory :  com.xiaomi.misettings
send-trim-memory :  com.xiaomi.misettings:remote
----------sleep 180s----------
已保存 应用内存信息 到 /home/mi/PycharmProjects/mts/out/monkey/2023-01-12_22-03-52 中