很久以前,我在自己的生产服务器上创建了一些虚拟机。在 Ubuntu 上使用 virt-manager 时,我忘记了它们的配置,即我为这些虚拟机分配了多少 RAM,有人能帮我弄清楚吗?我不知道如何检测那部分。
在一些回复后编辑我使用的是 KVM 而不是 Xen
free -m 有以下输出
total used free shared buffers cached
Mem: 1002 956 45 0 30 151
-/+ buffers/cache: 774 228
Swap: 2015 0 2015
配置文件 virtual_machine.xml 有以下条目,我认为这是 RAM 规格的正确行
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
但我无法理解 GB 中的 no 等于什么。这是虚拟机上的 top 命令的输出
Mem: 1026868k total, 980080k used, 46788k free, 31508k buffers
Swap: 2064376k total, 104k used, 2064272k free, 155040k cached
对于另一个虚拟机 free -m 具有以下内容
total used free shared buffers cached
Mem: 2009 1848 161 0 235 792
-/+ buffers/cache: 820 1189
Swap: 5847 1 5846
它的配置文件有
<memory>2097152</memory>
<currentMemory>2097152</currentMemory>
top -b -d 1 > top.txt
现在,所有这些客户机正在运行的主机上的命令输出是
top - 14:40:43 up 8 days, 4:01, 1 user, load average: 0.68, 0.58, 0.55
Tasks: 259 total, 2 running, 256 sleeping, 0 stopped, 1 zombie
Cpu(s): 1.3%us, 4.2%sy, 0.0%ni, 94.4%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8181868k total, 8059876k used, 121992k free, 388564k buffers
Swap: 15624184k total, 63012k used, 15561172k free, 1596052k cached
我想知道的是 Host 拥有多少内存以及分配给 guest 的内存有多少。
答案1
您的主机有 8GB 的 RAM:
Mem: 8181868k total
您的第一台虚拟机分配了 1GB 的内存。您的虚拟机配置文件指定 1048576,单位为 kB(我假设如此,但其他单位都没有意义)。top 的输出显示 1026868k,这也证实了这一点,它也足够接近 1GB 来支持这一点。
由于这些数字不匹配,因此会造成混淆。这可能是因为 RAM 被保留用于 PCI 和 BIOS 地址空间映射 - 这种情况甚至发生在 KVM 内部,因为 KVM 提供了一个伪 BIOS,它需要为 BIOS 和伪 PCI 空间保留一些内存。
第二台虚拟机同样分配了 2GB 的 RAM。
有一个很好的答案这里关于如何正确解释“free”的输出,值得一读。我不会在这里重复
答案2
假设您使用 xen,请尝试“grep mem [xen config files]”,我的配置文件位于 /etc/xen/configs/,因此它是“grep mem /etc/xen/configs/*”
要查找系统(主机)上的内存,请尝试“free -m”
答案3
正如 Sirex 所写,如果您正在使用 Xen,请尝试使用命令
xm list
它将显示您分配的虚拟机及其内存。
编辑:我注意到您正在使用 KVM。尝试使用以下命令 virsh:
virsh dommemstat DOMAIN_ID
要找出您的域名的 ID,请使用:
virsh list
我希望它有帮助。