linux 内存问题分析
DDR内存在linux中分为三类:分别是
- 保留内存: 所有出现在dts中的reserverd-memory属性中的内存,linux不会管理该部分内存;如ion 内存,这块内存会把ion driver所管理
- 静态内存: 这部分包括内核的代码段,数据段,ramdisk, dtb, struct page等内存
- 动态内存:这部分就是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来估计