OS4降负载专项 - 内存方案
来源:飞书 wiki(obj_token: WJwCd8AfDoi04mxYPAIcZqianPc)
说明:原文档中的飞书电子表格(sheet)以
<sheet token="Pl9zsRfv1hSLcttIwhdcz0bQnXf">引用形式嵌入,无法在 Markdown 中重建表格内容,已用占位说明保留位置;表格数据集中在表格 tokenPl9zsRfv1hSLcttIwhdcz0bQnXf中。
标准方案
👉 方案改进
- 原方案四大类场景,包含开机内存剩余,老化内存剩余,应用峰值内存,常驻高优占用,后台驻留
- 其中两类剩余内存经过分析,统计无法准确内存统计口径,修改为 开机内存占用,老化内存占用
- 新方案开机内存占用,老化内存占用,应用峰值内存,常驻高优占用,后台驻留进程
方案描述
- 开机内存占用
- 开机后等待8分钟后,统计 dumpsys meminfo 和 /proc/meminfo 中的内存占用
- 老化内存占用
- 固定路径模型用户使用8小时(参考老化内存降负载-内存测试方法,工具及拆解工具),一键清理,统计 dumpsys meminfo 和 /proc/meminfo 中的内存占用
- 应用峰值内存
- 共152应用,统计前台的峰值内存
- 常驻高优内存
- 共21个应用,进程级别在[forground, privious) (0 < adj score < 700)
- 固定用例( 21 个应用不同),后台峰值内存
- 内存驻留
- 55个三方应用循环连续启动9轮,查看临近五个应用的驻留比例,同时获取最小驻留和平均数量
基于OS3识别的系统内存痛点,内存资源控制-内存标准分析,结合内存测试方法,制定降负载相关的内存摸底
白板流程图(资源管控-内存):
- 资源管控-内存
- 开机内存占用
- 目的:开机状态下的内存占用
- 老化后内存占用
- 目的:经过文件系统老化及进程老化后内存占用,对比内存占用增量
- 应用峰值占用
- 目的:小米自研应用的应用前后台峰值符合内存4.0标准
- 高优进程场景内存占用
- 目的:系统高优进程(52)的内存前后台内存对比
- 内存驻留模型
- 目的:OS的内存驻留能力
测试数据展示
👉 现状统计,小米17(P3)
- 内存问题整体解决情况:43.18%通过内存TMG评审澄清,解决率为38.64%
- 内存标准经过多年迭代,很多问题无法解决,比较关键是无有效拆解分析工具,业务比较难执行

开机内存内存测试原始数据
👉 总结:
- 高端机-12G内存:Magic8 Pro < OPPO FIND X9 Pro < P1 < VIVO X300 Pro
- 开机内存占用,差于 友商magic 8Pro,OppoFind X9 Pro **1.4G,1G,**进程数量多19,42个
- 中端机12G内存: 荣耀300 < P16U
- 开机内存占用,差于 友商 荣耀**1.2G,**进程数量多20个 中端机8G内存:荣耀X70 < ViVO Y500Pro < P16
- 开机内存占用,差于 友商 ViVO Y500Pro, 荣耀X70 134MB, 1.4G
- 低端机4G-国际:P15A<三星A06 开机内存占用,差于 友商三星A06 -239MB
- 低端机6G:O19<荣耀Play 10C 开机内存占用,差于 荣耀Play 10C -1692MB
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetROqm23)— 开机内存相关数据
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetjq4OoH)
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetDPjT51)
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetXnw689)
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetSLqOxN)
老化内存 (top)
👉 高端机-12G内存: 总结: Magic8 Pro < OPPO FIND X9 Pro < VIVO X300 Pro < P1
- 老化后内存占用,相对开机占用,P1增加1.66G,竞品(最优Vivo 增加1055MB)
- 老化后内存占用,差于Magic 8Pro 2GB,差于OppoFindX9 1.34G,差于 Vivo X300Pro 差距 579MB,差于 小米15Ultra 280MB,差于 一加15 1.3G
- 老化后进程数量增量 29,差于竞品友商,竞品最优(Vivo 增加 -7)
- 老化后进程数量,差于OppoFindX9 56, 差于Majic8 Pro 49,差于Vivo X300Pro 48,差于一加15 41
中端机-12G内存: 总结: 荣耀300 < P16U
- 老化后内存占用,相对开机占用,P16U增加1.56G
- 老化后内存占用,差于荣耀300 1.35G
- 老化后进程数量增量 31,差于荣耀300
- 老化后进程数量差于荣耀300 31
中端机-8G内存: 总结: 荣耀x70 < P16 < VIVO Y500 Pro
- 老化后内存占用,相对开机占用,P16U增加 0.86G
- 老化后内存占用,差于荣耀x70 1.36G
- 老化后进程数量增量 31,差于荣耀x70,VIVO Y500 Pro
低端机-4G内存: 总结:三星A06 < P15A
- 老化后内存占用,相对开机占用,P15A增加 610MB
- 老化后内存占用,差于三星A06 753MB
低端机-6G内存: 总结:O19 < 荣耀Play 10C
- 老化后内存占用,相对开机占用,O19增加 676MB 荣耀Play10C增加 1332MB
- 老化后内存占用,差于荣耀Play10C 1131MB
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheeti1iFpq)📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetOE4hBF)📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetCYqe07)📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetqCaMOP)📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetKRTiRi)
诉求:平台内存,内核内存目前提交问题解决少,缺乏进程数量和增量标准,缺乏进程对应的责任田
应用峰值内存
👉 总结:TOP13 高优进程对比,前台峰值内存占用 Mate60 < Vivo X200U < O2S < P1
- 壁纸:P1 相比 Mate60 Pro 多占用 3.93倍( 73MB ), 相比 X200U 多占用 7.56倍( 85MB )
- 电话服务:P1 相比 Mate60 Pro 多占用 1.76倍(56MB), 相比 X200U 多占用 1.44倍(40MB), 相比 Magic8Pro 多占用 1.81倍(58.33MB)
- 负一屏:P1相比Mate60 Pro多占用 1.67倍(163MB), 相比 X200U 多占用 1.52倍(139MB), 相比 Magic8Pro 多占用 4.05倍(237MB)
- SystemUI:P1相比Mate60 Pro多占用 2.75倍(276MB), 相比 X200U 多占用 1.95倍(212MB), 相比 Magic8Pro 多占用 1.75倍(179MB)
- 息屏预览:P1相比Magic8Pro多占用 1.79倍(46.67MB)
- 蓝牙:P1相比Mate60 Pro多占用 2.09倍(42.67MB), 相比 X200U 多占用 1.13倍(9.34MB), 相比 Magic8Pro 多占用 1.13倍(18MB)
- 手机管家:P1相比Mate60 Pro多占用 2.09倍(39.67MB), 相比 X200U 多占用 1.92倍(36.33MB), 相比 Magic8Pro 多占用 1.64倍(29.67MB)
- 应用商店:P1相比X200U 多占用 1.37倍(118.67MB)
- 浏览器:P1相比Mate60 Pro 多占用 1.4倍(222.67MB)
- 语音唤醒:P1相比X200U 多占用 1.15倍(10.67MB),相比Magic8Pro 多占用 1.11倍(8.33MB)
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheet4ufPAu)
常驻高优内存
👉 总结:TOP6 高优进程对比,后台峰值内存占用 Mate60 < Vivo X200U < O2S < P1
- 壁纸:P1 相比 Mate60 Pro 多占用 3.70倍(39.67MB), 相比 X200U 多占用 4.94倍(43.33MB)
- 电话服务:P1 相比 Mate60 Pro 多占用 2.1倍(65MB), 相比 X200U 多占用 1.74倍(53MB), 相比 Magic8Pro 多占用 2.12倍(66.33MB)
- 负一屏:P1 相比 Magic8Pro多占用 2.05倍(77MB)
- SystemUI:P1相比Mate60 Pro多占用 3.24倍(236.33MB), 相比 X200U 多占用 1.92倍(163.67MB),P1 相比 Magic8Pro多占用 1.3倍(78MB)
- 桌面:P1相比Mate60 Pro多占用 1.5倍(66MB), 相比 X200U 多占用 1.28倍(43MB)
- 蓝牙:P1相比Mate60 Pro多占用 2.18倍(42.33MB), 相比 X200U 多占用 1.16倍(11MB),P1 相比 Magic8Pro多占用 1.3倍(18MB)
- 手机管家:P1相比Mate60 Pro多占用 1.89倍(29.33MB), 相比 X200U 多占用 2.34倍(35.67MB),P1 相比 Magic8Pro多占用 1.55倍(22MB)
- 输入法:P1相比Mate60 Pro多占用 1.13倍(12.67MB),P1 相比 Magic8Pro多占用 1.08倍(8MB)
- 应用商店:P1相比Mate60 Pro多占用 1.74倍(140.67MB), 相比 X200U 多占用 1.67倍(132.67MB),P1 相比 Magic8Pro多占用 1.17倍(47MB)
- 浏览器:P1相比Mate60 Pro多占用 1.36倍(181.33MB),P1 相比 Magic8Pro多占用 1.15倍(91.33MB)
- 语音唤醒:P1相比X200U多占用 4.58倍(53.67MB),P1 相比 Magic8Pro多占用 1.36倍(18MB)
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheethvoNvO)
内存驻留:小米应用后台驻留标准.docx
📎 附件:小米应用后台驻留标准.docx(token:
R5yPbvzsaoQ5yxxW9Z6cUGqenR0,未尝试下载)
👉 总结:驻留模型整体看 P1 > Magic8 Pro > OPPO FINDX9Pro > VIVO X300Pro
- 前第1-5驻留能力: P1 > Magic8 Pro > OPPO FINDX9Pro > VIVO X300Pro
- 应用平均驻留数量:P1 > Magic8 Pro > OPPO FINDX9Pro > VIVO X300Pro
- 最小驻留数量: P1 = Magic8 Pro = VIVO X300Pro > OPPO FINDX9Pro
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheet9YRoCC)
进程后台启动管控
👉 总结:
存在20个应用进程后台查杀后频繁拉起现象
- 应用开发部:7个 (进度:1/7)
- 核心系统部:5个
- 安全技术部:4个(进度:1/4)
- 互联网业务部:2个
- 通信技术部:1个
- Vela研发部:1个
20个应用进程:小米特有13个,剩余7个里面友商vivo存在同样频繁拉起现象的仅有1个
下一步措施
- 业务团队拆解频繁拉起合理性,如果确实需要拉起,上性能功耗TMG评审,评审合理性
12.20号进展:
- 已拆解13个SR,其中1个SR为异常拉起工具开发和大数据打点,另外12个SR对应业务进程异常拉起拆解优化
- 当前仅 远程秘钥 和 htmlviewer 提交了异常拉起澄清文档
📊 嵌入飞书表格(token
Pl9zsRfv1hSLcttIwhdcz0bQnXf,sheetGDDXXX)
下一步规划
内存标准制定
👉 前台标准,后台标准制定- 标准需要刷新 -内存标准5.0 @王健 @姚旺来 @Ping1 Xiong 熊平
【外部】小米应用内存标准4.0(sheet
8uKRmW)开机/老化内存占用建立进程级别标准及看护责任田(诉求:测试部内部也建立对应的测试责任田)
头部自研应用场景前后台内存的刷新(结合竞品及内存拆解工具进行刷新)
应用驻留模型及标准刷新(结合用户场景,建立关键用户场景识别及查杀权重)
应用后台拉起行为控制(标准新增,解决当前识别出的痛点)
内存拆解优化
👉 专项目标:Q18开机内存占用优化1.4GB(对标最佳竞品),挑战2.3GB(优于最佳竞品20%);
- 一方应用高频场景,前台峰值内存平均降低xxMB(对标最佳竞品),后台峰值内存平均降低xxMB(对标最佳竞品)
开机内存占用拆解(P1相比荣耀Magic8 Pro 多32%(1.4GB))
- 系统预留内存:DDR大小 - MemTotal。
- 内核内存: Shmem + SlabUnreclaim + VmallocUsed + PageTables + SecPageTables + CmaUsed。
- 系统关键进程内存:系统守护进程和系统关键进程的Pss之和(oom_adj < PERSISTENT_PROC_ADJ)。
- 常驻高优进程内存:系统重要服务、焦点及可见应用、可感知应用及服务等进程的Pss之和(PERSISTENT_PROC_ADJ ⇐ oom_adj < PREVIOUS_APP_ADJ)。
- 常驻进程个数 差距明显:P1比荣耀Magic8 pro多28%(58个)内存数据统计
- 系统服务和一方应用的开机内存差距明显:其中Phone,P1比Magic8Pro多278%(111M);systemUI,P1比Magic8Pro多96%(162M);SystemServer,P1比Magic8Pro多89%(282M);camera.provider,P1比Magic8Pro多32%(74M);
| 领域 | 子领域 | 模块/进程 | 小米P1 | Magic8 pro | 差距(MB) | 责任人 |
|---|---|---|---|---|---|---|
| 系统预留 | (合计) | 1278 | 1137 | 141 | ? | |
| 系统预留 | 硬件保留 | ? | ||||
| 系统预留 | 内核代码和数据 | ? | ||||
| 系统预留 | 内核内存管理开销 | ? | ||||
| 内核 | (合计) | 1039 | 941 | 98 | ? | |
| 内核 | Shmem | 22 | 29 | -7 | ? | |
| 内核 | SlabUnReclaimable | 528 | 475 | 53 | ? | |
| 内核 | VmallocUsed | 345 | 275 | 70 | ? | |
| 内核 | PageTables | 144 | 163 | -19 | ? | |
| 内核 | SecPageTables | 17 | 17 | 0 | ? | |
| 内核 | CmaUsed | 190 | 281 | -91 | ? | |
| 系统关键进程 | (合计) | 1952 | 1401 | 551 | ? | |
| 系统关键进程 | 系统守护进程(NATIVE) | 1353(进程数:207) | 1085(进程数:171) | 268 | ? | |
| 系统关键进程 | 系统守护进程 | vendor.qti.camera.provider-service_64 | 305 | 231 | 74 | ? |
| 系统关键进程 | 系统守护进程 | surfaceflinger | 173 | 144 | 29 | ? |
| 系统关键进程 | 系统守护进程 | vendor.qti.hardware.display.composer-service | 43 | 22 | 21 | ? |
| 系统关键进程 | 系统关键进程(SYSTEM) | 600(进程数:1) | 318(进程数:1) | 282 | ? | |
| 系统关键进程 | 系统关键进程 | SystemServer | 600 | 318 | 282 | ? |
| 常驻高优进程 | (合计) | 1659 | 998 | 661 | ? | |
| 常驻高优进程 | 系统重要服务(PERSISTENT_PROC,PERSISTENT_SERVICE) | 838(进程数:27) | 472(进程数:19) | 366 | ? | |
| 常驻高优进程 | 系统重要服务 | com.android.systemui | 330 | 168 | 162 | ? |
| 常驻高优进程 | 系统重要服务 | com.android.phone | 151 | 40 | 111 | ? |
| 常驻高优进程 | 系统重要服务 | com.android.bluetooth | 48 | 24 | 24 | ? |
| 常驻高优进程 | 焦点及可见应用(FOREGROUND_APP,PERCEPTIBLE_RECENT_FOREGROUND_APP,VISIBLE_APP) | 749(进程数:18) | 419(进程数:11) | 330 | ? | |
| 常驻高优进程 | 焦点及可见应用 | com.miui.home / com.hihonor.android.launcher | 220 | 199 | 21 | ? |
| 常驻高优进程 | 焦点及可见应用 | com.miui.securitycenter.remote / com.hihonor.systemmanager:service | 73 | 34 | 39 | ? |
| 常驻高优进程 | 焦点及可见应用 | com.xiaomi.bluetooth | 35 | 35 | ? | |
| 常驻高优进程 | 可感知应用及服务(PERCEPTIBLE_APP,PERCEPTIBLE_MEDIUM_APP,PERCEPTIBLE_LOW_APP,BACKUP_APP) | 167(进程数:6) | 51(进程数:1) | 116 | ? | |
| 常驻高优进程 | 可感知应用及服务 | com.baidu.input_mi / com.sohu.inputmethod.sogou.honor | 78 | 51 | 27 | ? |
| 常驻高优进程 | 可感知应用及服务 | com.xiaomi.aicr:cognitionService / com.hihonor.searchservice.monitor | 43 | 8 | 35 | ? |
| 常驻高优进程 | 可感知应用及服务 | com.xiaomi.metoknlp | 11 | 11 | ? | |
| 常驻高优进程 | 应用服务进程(HEAVY_WEIGHT_APP,SERVICE) | 61(进程数:3) | 16(进程数:1) | 45 | ? | |
| 常驻高优进程 | 应用服务进程 | com.xiaomi.xmsf:services / com.hihonor.android.pushagent.HiPushService | 20 | 9 | 11 | ? |
| 常驻高优进程 | 应用服务进程 | com.xiaomi.joyose | 18 | 18 | ? |
👉 内存治理与优化方案
- 减少内存需求:通过业务瘦身、业务规格分级、内存按需申请、减少常驻进程、减少内存访问等手段,从源头减少内存整体的申请量。
- 增加内存容量:通过内存压缩、数据换出、释放缓存,以及必要时查杀用户无感知应用等手段,提升系统整体可使用的内存容量。
- 提升内存利用率:通过增加系统可管理内存、增加可回收内存、以及增加数据共享等手段,提升内存利用率,间接达成增加内存容量的目的。
白板流程图(内存治理与优化):
- 内存治理与优化
- 速率
- 保驻留
- 少杀应用
- 保留热点数据
- 预加载
- 应用预加载
- 资源预加载
- cache预加载
- 硬件加速
- 硬件解压
- 调频率
- 保带宽
- 容量
- 增加容量
- 压缩
- 提升压缩率
- 增加压缩量
- 换出
- 增加换出量
- 释放缓存
- 释放文件缓存
- 释放业务可重建数据
- 业务主动释放资源
- 杀进程
- 按用户影响程度杀进程
- 减少需求
- 业务瘦身
- 算法优化
- 数据格式化压缩
- 业务规格分级
- 功能分级
- DFX分级
- 按需申请
- 静态改动态
- 动态懒加载
- 避免备份
- 减少访问
- 增强数据局部性
- 减少后台运行
- 减少常驻进程
- 减少进程开机自启动
- 减少进程相互拉起
- 提升利用率
- 增加可管理内存
- 硬件预留改CMA
- 增加可回收量
- dmabuf支持回收
- graphic内存支持回收
- 驱动内存支持回收
- 增加数据共享
- 增加跨语言共享
- 增加跨模块共享
- 增加跨进程共享
- 增加跨硬件共享
内存拆解工具
👉 提供一套内存拆解工具,提供在多设备、多场景下对各类内存统计指标快速定位和函数级别拆解对比能力
| 左 (48.5%) | 右 (51.5%) |
|---|---|
![]() | ![]() |
👉 工具展示1(java/native堆内存分配火焰图)

👉 工具展示2(库/函数级内存分配差异对比)

3.4 内存大数据监控
👉 专项目标: Top100三方前/后台内存占用 及 所有系统进程和一方应用监控(超内存4.0标准基线)

