VM Host – > Xenon E5-2440 w / 48G mem …一切运行CentOS6.5(2.6.32-431)
我有4个虚拟机运行每个瓦特/ 2G的内存。 他们的磁盘映像是本地文件。 主机也运行一个轻微使用的NFS服务器,但没有其他的东西。 (swappiness = 0)经过一天左右的缓冲区caching增长到接近40G,这些虚拟机几乎完全交换到磁盘。 (通过查看:grep VmSwap / proc / PID / status)
我遇到的问题是,这些虚拟机可能不经常使用,他们必须准备好。 然而,实际上他们正在被换出,造成严重的问题与他们的反应时间。
我当然是让我的访客虚拟机使用合理大小的交换文件,并让操作系统决定缓冲区caching和交换之间的平衡,但是这似乎不适用于我的用例中的主机。
除了在主机上禁用交换之外,还有哪些选项可以保持虚拟机的响应性不受影响? 尝试使用cgroups,或只是拔出交换文件的插件为这个用例?
您可以在更高版本的libvirt中将页面locking到内存中: –
http://libvirt.org/formatdomain.html#elementsMemoryBacking
小心 :使用Fedora 19作为pipe理程序时,不会出现这种情况,不过根据EL6.5 libvirt的最新RPM(我可以find)的更新日志,
- Thu Jul 18 2013 Jiri Denemark – 0.10.2-21
- conf:为pmsuspended域状态避免NULL deref(rhbz#822306)
- libvirt:定义域名崩溃事件types(rhbz#822306)
- qemu:重构processWatchdogEvent(rhbz#822306)
- qemu:公开qemuProcessShutdownOrReboot()(rhbz#822306)
- qemu:客人惊慌时执行'oncrash'事件(rhbz#822306)
- qemu:客人惊慌时执行'oncrash'coredump事件(rhbz#822306)
- conf:parsingNAT端口XML节点时修复内存泄漏(rhbz#851455)
- security_manager:修复比较(rhbz#984793)
- qemu:防止没有guest代理configuration的libvirtd崩溃(rhbz#984821)
- qemu:修复qemuAgentGetVCPUs()(rhbz#984821)中返回的JSON数组的两倍空闲
- qemu_agent:添加对命令追加数组的支持(rhbz#924400)
- 添加对locking域的内存页面的支持(rhbz#947118)
- qemu:实现对locking域内存页面的支持(rhbz#947118)
- qemu:检查-realtime mlock = on | off支持(rhbz#947118)
- qemu:将内存限制计算移动到可重用函数(rhbz#947118)
- util:new virCommandSetMax(MemLock | Processes | Files)(rhbz#947118)
- qemu:使用memoryBacking / locked时设置RLIMIT_MEMLOCK(rhbz#947118)
- 将Gluster协议添加为支持的networking磁盘后端(rhbz#849796)
- qemu:添加对基于gluster协议的networking存储后端的支持。 (rhbz#849796)
- testing:为基于gluster协议的networking磁盘支持添加testing(rhbz#849796)
您可以使用cgroups,并设置每个cgroup swappiness
http://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt
http://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
KVM虚拟CPU只是主机上的一个线程,因此可以像其他任何进程一样进行控制。