![了解 htop 中系统和进程内存之间的区别](https://linux22.com/image/628434/%E4%BA%86%E8%A7%A3%20htop%20%E4%B8%AD%E7%B3%BB%E7%BB%9F%E5%92%8C%E8%BF%9B%E7%A8%8B%E5%86%85%E5%AD%98%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
我对 htop 报告的其中一台服务器上的内存统计信息感到有些困惑。在顶部栏中,它显示系统内存如下:
Mem: 456 / 7950MB
因此,看起来使用率很低。
但是,我的主要进程显示它的内存使用情况如下:
VIRT RES SHR MEM%
13.3G 2388M 2239M 30%
嗯,高很多。
为什么系统统计信息只显示使用了 456MB,而进程却报告它使用了 2388MB?
更新以下是 的输出free
:
total used free shared buffers cached
Mem: 8141292 5425364 2715928 0 103560 4839368
-/+ buffers/cache: 482436 7658856
Swap: 2097148 0 2097148
答案1
Htop 显示内存:总计、已用、缓冲区和缓存。如果将已用、缓冲区和缓存相加,结果将等于命令 free 的结果。Htop 需要考虑所有结果,因为进程可以使用任何内存。Man htop 描述内存的方式如下:
M_SIZE (VIRT)
Size in memory of the total program size.
M_SHARE (SHR)
The size of the process’s shared pages
PERCENT_MEM(MEN%)
The percentage of memory the process is currently using (based on the process’s resident memory size, see M_RESIDENT below).
M_RESIDENT (RES)
The resident set size, i.e the size of the text and data sections, plus stack usage.
我希望我能帮到你。
答案2
为什么系统统计信息只显示使用了 456MB,而进程却报告它使用了 2388MB?
您误解了htop
输出。
它报告 456 MB自由的总 RAM 为 7950MB。