我已经设置了两个客户操作系统,一个专门用作虚拟机主机的 ubuntu 盒子。它有两个物理 CPU(每个有 6 个核心)、16 GB RAM 和 3 个硬盘。主机操作系统位于 60GB SSD 上,而客户操作系统位于其单独的 HDD 上,分为两个分区。第一个分区保存客户操作系统的原始 qcow 映像文件,第二个分区作为块设备分配给客户机。(用于“程序”和“数据”)我在 Linux 客户机上启用了内存膨胀,但在 Windows 上没有。
就在昨天,我第一次遇到了内存不足的情况,所以我决定在自己的电脑上实时观察客户机的内存使用情况。所以我在两个 putty 窗口中运行了两个 htop,如附图所示。图片顶部是主机,底部是其中一个客户机(linux)。有几件事我不明白:
- 在主机上,RES 列显示第一个客户机为 5778M,另一个客户机为 4274M,对我来说这相当于 ~10G,但图片顶部的 Mem 行显示 6.9G,这很奇怪,此外底部的客户端 htop 显示正在使用 560M 内存。(560M != 5778M)
我已经阅读了有关虚拟化的 redhat 文档,其中说我应该通过将分配给客户机的内存 + 视频 RAM + “一些”开销(无法准确确定)相加来计算客户机所需的 RAM 量,因此使用上述数字:客户机正在使用 560M + 16M 视频内存是 ~580M,所以在我的情况下“一些”开销是 5.2G?
5778M 并不是 Linux 客户机可以使用的总内存,8G 是在域 xml 文件中设置的,所以我并不感到沮丧。至少目前如此。
今天早上我重启 Linux 客户机时,主机上的 RAM 使用量一开始约为 2G,之后一直在增加。客户机操作系统一开始约为 450M,后来增加到 560M。
我甚至读到,将交换文件分配给主机可以帮助解决内存不足问题,因此我创建了一个 32G 交换文件,并在主机上的 sysctl 中将 swapiness 设置为 20。
但是我仍然不明白客户机和主机之间的内存使用/分配/等等。
有此领域更多经验的人能否为我指明正确的方向/教程/维基百科/无论什么? qemu 主机 来宾 htops