通过cat /proc/meminfo可以看到内存的使用情况
重点域解析
MemTotal:伙伴系统总内存大小(totalram_pages),这里总内存不包含预留内存(memblock_reserve),以及在调用free_all_bootmem释放内存到伙伴系统之前,通过memblock_alloc分配的内存,如果想回到伙伴系统,需要调用memblock_free_late
MemFree:伙伴系统中剩余内存大小,通过NR_FREE_PAGES获取
MemAvailable:系统可以用内存大小
MemAvailable = memfree + pagecache/2 + SLAB_RECLAIMABLE/2 - wmark_low 也就是算上了page cache和slab 可回收部分,然后减去最低水位值,MemAvailable 是保证userspace thread不会发送内存回收的最高可用内存
Buffers:块设备驱动用于写缓存(buffer)的内存大小
Cached: page cache + shmem cache + swap cache - free mem
SwapCached:匿名内存swapcache大小
Active : active file + active anon mem
inactive :inactive file + inactive anon mem
Unevictable :不可以收回内存大小,一般userspace调用mlock以后,内存不可以回收
Mlocked:处于锁定状态内存.
Dirty :脏页状态
AnonPages:匿名页面总大小
Mapped:处于映射状态文件页面大小
Shmem:shmem使用内存大小
Slab:slab使用内存 = SReclaimable + SUnreclaim
SReclaimable: slab可回收内存大小
SUnreclaim:不可回收大小,如果这个值很大,则可认为有内存泄露
KernelStack:系统所有进程的内核堆栈大小
PageTables:系统所有进程页表大小
VmallocTotal: vmalloc虚拟地址空间大小
CmaTotal:cma内存总大小
CmaFree:剩余CMA内存大小