高CPU环境的虚拟化

我为自定义Java应用程序构build了一个freebsd客户操作系统。 没有Gui,没有装饰,只是SSH和一个API来协调所有的机器。

这个应用程序本质上是单线程的,只受CPU速度的限制。 哪个是JAVA CPU绑定应用程序的最佳虚拟化框架?

我们从OpenVZ开始,但是我们发现了一个令人讨厌的bug,在我们的应用程序中导致了内存泄漏,所以现在我们正在寻找下一步使用的东西。

在Linux中我没有一个快速简单的方法来设置处理器在Linux上的亲和力,使用VMWare和VirtualBox,但是两者都应该正常工作。 如果你真的热衷于速度,那么你可能想要完全使用KVM,只是为了本地集成而不是为VMWare / VirtualBox添加一些层。 听起来你真的不需要太多的gfx,声音等,所以这可能是最适合你的。


这个答案的下一个部分是有点偏离主题,因为你要求一个完整的虚拟机解决scheme,但我张贴反正,因为它可能会更有意义的情况。 使用虚拟机听起来非常沉重,当你可以使用一个容器来获得相同的好处(隔离)而没有缺点(虚拟机开销)。 是的,随着时间的推移,你的环境会逐渐从处理器跳到处理器,但是所有的VM解决scheme都会尝试开箱即用,因为它们与系统调度程序相关联,而调度程序正是导致这种情况发生的原因。

为什么不修复内存泄漏而不是改变平台?

如果它是单线程的,调度程序不会影响事情的一大堆,除非主机是过度承诺。 大多数平台的性能应该非常相似。

哪个是JAVA CPU绑定应用程序的最佳虚拟化框架?

一个允许您永久性地将物理CPU分配给虚拟机,所以上下文交换保持最小。

使用最新的vmware服务器,您可以将多个内核组合到一个虚拟cpu中,这样可以帮助您获得单个线程应用程序:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1010184

编辑:这是4.1版本。 您可以尝试免费的esxi版本并testing您的应用程序。