Linux 内存:/proc/meminfo 和 free 之间的缓冲区+缓存存在差异?

Linux 内存:/proc/meminfo 和 free 之间的缓冲区+缓存存在差异?

free我有一台主机,在比较命令的输出和 .txt 文件的内容时,我不确定内存利用率/proc/meminfo。缓冲区+缓存似乎在两个源之间不匹配。

[kbrandt@ny-chsearch01]~% free -k
              total        used        free      shared  buff/cache   available
Mem:       24506972    18074768      572836         124     5859368     5996392
Swap:       4194300      130044     4064256
[kbrandt@ny-chsearch01]~% cat /proc/meminfo 
MemTotal:       24506972 kB
MemFree:          575808 kB
MemAvailable:    5996136 kB
Buffers:            3140 kB
Cached:           380032 kB
SwapCached:        61344 kB
Active:         16305144 kB
Inactive:        1860568 kB
Active(anon):   15990712 kB
Inactive(anon):  1791952 kB
Active(file):     314432 kB
Inactive(file):    68616 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4064256 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:      17721372 kB
Mapped:            91608 kB
Shmem:               124 kB
Slab:            5472968 kB
SReclaimable:    5407820 kB
SUnreclaim:        65148 kB
KernelStack:        5568 kB
PageTables:        39784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16447784 kB
Committed_AS:   18211456 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      231460 kB
VmallocChunk:   34359310332 kB
HardwareCorrupted:     0 kB
AnonHugePages:  17414144 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       91968 kB
DirectMap2M:    25073664 kB

man free说:

buff/cache 缓冲区和缓存的总和

然而,从上面的输出中可以看出: free说的buff/cache是,但是和from5859368的输出较少。BuffersCached/proc/meminfo

主机CentOS Linux release 7.4.1708 (Core)带有内核3.10.0-693.21.1.el7.x86_64。主机上内存的主要消耗者是elasticsearch(java)。

谁能解释一下这种差异吗?

答案1

仔细查看手册页后,内存是“Slab”部分man free

cache  Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)

要了解有关平板的更多信息,请参阅SlabInfo 管理页面:

概要:cat /proc/slabinfo

描述:Linux 内核中经常使用的对象(缓冲区头、索引节点、目录项等)都有自己的缓存。文件 /proc/slabinfo 提供了这些缓存的统计信息。

所以一般来说既然是缓存,Slab 被填满是可以的。值得关注的一个领域可能是数额较大且不可回收 ( SUnreclaim)。这可以在以下位置查看/proc/meminfo

[root@ny-chsearch01 ~]# grep -i S.*recl /proc/meminfo 
SReclaimable:    5320344 kB
SUnreclaim:        64756 kB

如果想要估计可用内存,则较新的 3.14 内核有一个比旧的 Total-Buffer-Cache 更准确的估计值,请MemAvailable参阅/proc/meminfo如何跨发行版获取可移植的可用内存量?更多细节。

相关内容