centos meminfo内存详解

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        2.1G        2.5G         45M         26G         28G
Swap:           15G         21M         15G
[root@localhost ~]# cat /proc/meminfo
MemTotal:       32780556 kB           #物理总内存
MemFree:         2609032 kB           #物理空闲内存
MemAvailable:   30199896 kB           #物理使用中内存 = 物理总内存 - 物理空闲内存
Buffers:               0 kB           #内核缓冲区用到的内存,是指buff/cache中的buff
Cached:         27823600 kB           #分配给文件缓冲区的内存,是指buff/cache中的cache = Cached + SReclaimable,buff/cache = Buffers + Cached + SReclaimable
SwapCached:          232 kB           #交换缓存的大小,被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active:          3175272 kB           #经常使用的高速缓冲存储器页面文件大小,是指Active list= Active(anon) + Active(file)
Inactive:       25653804 kB           #不经常使用的高速缓冲存储器文件大小,是指Inactive list= Inactive(anon) + Inactive(file)
Active(anon):     626336 kB           #活跃的匿名内存
Inactive(anon):   425716 kB           #不活跃的匿名内存
Active(file):    2548936 kB           #活跃的文件使用内存
Inactive(file): 25228088 kB           #不活跃的文件使用内存
Unevictable:           0 kB           #不能被释放的内存页大小(包括匿名页和文件页)
Mlocked:               0 kB           #被系统调用函数mlock()锁住的物理内存大小
SwapTotal:      16515068 kB           #交换空间总内存
SwapFree:       16493300 kB           #交换空间空闲内存
Dirty:                 0 kB           #脏数据,在磁盘缓冲区中尚未写入物理磁盘的内存大小
Writeback:             0 kB           #正在被写回磁盘的脏页占用的内存大小
AnonPages:       1005300 kB           #未映射页的内存/映射到用户空间的非文件页表大小
Mapped:            45768 kB           #映射文件内存
Shmem:             46576 kB           #已经被分配的共享内存
Slab:             264684 kB           #内核数据结构缓存,Slab=SReclaimable + SUnreclaim
SReclaimable:     216668 kB           #可回收slab内存
SUnreclaim:        48016 kB           #不可回收slab内存
KernelStack:        7920 kB           #内核消耗的内存
PageTables:        22560 kB           #管理内存分页的索引表的大小
NFS_Unstable:          0 kB           #不稳定页表的大小
Bounce:                0 kB           #在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:          0 kB           #FUSE用于临时写回缓冲区的内存
CommitLimit:    32905344 kB           #系统实际可分配内存
Committed_AS:    4247156 kB           #系统当前已分配的内存
VmallocTotal:   34359738367 kB        #预留的虚拟内存总量, VmallocTotal=VmallocUsed + VmallocChunk
VmallocUsed:      208968 kB           #已经被使用的虚拟内存
VmallocChunk:   34359341052 kB        #可分配的最大的逻辑连续的虚拟内存
Percpu:             1584 kB           #用于percpu分配的的内存大小,不包括metadata
HardwareCorrupted:     0 kB           #系统检测到内存的硬件故障时删除掉的内存页的总量
AnonHugePages:    661504 kB           #匿名大页缓存大小
CmaTotal:              0 kB           #连续可用内存总量
CmaFree:               0 kB           #空闲连续可用内存
HugePages_Total:       0              #预留的大页内存总量
HugePages_Free:        0              #空闲的大页内存
HugePages_Rsvd:        0              #已经被应用程序分配但尚未使用的大页内存
HugePages_Surp:        0              #初始大页数与修改配置后大页数的差值
Hugepagesize:       2048 kB           #单个大页内存的大小
DirectMap4k:      237440 kB           #映射TLB为4kB的内存数量
DirectMap2M:     5005312 kB           #映射TLB为2M的内存数量
DirectMap1G:    30408704 kB           #映射TLB为1G的内存数量

#关于cache说法
#磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。
#PageCache是磁盘数据在内存中的缓存,而SwapCache则是交换分区在内存中的临时缓存。
#内存释放
sync                               #同步  
echo 1 > /proc/sys/vm/drop_caches  #释放掉Cache页中的干净页
echo 2 > /proc/sys/vm/drop_caches  #释放掉Slab,包括dentry、inode等
echo 3 > /proc/sys/vm/drop_caches  #释放Cache和slab