You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何top命令内存输出与/proc/meminfo信息不一致?是否应使用该文件?

关于用/proc/meminfo实现top内存信息的问题

完全可以用/proc/meminfo,top的内存数据本质就是从这里提取的,你看到的差异只是top对原始数据做了二次计算,而非meminfo本身不适用。

差异的核心原因

top显示的内存指标不是直接取用meminfo的原始字段,而是根据自身的统计逻辑组合计算:

  • 比如top中Mem:行的「已用内存」,不是简单的MemTotal - MemFree,还要减去Buffers、Cached、SReclaimable(可回收slab内存)等字段
  • 不同版本的top(比如procps-ng系列)计算逻辑可能有细微调整,但数据源都是meminfo

复刻top内存显示的计算逻辑

如果要让你的实现和top第4、5行(通常是Mem和Swap行)完全对齐,可以参考以下计算方式:

Mem行对应计算

  • 总内存:直接取meminfo中的MemTotal
  • 已用内存:MemTotal - MemFree - Buffers - Cached - SReclaimable
  • 空闲内存:MemFree + Buffers + Cached + SReclaimable
  • 缓存/缓冲:Buffers + Cached + SReclaimable

Swap行对应计算

  • 总交换:直接取SwapTotal
  • 已用交换:SwapTotal - SwapFree
  • 空闲交换:直接取SwapFree

验证方式

你可以通过以下方式确认计算逻辑:

  1. 运行top -b -n 1获取静态的top输出
  2. 同时读取/proc/meminfo的原始数据
  3. 用上述公式计算,对比top显示的数值是否匹配

内容的提问来源于stack exchange,提问作者Tempest_Sword

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:00:55