几年来,内核和用户空间工具可以显示可用内存,这应该是实际可用可用内存的更好代理,但是,以下内容对我来说没有意义:
top - 23:47:56 up 13 days, 7:48, 1 user, load average: 0.06, 0.64, 0.62
Tasks: 450 total, 1 running, 245 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65804776 total, 40605824 free, 17817976 used, 7380976 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 60642008 avail Mem
总共 64GiB,减去实际使用的内存 > 16GiB,永远不会得到 60GB 的可用内存,不是吗?
/更新
cat /proc/meminfo
MemTotal: 65804776 kB
MemFree: 40606636 kB
MemAvailable: 60643028 kB
Buffers: 5519324 kB
Cached: 1411404 kB
SwapCached: 0 kB
Active: 7135492 kB
Inactive: 16794208 kB
Active(anon): 3674000 kB
Inactive(anon): 1176 kB
Active(file): 3461492 kB
Inactive(file): 16793032 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 288 kB
Writeback: 0 kB
AnonPages: 16999208 kB
Mapped: 316332 kB
Shmem: 1872 kB
Slab: 722784 kB
SReclaimable: 450364 kB
SUnreclaim: 272420 kB
KernelStack: 17616 kB
PageTables: 44752 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 34999536 kB
Committed_AS: 23735028 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 600688 kB
DirectMap2M: 17063936 kB
DirectMap1G: 51380224 kB
答案1
为了的文档/proc
:
MemAvailable:估计有多少内存可用于启动新应用程序(无需交换)。根据 MemFree、SReclaimable、文件 LRU 列表的大小以及每个区域中的低水位线计算得出。该估计考虑到系统需要一些页面缓存才能正常运行,并且由于项目正在使用,并非所有可回收的slab都是可回收的。这些因素的影响因系统而异。
请注意,它是一个估计。
在问题中给出的特定示例中,观察该Inactive(file)
字段的巨大值,16,793,032 KiB;这是最近没有使用过的页面缓存内存被认为是可立即回收的不会对性能产生大的影响。加上 40,606,636 KiB 未使用内存,这已经提供了 57,399,668 KiB 内存,可以立即分配以满足新请求。系统认为它还可以丢弃一些其他的碎片(主要是Active(file)
由磁盘上的文件支持的页面缓存内存,以便在需要时可以重新读取),因此总体而言估计即可以满足 60,643,028 KiB 内存的请求。