/proc/meminfo 显示 MemFree 大于 MemAvailable - 这有意义吗?

/proc/meminfo 显示 MemFree 大于 MemAvailable - 这有意义吗?

据我了解这一改变在 Linux 中报告内存使用情况,/proc/meminfo报告MemFree为当前未使用的 RAM,以及报告MemAvailable为当前可供新进程使用的 RAM(无需交换)。

从这一点来看,不应该MemFree包含在内MemAvailable,因此总是小于或等于它?我猜未使用的 RAM 也可以供新进程使用而无需交换。还是我误解了“可用内存不能低于低水位”(补丁中的第 4 个块)部分?

这些值与预期匹配,freetop输出。

我在具有以下规格的 Exadata 虚拟机中看到了这一点:

cat /etc/oracle-release 
Oracle Linux Server release 7.8

uname -r
4.14.35-1902.306.2.1.el7uek.x86_64

rpm -q sysstat
sysstat-10.1.5-19.el7.x86_64

/proc/meminfo在任意时刻充满,如果有帮助的话:

MemTotal:       19995464 kB
MemFree:         2963684 kB
MemAvailable:    1063344 kB
Buffers:          406124 kB
Cached:          2609256 kB
SwapCached:         9648 kB
Active:          4632640 kB
Inactive:        2348256 kB
Active(anon):    3882372 kB
Inactive(anon):   700524 kB
Active(file):     750268 kB
Inactive(file):  1647732 kB
Unevictable:      634040 kB
Mlocked:          634044 kB
SwapTotal:      16777212 kB
SwapFree:       16579068 kB
Dirty:              1684 kB
Writeback:             0 kB
AnonPages:       4592704 kB
Mapped:           384108 kB
Shmem:            484212 kB
Slab:             511064 kB
SReclaimable:     249660 kB
SUnreclaim:       261404 kB
KernelStack:       23184 kB
PageTables:        96648 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    24602016 kB
Committed_AS:    5737344 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:    2122
HugePages_Free:      590
HugePages_Rsvd:        1
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      833536 kB
DirectMap2M:    15943680 kB
DirectMap1G:     5242880 kB

谢谢,
艾默生

答案1

代码以 开头available = i.freeram - wmark_low

这意味着最初分配给的值MemAvailable(MemFree - low watermark),其小于MemFree

相关内容