Android实战经验篇-Memory分析指南

本文主要包括部分:

一、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保活等)
Lowmemory 引起ANR/SWT

详见4.1 Low Memory问题场景及判定方法

Memory Leak

疑似内存泄漏

此部分不属于memory performance issue,详见后续文章

Memory debug command及工具速查

常用Memory debug方法及工具请参考

详见1.3 常用debug命令及工具索引

Memory Basic

Memory相关基础知识学习,主要内容如下:

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

Kernel Memory分解

  • 计算公式
    • 组成及优化方法
  • 优化方式
    • SUnreclaim
    • VmallocUsed

zram swap及swapness

  • swap 
  • zram swap
  • 动态调整zram相关参数以及常用debug方法
    • swap disk enable/disable
    • 注意事项
    • 修改zram大小
    • Check swap information 
    • swappiness
  • zram相关资料

DMABUF/EGL/ION

  • EGL用量统计
    • kernel-5.10后版本EGL采用RSS的统计方式
  • EGL用量优化方法
    • 获取DMABUF的指令
    • 推荐方法
  • 拓展阅读:ION(kernel-4.19及之前使用)
    • ION的设计目标
    • 如何查看ION使用内存
    • 关于ION buffer Memory leakage

GPU/GL track

  • 环境检查
  • 查看整机gpu memory用量

CMA

  • CMA 问题分析思路
  • 分析流程
  • CMA Linux 原生预览内存

Lost RAM

OOM

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

系列文章关注公众号,持续更新中......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值