Linux /proc/meminfo结果内容详解
cat /proc/meminfo 命令结果详细解释
MemTotal: 3881484 kB MemFree: 148408 kB MemAvailable: 117344 kB Buffers: 0 kB Cached: 112432 kB SwapCached: 25096 kB Active: 990340 kB Inactive: 473152 kB Active(anon): 940316 kB Inactive(anon): 432856 kB Active(file): 50024 kB Inactive(file): 40296 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 4063228 kB SwapFree: 2500468 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 1334436 kB Mapped: 27888 kB Shmem: 22112 kB Slab: 122196 kB SReclaimable: 88120 kB SUnreclaim: 34076 kB KernelStack: 3968 kB PageTables: 12068 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 6003968 kB Committed_AS: 3432596 kB VmallocTotal: 34359738367 kB VmallocUsed: 151372 kB VmallocChunk: 34359341052 kB HardwareCorrupted: 0 kB AnonHugePages: 1067008 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 92096 kB DirectMap2M: 4102144 kB DirectMap1G: 2097152 kB
MemTotal:所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree:表示系统尚未使用的内存。
MemAvailable:真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers:用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached:分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached:被高速缓冲存储用的交换空间(硬盘的swap)的大小
active:经常使用的高速缓冲存储器页面文件大小
Inactive:不经常使用的高速缓冲存储器文件大小
Active(anon):活跃的匿名内存
Inactive(anon):不活跃的匿名内存
Active(file):活跃的文件使用内存
Inactive(file):不活跃的文件使用内存
Unevictable:不能被释放的内存页
Mlocked:系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal:交换空间总内存
SwapFree:交换空间空闲内存
Dirty:等待被写回到磁盘的
Writeback:正在被写回的
AnonPages:未映射页的内存/映射到用户空间的非文件页表大小
Mapped:映射文件内存
Shmem:已经被分配的共享内存
Slab:内核数据结构缓存
SReclaimable:可收回slab内存
SUnreclaim:不可收回slab内存
KernelStack:内核消耗的内存
PageTables:管理内存分页的索引表的大小
NFS_Unstable:不稳定页表的大小
Bounce:在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:FUSE用于临时写回缓冲区的内存
CommitLimit:系统实际可分配内存
Committed_AS:系统当前已分配的内存
VmallocTotal:预留的虚拟内存总量
VmallocUsed:已经被使用的虚拟内存
VmallocChunk:可分配的最大的逻辑连续的虚拟内存
HardwareCorrupted:当系统检测到内存的硬件故障时删除掉的内存页的总量
AnonHugePages:匿名大页缓存
CmaTotal:连续可用内存总量
CmaFree:空闲连续可用内存
HugePages_Total:预留的大页内存总量
HugePages_Free:空闲的大页内存
HugePages_Rsvd:已经被应用程序分配但尚未使用的大页内存
HugePages_Surp:初始大页数与修改配置后大页数的差值
Hugepagesize:单个大页内存的大小
DirectMap4k:映射TLB为4kB的内存数量
DirectMap2M:映射TLB为2M的内存数量
DirectMap1G:映射TLB为1G的内存数量