为什么free命令说的和实际消耗的内存不一样

为什么free命令说的和实际消耗的内存不一样

来自我们具有 126G 内存的 Linux VM rhel 7.5 服务器

我们有奇怪的内存行为,消耗所有可用内存,如下所示

free -g
              total        used        free      shared  buff/cache   available
Mem:            126         122           0           1           2       1        
Swap:           10           10           0

我们有 bash 脚本可以精确计算内存消耗,这就是结果

  5.2 MiB +   2.3 MiB =   7.6 MiB       sshd (4)
 10.2 MiB + 159.0 KiB =  10.4 MiB       polkitd
 12.6 MiB + 315.0 KiB =  12.9 MiB       gsd-color
 16.6 MiB +   5.0 KiB =  16.6 MiB       node_exporter
 11.3 MiB +  27.1 MiB =  38.4 MiB       systemd-journald
 40.4 MiB +  15.9 MiB =  56.3 MiB       rsyslogd
 73.3 MiB +   1.4 MiB =  74.7 MiB       python2.7 (3)
226.4 MiB +   2.7 MiB = 229.2 MiB       gnome-shell
  1.4 GiB +   1.1 MiB =   1.4 GiB       df.pll
 15.7 GiB +   9.2 MiB =  15.7 GiB       java (9)
 22.1 GiB +   2.0 MiB =  22.1 GiB       KLP-server

---------------------------------
                         39.6 GiB

top命令中我们可以看到内存实际上消耗了大约40G

那么我们怎么能从free -gonly 1Gavailable 中看到呢?

我们还可以看到的是:

vmware-toolbox-cmd stat balloon
81632 MB 

答案1

vmware-toolbox-cmd stat balloon
81632 MB 

答案是:您的系统正在使用大约 40GiB 内存,VMware 气球机制保留了 80GiB 内存,导致 报告“已使用”122GiB free

气球保留的内存不会被进程消耗,因此它不会出现在psortop的输出中。

相关内容