我通过VMWare服务器(2.0.0)在Ubuntu桌面Linux(8.04)主机上运行单个Windows XP来宾实例。 当我最初启动guest虚拟机时,会为进程留出大约1.2GB的内存(观察上面的vmware-vmx的RES列)。 在虚拟机运行了15或20分钟之后,驻留内存下降到80MB,剩下的就交换了。 作为参考,VIRT = 1746m,RES = 79m,SHR = 63m。 我已经为XP客户分配了1GB的内存,但几乎所有的内存都已经交换了。
正如你所期望的那样,虚拟机的性能在这一点上变得非常缓慢。 做任何事情都会引起颠簸。 为了使性能恢复到可接受的水平,虚拟机必须closures,然后开始备份。 定期重新启动并不是一个好主意,因为在启动过程中必须重新装入许多东西。
所以,我的问题是如何让我的Linux主机推动所有这些内存交换? 主机是带有Intel Q6600处理器和4GB内存的Dell Optiplex 755。 它根本没有被征税,如果我能弄明白怎么做的话,我可以轻易地把2GB内存固定在XP虚拟机上。
我已经阅读了swappiness内核参数,并在/etc/sysctl.conf(并重新启动)中将vm.swappiness设置为0,希望这会有所帮助,但似乎没有任何区别。 我也尝试了vm.overcommit_memory = 1,这似乎也没有做太多。
任何人有任何build议?
在VMWare服务器控制台的主机设置中,有一个可以调整内存/交换使用的选项。 选项是“所有内存”,“允许一些交换”和“允许尽可能多的交换”。
实际上,除了内核之外,没有办法强制一个进程停留在ram(进程是进程)中。
首先,你是否真的需要避免交换? perf问题,io问题等…如果不是像你一样。
但是你可以做一些调整。 如果你确定有足够的内存,设置交换(内核选项)为一个较低的值(即10-15)。 如果我记得好,默认是60。
查看http://peterkieser.com/technical/vmware-server-issues/的 “Linux 2.6主机I / O性能”
它应该有所帮助。
但要明白,你想要做什么没有魔术。 所有操作系统都应该交换,并尽可能地尝试。