【外部】内存标准测试工具-仅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,mimeapplication/zip,~147 MB) 已保存至attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_Linux_PlGEbMtOdoz2UhxAveLcM9MXn6e.zip
📎 MTS 工具压缩包 2(token
HpxgbYUjaokj72xPSsxc3E2ZnrQ,mimeapplication/zip,~237 MB) 已保存至attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_Windows_HpxgbYUjaokj72xPSsxc3E2ZnrQ.zip
📎 MTS 工具压缩包 3(token
DJStbFFxlo71vXxXdEgc3l70n1C,mimeapplication/zip,~197 MB) 已保存至attachments/GVGDdPJVPoCdMbxtnpqchxHmnsd/MTS_AndroidOrScene_DJStbFFxlo71vXxXdEgc3l70n1C.zip
二、测试注意事项
-
每个应用测试前,需要逐一打开,点掉弹框,设置10分钟/永不锁屏,然后重启手机开始测试;
-
刷机后连接wifi,登录小米账号(国际版本需要登录谷歌账号),测试前,需设置不自动更新,使用应用预置版本进行测试;
不自动更新步骤:点开设置——我的设备——点击系统,——点击右上角↗️三点 ——选择系统更新设置 ——选择自动下载,关闭-
注意脚本自动获取的进程名,是否跟待测进程一致,若不一致需要自己手动输入进程名;
-
对应测试场景,每测完一条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 中动图参考:

前台和后台测试值详见脚本生成的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分钟后抓取hprof3.5 额外获取高通AI-cpu+npu峰值
在原场景内存命令后添加 —ai,会同时监控npu数据(最后结果生成表格中展示),执行命令如下:
./start appdump --ai3.6 场景内存获取同时 抓取gfxinfo&Surfaceflinger
执行命令:./start appdump —gs
3.7 场景内存自动定时停止监控
操作场景时间固定,可开始设置停止监控时间,执行命令为:./start appdump —gs
四、剩余内存分布
4.1 开机剩余内存
前提条件
测试机型要求:出厂默认状态
线刷normal版本或恢复出厂设置(默认使用稳定版本。开发版需使用pref版)
开机后,关闭WiFi,设置中打开开发者选项,开启USB调试模式,开启USB调试(安全设置),设置自动锁屏时间为屏幕永不休眠/无操作后10分钟,一键清理内存(最近任务的一键清理按钮),重启手机
注:
- USB连接:为了保证手机运行状态,避免直接连接USB对内存的影响,USB连接电脑后解锁手机,运行测试工具(MTS)
- 开机引导处:同意必须的条约、作为新手机使用、跳过密码设置、跳过小爱、默认导航方式miui14:(“基础设置”页面点”继续”按钮)
- 不登陆帐户,不能带水印
- 不要使用调起/使用键盘
- 不要使用带’搜索’的功能
检查设备状态(此处测试遇到问题,可联系徐雨晴) (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 中