Rhel
為什麼免費命令說與真正的消耗記憶體不同
來自我們具有 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 -g
只看到1G
可用的呢?我們還可以看到:
vmware-toolbox-cmd stat balloon 81632 MB
vmware-toolbox-cmd stat balloon 81632 MB
答案是:您的系統正在使用大約 40GiB 的記憶體,而 80GiB 由 VMware 氣球機制保留,導致 122GiB “已使用”報告由
free
.氣球保留的記憶體不會被程序消耗,因此它不會出現在
ps
ortop
的輸出中。