首页/系统/Linux 运维命令速查/深入 /proc/meminfo 关键指标
性能与监控48 条

深入 /proc/meminfo 关键指标

/proc/meminfo 是内存真相源:MemAvailable、Dirty、Slab、Committed_AS 等指标能定位缓存、泄漏与超售风险。

Linux 运维命令速查系统更新于 2026-10-13

深入内存指标是什么

内存到底够不够,看空闲内存几乎没有意义:内核会把大量内存用作缓存,空闲数字小反而是正常现象。真正的判断依据在内存统计文件里:可分配内存是估算出的还能分配的量,脏页与回写字段反映尚未落盘的数据,内核对象占用与其中可回收的部分体现内核层开销,已提交内存总量则能提示超售风险。把这些指标组合起来看,才能分清「内存被缓存占用」与「确实不够用」。

基本信息

适用平台GNU/Linux(基于内核的内存统计)
数据来源/proc/meminfo
关键指标总量、空闲、可分配、缓存、脏页、回写、内核对象、已提交内存
单位多数条目以 kB 显示
辅助工具slabtop 查看内核对象占用明细
提醒单次快照分不清正常波动与内存泄漏

典型使用场景

  • 判断内存不足告警是否真实:先看可分配内存而不是空闲内存。
  • 排查写入性能差:脏页长期居高说明回写跟不上磁盘。
  • 评估内核对象占用是否异常增长,怀疑内核层泄漏。
  • 判断是否过度分配内存,评估内存溢出风险。
  • 对比重启前后、变更前后同一指标的变化趋势。

常用写法

常用写法
grep -E 'MemTotal|MemFree|MemAvailable|Cached|Dirty|Writeback|Slab|SReclaimable|Committed_AS' /proc/meminfo
awk '/Dirty/ {print $2/1024 " MB dirty"}' /proc/meminfo      # 脏页换算成 MB
awk '/MemAvailable/ {print $2/1024 " MB 可分配"}' /proc/meminfo
slabtop -o | head                                            # 内核对象占用排行
grep -E 'SwapTotal|SwapFree' /proc/meminfo                    # 交换区使用情况
watch -n 60 "grep -E 'MemAvailable|Dirty' /proc/meminfo"     # 多点采样看趋势

指标逐项读法

指标含义判断要点
物理内存总量机器总内存所有指标的基准
完全空闲内存未被使用的内存数值小通常正常,缓存会占满空闲
可分配内存估算还能分配的量判断内存是否充足的首选指标
脏页等待回写的页长期居高说明磁盘写入跟不上
内核对象占用Slab 总量与可回收部分持续增长且不可回收要警惕内核泄漏
已提交内存系统已承诺的内存远超物理内存时存在溢出风险
读单个数字没有意义:内存指标抖动很大,要在固定间隔上多点采样看趋势,才能区分正常波动与持续增长。
内核对象占用持续增长且可回收部分不跟着增长,通常指向内核层泄漏;这类问题往往需要升级内核或评估重启来缓解。
已提交内存远超物理内存意味着系统允许的分配总量已经透支,一旦多个进程同时真正使用这些内存就会触发内存溢出。

易错点

  • 用空闲内存判断内存是否充足,忽略缓存与可分配内存,得出内存严重不足的错误结论并盲目扩容。
  • 把脏页长期居高误判为内存问题,实际瓶颈在磁盘写入速度;要结合 IO 指标一起判断。
  • 只看一次采样就判断存在泄漏,忽略指标本身的波动;要在固定间隔采样对比趋势。
  • 忽略已提交内存与交换区使用,超售风险被掩盖,直到多个进程同时申请内存才暴露为内存溢出。

数据来源与参考

  • man 5 proc(meminfo 字段)
  • 内核文档 admin-guide/mm

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌