linux 内存问题分析


DDR内存在linux中分为三类:分别是

  1. 保留内存: 所有出现在dts中的reserverd-memory属性中的内存,linux不会管理该部分内存;如ion 内存,这块内存会把ion driver所管理
  2. 静态内存: 这部分包括内核的代码段,数据段,ramdisk, dtb, struct page等内存
  3. 动态内存:这部分就是cat /porc/meminfo 所看到的memtotal大小的内存(也是free -h看到的tota的大小),由内核管理

struct page的占用: 每个4KB的页都要有一个struct page与之对应,大小是64B,

因此除寄存器空间外的所有物理空间都需要对应struct page

这1GB的DDR的就要用去大约16MB的上struct page; 内核数据段,代码段的占用大致如下:

kernel code 10MB
rw data 1.35MB
ro data 4.18MB
init 0.625MB
bss 8.83MB
cma 0MB
总计 24MB+

DTB大小:可以通过dbt文件大小查看

文件系统的meta data占用:【待补充】

各用户serveice的内存占用:可以用procrank 命令中打印出来的Pss来估计