如何了解 Linux 上的 VMware Player 虚拟机使用了多少 RAM?

如何了解 Linux 上的 VMware Player 虚拟机使用了多少 RAM?

我在 8 GB RAM 的计算机上运行 Debian Jessie 64 位。这是我htop在启动分配了 4 GB 内存的来宾 VM 之前(使用相当大的 Firefox 会话)的内存使用情况。

没有 VMware,我已使用 1297 MB

这是我根据 的内存使用情况htop,在我的来宾虚拟机启动后并在执行一些工作后。

使用 VMware,我使用了 1326 MB

Windows 会准确报告虚拟机在我的系统上消耗了多少 RAM,而 Linux 则不同,它不会报告此类信息。因此,我经常遇到这样的情况:我启动了太多虚拟机,以为我有足够的内存来容纳它们,但事实并非如此,我最终忍受了 3 分钟的时间,我的系统不得不突然推入一整 GB 的 RAM互换。

在哪里可以查看虚拟机实际使用的 RAM?

答案1

不是最具可读性的脚本;我最初是为自己写的,后来发现了这个问题(这可能对其他人有帮助):

vmfolder="$HOME/vmware"
vmwarebinary='/usr/lib/vmware/bin/vmware-vmx'

function add {
    awk '{tot += $1} END{print tot}'
}

vmusage="$(ps wauwx | grep " $vmwarebinary " | grep vmx\$ | awk '{print (int($6/1024/1024*100)/100) " GiB " $3 " avg%CPU for " $(NF)}' | sed 's@'"$vmfolder"'/\([^ ]*\)/.*@\1@')"
tot="$(echo "$vmusage" | add)"
avail="$(free -mw | grep '^Mem:' | awk '{print (int($8/1024*100)/100)}')"
realavail="$(echo "$avail-$tot" | bc)"

echo "$vmusage" | sort -nr
echo "Total                     $tot GiB"
echo "Claimed available memory: $avail GiB"
echo "Truly available memory:    $realavail GiB"

请注意vmfolder应配置为您的虚拟机所在位置的路径。

我不知道不同的free版本或克隆是否都输出相同的列或语法。这已在 Debian 11 上进行了测试,可能也适用于其他基于 Debian 的操作系统。测试使用的 VMware 是 VMware Workstation 16。

专业提示:运行 withwatch -d -n 10 thescript.bash让它为您突出显示更改。它看起来像这样:

上述 watch 命令的输出截图

在哪里:

  • 17.9GB 总计:所有虚拟机使用的总内存
  • 27.5GB 声称可用内存:您的free二进制文件所说的可用(谎言!)
  • 9.6GB 真实可用内存:一减二;即我期望有多少内存真正可用于主机系统上的新虚拟机或其他软件。

我没有故意让我的系统耗尽内存,所以我不确定这是否正确,但这至少是一个很好的迹象。希望能帮助到你!

相关内容