我真的很难理解某些事情,我想知道是否有人有这方面的经验并能够提供帮助。
我有两个 KVM VMHost,一个运行 qemu 2.4.1,另一个运行 1.1.0。每个 VMHost 上都有一个 VM,分配了 80GB 内存,运行 CentOS 6。两个 VMHost 也都运行 CentOS 6。
在 1.1.0 机器上,当我在虚拟机内运行一个占用全部 80GB 内存的进程时,Qemu 会为其分配 80GB 并保留它。如果您查看 top,您会看到该 qemu 进程的 RES 大小为 80GB。free 命令确认内存不是空闲的。
在 2.4.1 机器上,当我执行相同的操作时,它会为虚拟机分配 80GB,RES 列证实了这一点。但是,一旦我终止虚拟机中占用所有内存的进程,Qemu 似乎就会将内存返还给系统。RES 列始终保持在 80GB,但我可以逐渐看到我的可用内存随着 free 命令而增加,直到几乎全部恢复。
我不知道这是为什么,这让我很困扰。我预期的行为是 1.1.0 Qemu vmhost 给出的行为。这就是人们使用内存膨胀的原因(这实际上是我正在试验的)。看起来 2.4.1 框几乎是自动膨胀的,但我的 RES 列从未减少,所以我不确定这是怎么可能的。我不确定是否存在我不知道的 qemu 更改或其他什么...
任何见解都将不胜感激。谢谢!