当前位置: 首页 > news >正文

开机RAM分析调试SOP

  • 思维导图
  • 数据来源
  • 内存分解对比项
    • 一、硬件保留内存
    • 二、MemFree剩余物理内存
    • 三、MemAvailable剩余可用内存
      • Kernel占用内存
      • 用户空间占用内存

 

思维导图

image

 

数据来源

  • /proc/meminfo          内存状态信息
  • dumpsys meminfo    内存分解

内存分解对比项

一、硬件保留内存

保留内存 = 实际物理内存大小 - MemTotal

这块内存大小和驱动功能有关,需要BSP去排查每项功能内存分配,是否有裁剪的空间

MTK平台的保留内存拆机方法:reserved memory

二、MemFree剩余物理内存

影响因素:

  1. 进程的数量:对比当前进程数量是否相差较多,是否有不需要存在的进程
  2. kswapd内存回收水位:内存回收的激进程度是否一致,是否因水位过高,从而导致回收了更多的内存。通过/proc/zoninfo中每个内存扇区的min/low/high来确认
  3. dalvik的heap配置不一样,导致每个进程的内存存在差异,需要确认此配置的影响

三、MemAvailable剩余可用内存

可用内存大小和kernel内存占用,用户空间内存占用这两块有关,同时为了准确排查,需要去除zram的影响,最好能在关闭zram的情况下进行对比。

Kernel占用内存

kernel占用内存情况通过/proc/meminfo信息来获取,

kernel占用内存 = Shmem + SUnreclaim + KernelStack + PageTables + VmallocUsed

 

Shmem包括:

  • shared memory
  • SysV shared memory [shmget etc.]
  • POSIX shared memory [shm_open etc.]
  • shared anonymous mmap [ mmap(…MAP_ANONYMOUS|MAP_SHARED…)]
  • tmpfs和devtmpfs

Sunreclaim:

查看/proc/slabinfo信息,查看分配内存较大的模块,差异较大的由对应模块分析。

KernelStack:

内核线程栈占用的空间。

每一个用户线程都会分配一个kernel stack(内核栈),内核栈虽然属于线程,但用户态的代码不能访问,只有通过系统调用(syscall)、自陷(trap)或异常(exception)进入内核态的时候才会用到,也就是说内核栈是给kernel code使用的。

Kernel stack(内核栈)是常驻内存的,既不包括在LRU lists里,也不包括在进程的RSS/PSS内存里。所以属于kernel消耗的内存。

PageTables:

进程页表所占用的内存。

用于将内存的虚拟地址翻译成物理地址。随着内存地址分配的越来越多,page table 会增大。和进程数量有关。

VmallocUsed:

查看/proc/vmallocinfo信息,查看每个功能模块使用的大小,差异较大的由对应模块分析。

用户空间占用内存

通过dumpsys meminfo获取"Total PSS by OOM adjustment"下每个进程占用的内存大小,对比内存大小超过5M的每个进程。

同时参照《内存参数建议标准》,

  • 如果进程数量差异较大,确认lmkd的查杀程度,以及AMS的CUR_MAX_CACHED_PROCESSES配置是否一致
  • 如果相同进程的内存差异较大,确认dalvik的heap参数是否一致
http://www.gsyq.cn/news/9917.html

相关文章:

  • 2025.9.21 测试 (a1a2a3a4a5)
  • 基于Hex Editor Neo的二进制文件模板
  • 【F#学习】字符
  • kubebuilder创建Operator示例
  • 集训总结(八)
  • x6831卡顿分析
  • 实测对比:权威榜单之微信排版软件Top5(含详细测评)
  • C++中std::map容器中元素删除方法汇总 - 详解
  • 9.22 科研小结:不要总是预设成功,失败才是常态
  • 多模态算法QwenVL、KimiVL等算法原理 - Big-Yellow
  • 从用户态到内核态:Windows CC 技术深度解析(第一篇:DNS隧道)
  • github操作备忘录
  • 算法人生
  • 动态规划专题
  • 每日反思(2025.9.22)
  • 洛谷题单指南-进阶数论-P4942 小凯的数字
  • 三门问题的多种解法,总有一个你看得懂
  • 详细介绍:无公网 IP 访问群晖 NAS:神卓 N600 的安全解决方案(附其他方法风险对比)
  • 2025.9.18 总结
  • 9.16 总结
  • Halcon抛出异常日志
  • ZYNQ PS 端 UART 接收数据素材帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
  • Photoshop 2025 v26.0(PS2025)下载安装教程(含一键安装包下载)
  • 网络加速原理
  • 数据结构思维题选做(长期更新)
  • 政治笔记/错题
  • 【mysql】mysql客户端中文显示乱码
  • k8s系列--资源清单yml文件
  • k8s系列(14)--探针检测
  • k8s系列--控制器yml(15)