如何才能让我的 vmware 客户机进程完全驻留在 Ubuntu Linux 主机的内存中?

如何才能让我的 vmware 客户机进程完全驻留在 Ubuntu Linux 主机的内存中?

我通过 VMWare Server (2.0.0) 在 Ubuntu Desktop Linux (8.04) 主机上运行单个 Windows XP 客户机实例。当我最初启动客户机时,它会为该进程分配大约 1.2GB 的常驻内存(观察顶部 vmware-vmx 的 RES 列)。虚拟机运行 15 或 20 分钟后,常驻内存会降至约 80MB,其余内存会进入交换区。作为参考,VIRT = 1746m、RES = 79m、SHR = 63m。我为 XP 客户机分配了 1GB 内存,但现在几乎所有内存都在交换区中。

正如您所预料的,此时虚拟机的性能会变得相当低迷。几乎任何操作都会导致系统抖动。要使性能恢复到可接受的水平,必须关闭虚拟机然后重新启动。定期重新启动并不是一个好主意,因为在启动过程中必须重新交换许多东西。

所以,我的问题是如何防止我的 Linux 主机将所有内存都推送到交换区?主机是一台 Dell Optiplex 755,配有 Intel Q6600 处理器和 4GB 内存。它根本没有负担,如果我能弄清楚如何操作,我可以轻松地将 2GB 内存固定到这个 XP VM 上。

我已阅读有关 swappiness 内核参数的信息,并在 /etc/sysctl.conf 中将 vm.swappiness 设置为 0(并重新启动),希望这会有所帮助,但似乎没有什么作用。我还尝试过 vm.overcommit_memory = 1,但似乎也没有多大作用。

有人有什么建议吗?

答案1

在 VMWare Server Console 中的主机设置中,有一个选项可以调整内存/交换空间的使用。选项包括“全部在 RAM 中”、“允许部分交换空间”和“允许尽可能多的交换空间”。

答案2

实际上,除了内核之外,没有其他方法可以强制进程停留在 RAM 中(vm 是进程)...

首先,你真的需要避免交换吗?性能问题、io 问题等等……如果不是,那就保持现状。

但你可以做一些调整。如果你确定有足够的内存,请将 swapiness(内核选项)设置为较低的值(即 10-15)。如果我没记错的话,默认值是 60。

看看“Linux 2.6 主机 I/O 性能”http://peterkieser.com/technical/vmware-server-issues/

这应该会有一点帮助。

但要明白,没有什么魔术可以让你实现你想要的功能。所有操作系统都应该进行交换,并且它们会尽可能地尝试这样做。

相关内容