如何从/ proc / meminfo计算系统内存使用量(如htop)

时间:2016-12-19 14:27:01

标签: linux memory htop

运行htop命令会以这样的格式为您提供内存使用情况的图片:1.92G/5.83G

问题是如何解释从/proc/meminfo获取的值,以便以编程方式计算所使用的内存?

我正在寻找类似的东西:Accurate calculation of CPU usage given in percentage in Linux?意味着伪代码是好的,我不需要可以编译的东西,只需要逻辑。 htop的源代码是一个值得寻找的地方,但我没有找到为此编写的代码行...

$ cat /proc/meminfo 
MemTotal:        6110716 kB
MemFree:         2076448 kB
MemAvailable:    3800944 kB
Buffers:          382240 kB
Cached:          1496216 kB
SwapCached:            0 kB
Active:          2830192 kB
Inactive:         796648 kB
Active(anon):    1749940 kB
Inactive(anon):   109808 kB
Active(file):    1080252 kB
Inactive(file):   686840 kB
Unevictable:          48 kB
.
.
.
...

1 个答案:

答案 0 :(得分:29)

htop作者在这里。这些是我为获取内存表中绿色,蓝色和黄色条的数字而进行的计算:

  • 总已用内存= MemTotal - MemFree
  • 非缓存/缓冲区内存(绿色)=已用内存总量 - (缓冲区+缓存内存)
  • 缓冲区(蓝色)= Buffers
  • 缓存(黄色)= Cached + SReclaimable - Shmem
  • 交换= SwapTotal - SwapFree

在htop源代码中:linux/LinuxProcessList.clinux/Platform.c

htop screenshot