据我了解这一改变在 Linux 中报告内存使用情况,/proc/meminfo
报告MemFree
为当前未使用的 RAM,以及报告MemAvailable
为当前可供新进程使用的 RAM(无需交换)。
从这一点来看,不应该MemFree
包含在内MemAvailable
,因此总是小于或等于它?我猜未使用的 RAM 也可以供新进程使用而无需交换。还是我误解了“可用内存不能低于低水位”(补丁中的第 4 个块)部分?
这些值与预期匹配,free
并top
输出。
我在具有以下规格的 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
。