本文主要包括部分:
一、Memory问题分析流程
1.1 导读
1.2 问题分类及分析方法索引
1.3 常用debug命令及工具索引
二、Memory basic
2.1 Memory基础知识
2.2 Kernel Memory分解
2.3 LMKD/kswapd
2.4 zram swap及swapness
2.5 DMABUF/EGL/ION
2.6 GPU/GL track详解
2.7 CMA
2.8 OOM
三、BOOT Memory
3.1 开机内存测试场景及标准
3.2 SW版本差异
3.3 Reserved Memory
3.4 开机内存优化
四、low Memory
4.1 Low Memory问题场景及判定方法
4.2 Low Memory分析流程
一、Memory问题分析流程
1.1 导读
常见Memory问题分类及分析方法
Memory问题类型 | 描述 | 问题分析流程 |
固定场景内存优化 | 开机内存优化: 开机内存测试场景及标准 | 详见 1.2 问题分类及分析方法索引 |
APK内存差异 | 单个APP内存用量优化 | 详见3.4 开机内存优化 |
Low Memory | 运行过程中memory不足导致卡顿或者其它performance问题(前台进程或后台驻留进程被杀、app保活等) | 详见4.1 Low Memory问题场景及判定方法 |
Memory Leak | 疑似内存泄漏 | 此部分不属于memory performance issue,详见后续文章 |
Memory debug command及工具速查 | 常用Memory debug方法及工具请参考 | 详见1.3 常用debug命令及工具索引 |
Memory Basic
Memory相关基础知识学习,主要内容如下:
- /proc/meminfo memory状态解读
- 命令:adb shell cat /proc/meminfo
- 内存分布log 查看方式
- dumpsys meminfo分解
- dumpsys meminfo
- dumpsys meminfo $pid
- maps/smaps/showmap
- maps
- smaps
- showmap
- procrank 分解及VSS/RSS/PSS/USS基础知识
- procrank指令
- VSS/RSS/PSS/USS基础知识
- swap/PSwap/USwap/ZSwap
- 计算公式
- 组成及优化方法
- 优化方式
- SUnreclaim
- VmallocUsed
- swap
- zram swap
- 动态调整zram相关参数以及常用debug方法
- swap disk enable/disable
- 注意事项
- 修改zram大小
- Check swap information
- swappiness
- zram相关资料
- EGL用量统计
- kernel-5.10后版本EGL采用RSS的统计方式
- EGL用量优化方法
- 获取DMABUF的指令
- 推荐方法
- 拓展阅读:ION(kernel-4.19及之前使用)
- ION的设计目标
- 如何查看ION使用内存
- 关于ION buffer Memory leakage
- 环境检查
- 查看整机gpu memory用量
- CMA 问题分析思路
- 分析流程
- CMA Linux 原生预览内存
1.2 问题分类及分析方法索引
- 开机内存优化分析流程图/表
- LowMemory优化分析流程图/表
开机内存优化分析流程图
开机内存优化分析流程表
No. | 开机内存优化问题分析Flow | MOL文档参考 |
分析前check项 |
| |
1 | 对比机选取及目标设定是否合理? | 开机内存优化 => 对比机选取 |
2 | 开机内存测试场景对齐及标准定义 | 开机内存测试场景及标准 |
抓取开机内存数据的方法 | ||
根据抓取信息比对差异,逐项优化 | ||
3 | 是否为软件升级导致差异? | SW版本差异 |
4 | MemTotal不达标? | Reserved Memory优化 |
5 | Used RAM中Kernel used超标? | Kernel Memory分解 |
5.1 | DMA-BUF/EGL超标? | DMABUF/EGL/ION用量优化 |
5.2 | GL mtrack超标? | GL mtrack/GPU用量优化 |
5.3 | Kernel used逐项优化 | Kernel Memory分解 |
6 | Used RAM中used pss超标 | 开机内存优化 |
6.1 | platform进程pss超标? | 提交eService协助,可以参考:开机内存优化 => 单个进程用量厘清 先做初步排查 |
6.2 | Customer UI或者三方apk pss超标? | Customer UI owner或者三方app owner自行优化或厘清 参考:开机内存优化 => 单个进程用量厘清 |
7 | Lost RAM & CMA 用量优化 | Lost RAM CMA |
Low Memory优化分析流程图
系列文章转如下链接:
Android Display Graphics系列文章-汇总
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NDk3NzYxNw==&action=getalbum&album_id=3570612385595473922#wechat_redirect
Android实战经验篇-系列文章汇总
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzI5NDk3NzYxNw==&action=getalbum&album_id=3772136109094944770#wechat_redirect
Android实战经验篇-玩转Selinux(详解版)
https://mp.weixin.qq.com/s/Diqiq6SLUZLS5QZAamcj2A?token=1849347256&lang=zh_CN
系列文章关注公众号,持续更新中......