我在具有 8 GB RAM 的 Red Hat Enterprise Linux 上运行三个虚拟机,每个虚拟机分配了 3 GB 内存,并且我还运行一个 512 MB 的虚拟机。如果我们还考虑来宾操作系统的内存使用情况(由于公司强制发布的防病毒软件,通常为 1.5 GB),则 RAM 总计为 11 GB。为了能够运行所有这些东西而不会让我的计算机停止运行,我使用最大内存使用量为 7 GB 的 ZRAM。大多数时候,这样我几乎不会遇到任何麻烦,但作为回报,我的内存通常非常满,有大约 700 MB 的可用物理 RAM 和大致相同数量的可用 ZRAM。
我从这个设置中发现,为了使用 的virt-manager
Save 命令(翻译为virsh
s managedsave
)成功保存虚拟机的状态,我必须添加一些额外的交换空间,当发生这种情况时,我的虚拟机将保存在大约读取交换空间的速率,因为虚拟机状态保存算法似乎是将来宾内存块复制到主机内存,然后将这些块保存到硬盘,这意味着保存虚拟机状态需要一定量的额外的内存。通过反复试验,我发现将 3 GB 虚拟机保存为 1 GB 所需的最小额外虚拟内存,即我必须swapon <pagefile>
在格式化为交换空间的 1 GB 文件上发布,这使我相信您至少需要 30%您的虚拟机分配的内存可用于保存其状态。另外,当我有足够的 ZRAM 可用但我的主内存几乎已满时,我可以在 GKrellm 上看到我的系统如何在内存交换空间上全速翻查页面。
那么,有人知道为什么 KVM-QEMU 需要额外的内存来保存虚拟机的状态吗?