了解/proc/meminfo
MemTotal: 16002428 kB # 内核和系统可以使用的内存大小
MemFree: 12692524 kB # 系统尚未使用的内存
MemAvailable: 14358188 kB # free+可以被回收的内存大小
Buffers: 64908 kB # 块设备的缓存页
Cached: 1990844 kB # 磁盘或文件系统的内存缓存
SwapCached: 0 kB # 交换分区的内存缓存
Active: 955104 kB # 最近比较活跃的内存,可回收的
Inactive: 1851012 kB # 不活跃的内存
Active(anon): 2160 kB # cache里面的匿名的活跃内存
Inactive(anon): 928056 kB # cache里面的匿名的不活跃内存
Active(file): 952944 kB # cache里面的活跃内存
Inactive(file): 922956 kB # cache里面的不活跃内存
Unevictable: 188200 kB # 被内核认为无法回收的内存
Mlocked: 0 kB # mlock锁住的内存
SwapTotal: 902700 kB # swap的内存
SwapFree: 902700 kB # swap的可用内存
Dirty: 0 kB # 等待回写的脏页 Dirty+NFS_Unstable+Writeback=脏页
Writeback: 0 kB # 正在回写的脏页
AnonPages: 938576 kB # 匿名页
Mapped: 434276 kB # 被映射的页,例如库,二进制,mmap过的
Shmem: 191716 kB # 共享内存或tmpfs或devtmpfs
KReclaimable: 100012 kB # 内核可被回收的内存
Slab: 202148 kB # SReclaimable+SUnreclaim
SReclaimable: 100012 kB # slab中可以被回收的内存
SUnreclaim: 102136 kB # slab中不可以被回收的内存
KernelStack: 9904 kB # 给用户线程分配的内核栈消耗的页
PageTables: 16356 kB # 页表占用内存,内存占用越多使用的页表就越多
NFS_Unstable: 0 kB # 给nfs 服务的缓存
Bounce: 0 kB # 给块设备的bounce buffers
WritebackTmp: 0 kB # 给用户文件系统FUSE的临时回写内存
CommitLimit: 8903912 kB # 提交虚拟内存的最大大小,也就是虚拟内存的最大申请内存值
Committed_AS: 4856984 kB # 当前系统的虚拟内存分配量
VmallocTotal: 34359738367 kB # 可用于vmalloc申请的内存大小
VmallocUsed: 33552 kB # 已用的虚拟内存大小
VmallocChunk: 0 kB # 虚拟内存最大的连续块
Percpu: 8896 kB # 给percpu机制申请器使用的内存
HardwareCorrupted: 0 kB # 内核察觉出内存出错的大小计数
AnonHugePages: 2048 kB # 给用户空间的匿名大页
ShmemHugePages: 0 kB # 给shmem和tmpfs的大页
ShmemPmdMapped: 0 kB # 已映射过的shmem大页
FileHugePages: 0 kB # 映射文件的大页
FilePmdMapped: 0 kB # 已映射过的文件的大页
HugePages_Total: 0 # 总共大页内存大小
HugePages_Free: 0 # 剩余的大页大小
HugePages_Rsvd: 0 # 预申请的大页,也就是申请了没有的
HugePages_Surp: 0 # 大页池的剩余
Hugepagesize: 2048 kB # 大页大小
Hugetlb: 0 kB # Hugetlbfs 的大页使用清除
DirectMap4k: 235016 kB # 可以映射4k页面的数量
DirectMap2M: 4624384 kB # 可以映射2M页面的数量
DirectMap1G: 11534336 kB # 可以映射1G页面的数量
参考链接
https://www.kernel.org/doc/Documentation/filesystems/proc.rst
http://linuxperf.com/?p=142
http://www.javashuo.com/article/p-dgjqhxgd-nc.html