0. 前言
ramdump是指某个时刻系统或者子系统发生crash等异常,系统将内存中的数据通过一定的方式保存下来,相当于一个系统内存快照,用以开发者离线分析系统异常问题。
ramdump 工具中有很多内存统计的脚本,本文逐一剖析内存相关的脚本,涉及脚本如下:
脚本名称 | dump文件名称 | 说明 |
---|---|---|
memusage.py | memory.txt | |
1. memusage.py
该脚本统计的信息会写到 memory.txt 文件中。
来看下统计了哪些信息:
Total RAM: 2,716,180kB
Total free memory: 54,324kB(2.0%)
Slab reclaimable: 69,868kB(2.6%)
Slab unreclaimable: 195,680kB(7.2%)
Total Slab memory: 265,548kB(9.8%)
Total SHMEM (PAGECACHE): 90,300kB(3.3%)
Total SHMEM (SWAP): 212kB(0.0%)TOP 3 swapped SHMEM files are:
Address_space 0xffffff803ec32d30 Allocated 13 pages
file name: /dev/ashmem/Trans ImageData
Address_space 0xffffff800b2ac460 Allocated 6 pages
file name: /dev/ashmem/Trans ImageData
Address_space 0xffffff803ec37960 Allocated 6 pages
file name: /dev/ashmem/Trans ImageDataTask name PID RSS in kB SWAP in kB ADJ
m.ohos.launcher 1433 283,520(10.4%) 12,676(0.5%) 400
m.ohos.systemui 1406 165,088(6.1%) 25,992(1.0%) -800
com.ohos.callui 10310 176,892(6.5%) 0(0.0%) 1
m.ohos.contacts 7746 139,204(5.1%) 12(0.0%) 400
com.ohos.camera 17189 124,844(4.6%) 0(0.0%) 0
com.ohos.mms 13071 115,536(4.3%) 12(0.0%) 400
foundation 1027 110,608(4.1%) 3,224(0.1%) -1000
ard:inputMethod 1465 106,788(3.9%) 6,464(0.2%) 400
appspawn 277 110,432(4.1%) 0(0.0%) -1000
数据名称 | 说明 |
---|---|
Total RAM | 统计全局变量 _totalram_pages |
Total free memory | 统计NR_FREE_PAGES,以及占total 的百分比 |
Slab reclaimable | 统计NR_SLAB_RECLAIMABLE,以及占 total 的百分比,Kernel5.10 以上的版本字段名称有所变化 |
Slab unreclaimable | 统计 NR_SLAB_RECLAIMABLE,以及占 total 的百分比,Kernel5.10 以上的版本字段名称有所变化 |
Total Slab memory | 统计总的 slab 内存,上面两者之和 |
Total SHMEM (PAGECACHE) | 统计NR_SHMEM,以及占 total 的百分比 |
Total SHMEM (SWAP) | 统计 shmem 进入 swap 的内存,这些信息都保存在 shmem_swaplist 中 |
TOP 3 swapped SHMEM files | 上面统计信息之后,会将 TOP 3 swapped SHMEM files 列举出来 |
所有进程信息 | 统计进程的name、PID、rss、swap 和 adj |