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

tgo*_*gos 10 linux memory htop

运行该htop命令会以如下格式为您提供内存使用情况的图片:/proc/meminfo.

问题是我应该如何解释从中获取的值htop,以便以编程方式计算所使用的内存?

我正在寻找类似的东西:在Linux中以百分比给出的CPU使用率的精确计算?意思是伪代码是好的,我不需要可以编译的东西,只需要逻辑.htop的源代码是一个值得寻找的地方,但我没有发现为此编写的代码行...

1.92G/5.83G
Run Code Online (Sandbox Code Playgroud)

His*_*H M 37

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

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

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

htop截图

  • 为什么要从缓存内存中减去共享内存(`Cached` + `SReclaimable` **- `Shmem`**)?“top”命令似乎没有对其“buff/cache”计算执行此操作。 (2认同)