linux 記憶體問題分析
阿新 • • 發佈:2022-03-20
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來估計