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

How to calculate system memory usage from /proc/meminfo (like 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
.
.
.
...

htop 作者在这里。这些是我为获得内存表中绿色、蓝色和黄色条的数字所做的计算:

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

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