首页/系统/Linux 内核与性能调优速查//proc/meminfo 关键字段解读
内存与 OOM58 条

/proc/meminfo 关键字段解读

关注 MemTotal/MemFree/MemAvailable/Buffers/Cached/Slab(SReclaimable/SUnreclaim)/Committed_AS/CommitLimit 的组合,而不是单看 MemFree。

文件是什么

/proc/meminfo 是内存的全局汇总视图:MemTotal/MemFree/MemAvailable 描述总量与可用量,Buffers 与 Cached 描述缓存,Slab(含 SReclaimable/SUnreclaimable)描述内核对象,Committed_AS 与 CommitLimit 描述内存承诺额度,另有 Swap 与 Shmem 等字段。读它的关键是看字段组合——Linux 会用空闲内存做缓存,MemFree 偏低属正常,判断余量应看 MemAvailable。

基本信息

文件路径/proc/meminfo(全局视图,无 cgroup 细分)
总量与余量MemTotal、MemFree、MemAvailable
缓存类Buffers、Cached(Cached 含 tmpfs 的 Shmem)
内核对象Slab、SReclaimable、SUnreclaim
承诺额度Committed_AS、CommitLimit
交换与共享SwapTotal、SwapFree、Shmem

典型使用场景

  • 判断内存是否真的紧张:MemAvailable 与 SwapFree 一起看,而不是看 MemFree
  • 识别内核对象泄漏:SUnreclaim 持续单调增长是重要信号
  • 解释「free 显示内存快满了」:缓存计入导致的常见误解
  • 评估内存承诺水位:Committed_AS 逼近 CommitLimit 说明超额分配空间不足
  • 与 cgroup 指标对照,区分宿主整体压力与单个服务的用量

提取关键行

提取关键行
grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached)' /proc/meminfo  # 总量与缓存
awk '/^(Slab|SReclaimable|SUnreclaim|Shmem)/{print}' /proc/meminfo  # 内核对象与共享内存
awk '/^(Committed_AS|CommitLimit)/{print}' /proc/meminfo  # 内存承诺与上限
awk '/^(SwapTotal|SwapFree)/{print}' /proc/meminfo  # swap 水位
free -h  # 更直观的等价视图,含 available 列
sleep 60  # 隔时间再采一次,重点比较 SUnreclaim 等字段的增量

字段读法

字段含义判读要点
MemTotal物理内存总量作为分母理解其余字段
MemFree完全空闲的内存偏低属正常,不能据此判断不足
MemAvailable内核估算的可用内存判断余量的主要依据
Buffers块设备元数据缓存与文件系统负载相关
Cached页缓存(含 Shmem)可回收,但 tmpfs 部分不能随意回收
SUnreclaim不可回收的内核 slab持续增长需怀疑内核对象泄漏
CommitLimit可承诺的内存上限与 Committed_AS 对比看超额分配余量
MemFree 低不等于内存不足:页缓存属于「用得上就留着、紧张就回收」的内存,因此常被计入已用。判断是否需要干预,应看 MemAvailable 以及是否出现回收与换页压力。
容器里读 /proc/meminfo 得到的是宿主数据,不能代表容器用量;容器应看 /sys/fs/cgroup/<组>/memory.current 与 memory.stat,两者视角不同,混用会导致容量判断失真。

易错点

  • 用 MemFree 判定内存不足:会把可回收缓存当成占用,进而执行无谓的缓存清理操作
  • 把 Cached 全部视为可回收:其中 tmpfs 的 Shmem 部分不能随意回收,误判会导致限额设置过紧
  • 忽略 SUnreclaim 的持续增长:这是内核对象泄漏的典型征兆,只看总用量会漏掉
  • 只看 meminfo 不看 zoneinfo:多 NUMA 机器上单个节点紧张可能在全局汇总里被平均掉
  • 在容器里用 meminfo 判断自身内存:那是宿主视图,容易把邻居的用量算到自己头上

数据来源与参考

  • Linux 内核 Documentation/filesystems/proc.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌