我们在RHEL和CentOS上运行着一个大型的Xen部署,最近也开始关注KVM,因为这看起来像是Linux上虚拟机的未来。
我们可以加载服务器,让所有的东西都能正常运行。 但是,当我们加载一个新的JBoss(4.2社区版,Sun JDK 6),并加载一个大的EAR服务器有点疯狂。 %sy会跳到80-99%,只是挂了很长一段时间,我们在主机上看到%us的类似跳跃。 我们虽然起初这可能是I / O,因为它似乎发生在JBoss的开始,但是一切都被加载之后会“冷却”下来。 我们通过提取一些大的tar.gz文件并在耳朵上使用jar -xvf做了一些testing,但是不能重新创build。
然后我们开始考虑这可能是某种types的内存访问问题。 我们加载了一个可以产生大量内存活动的c程序,果然我们再次看到了尖峰。 没有你那么高,但我们确实看到它跳。 然后,我们写了一个小的Java程序来做同样的事情,果然我们看到它再次跳转。
有什么想法可能造成这个? 这只是KVM的工作方式吗?
作为一个方面说明,我们不会看到任何其他设置上的这种行为。 Xen,VMWare和/或原生铁。 该系统似乎比我们的Xen / VMware慢一点。
一个问题和一个build议:
你使用什么文件系统? 在Fedora 12和13系统上,我看到了使用ext4的优秀性能,但是使用btrfs却performance糟糕。
扩展@Ophidian的评论 – 用Fedora 13试试看看它是如何运行的,使用最近的KVM和libvirt库。
如果可能的话,我想看看你用来重新创build的testing代码。 我一直在testing大量的KVM客人,而且一个额外的基准总是很好的,特别是如果知道会造成问题
了解VMconfiguration也会有所帮助 – RAM,CPU,磁盘和networkingtypes等等
我不知道你是否在主机上打交换。
你有/你可以在Fedora 12上试试看看最新的版本(kvm,libvirt,kernel,ksm)是否performance出同样的行为? KSM被添加到Fedora 12中,据说提供了更高效/更好的内存pipe理。
除了3dinfluencebuild议联系红帽支持和KVM邮件列表之外,我还build议fedora-virt列表作为libvirt,kvm和其他Fedora虚拟化生态系统的大量开发者是fedora-virt 。 他们通常是非常敏感和有帮助的。
你正在运行ksmd(共享内存减less)? 这可能在pipe理程序系统上有一些CPU开销,并且可能会涉及与内存相关的停顿。
也许值得一提的是,如果将虚拟机固定在内核上有帮助 – 您可能会发现从内核切换到内核(或处理器间)的guest虚拟机会在内存密集型工作负载下导致高速caching刷新。
考虑到每一个虚拟机都是一个虚拟机pipe理程序所涉及的过程,它可能会让人联想起访客进程,看看是否有系统调用显然是有问题的。
最后,我一直在找Dag Wieer的dstat作为追踪问题的工具包的一个很好的补充。
(因为我们要看看试用JBoss-KVM,这与我的兴趣有关…)