介绍
关于物理内存的统计信息,可以通过/proc/phymem目录下的文件查看:
说明
/proc/phymem
dist
显示物理内存使用分布信息
mem: 262144 kB |--mem_other: 15996 kB |--mem_linux: 246148 kB |--mem_reserved: 31268 kB |--mem_total: 214880 kB |--mem_free: 4608 kB |--mem_buffer: 0 kB |--mem_cache: 82340 kB |--mem_user: 90568 kB | |--active(anon): 44140 kB | |--inactive(anon): 46428 kB |--mem_kernel: 37364 kB |--kernelStack: 3432 kB |--pageTables: 9224 kB |--slab: 6680 kB |--vmalloc: 28268 kB
说明:
- mem_other: 与Linux无关的物理内存,在6820中,主要是指ThreadX,NK虚拟机,以及一部分Shared内存。
- mem_linux: Linux相关的物理内存。
- mem_reserved: Linux保留内存,包括Kernel的镜像,内存文件系统。
- mem_total: 可供分配使用的物理内存。
- mem_free: 空闲的物理内存。
- mem_buffer:块设备的写缓冲。
- mem_cache: 文件系统的读缓存。
- mem_user: 用户态进程分配的物理内存
- active(anon): active匿名页
- inactive(anon): inactive匿名页
- mem_kernel: kernel分配的物理内存
- kernelStack: kernel的stack占用内存
- pageTables: 页表消耗内存
- slab: slab消耗内存
- vmalloc: vmalloc使用内存
map
显示Os管理的物理内存地址区间
0x00203000 - 0x00340000 1268kB 0x00359000 - 0x00400000 668kB 0x00460000 - 0x00480000 128kB 0x004e0000 - 0x004ff000 124kB 0x011c2000 - 0x10000000 243960kB
pages
根据页面属性统计物理页的使用情况
pages of RAM 61537 free pages 1745 reserved pages 7943 slab pages 2001 pages shared 11642 pages swap cached 0 buddy pages 0 other pages 38206
showmem-trigger
触发show_mem函数,内容输出至kmsg
kmsg中信息显示如下:
[ 1264.184000] Mem-info: [ 1264.184000] Normal per-cpu: [ 1264.184000] CPU 0: hi: 90, btch: 15 usd: 3 [ 1264.184000] active_anon:9696 inactive_anon:11544 isolated_anon:0 [ 1264.184000] active_file:10744 inactive_file:8828 isolated_file:0 [ 1264.184000] unevictable:364 dirty:0 writeback:0 unstable:0 [ 1264.184000] free:3382 slab_reclaimable:465 slab_unreclaimable:1324 [ 1264.184000] mapped:9067 shmem:76 pagetables:2268 bounce:0 [ 1264.184000] Normal free:13528kB min:1976kB low:2468kB high:2964kB active_anon:38784kB inactive_anon:46176kB active_file:42976kB inactive_file:35312kB unevictable:1456kB isolated(anon):0kB isolated(file):0kB present:244116kB mlocked:0kB dirty:0kB writeback:0kB mapped:36268kB shmem:304kB slab_reclaimable:1860kB slab_unreclaimable:5296kB kernel_stack:3416kB pagetables:9072kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no [ 1264.185000] lowmem_reserve[]: 0 0 0 [ 1264.185000] Normal: 362*4kB 282*8kB 148*16kB 111*32kB 33*64kB 6*128kB 2*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 13528kB [ 1264.185000] 20012 total pagecache pages [ 1264.185000] 0 pages in swap cache [ 1264.185000] Swap cache stats: add 0, delete 0, find 0/0 [ 1264.185000] Free swap = 0kB [ 1264.185000] Total swap = 0kB [ 1264.188000] 61537 pages of RAM [ 1264.188000] 3986 free pages [ 1264.188000] 8082 reserved pages [ 1264.188000] 1328 slab pages [ 1264.188000] 110458 pages shared [ 1264.188000] 0 pages swap cached
应用场景
内核裁剪
当裁剪掉某些功能后,通过/proc/phymem/dist查看内存变化情况。
比如,
定义 CONFIG_KALLSYMS_ALL 未定义 CONFIG_KALLSYMS_ALL mem: 262144 kB mem: 262144 kB |--mem_other: 15996 kB |--mem_other: 15996 kB |--mem_linux: 246148 kB |--mem_linux: 246148 kB |--reserved: 31772 kB |--mem_reserved: 31268 kB --减少 |--mem_total: 214376 kB |--mem_total: 214880 kB --增加 |--mem_free: 4672 kB |--mem_free: 4608 kB |--mem_buffer: 0 kB |--mem_buffer: 0 kB |--mem_cache: 81104 kB |--mem_cache: 82340 kB |--mem_user: 87288 kB |--mem_user: 90568 kB | |--active(anon): 45848 kB | |--active(anon): 44140 kB | |--inactive(anon): 41440 kB | |--inactive(anon): 46428 kB |--mem_kernel: 41312 kB |--mem_kernel: 37364 kB |--kernelStack: 3144 kB |--kernelStack: 3432 kB |--pageTables: 8292 kB |--pageTables: 9224 kB |--slab: 9752 kB |--slab: 6680 kB |--vmalloc: 30268 kB |--vmalloc: 28268 kB