VMware X5650的单线程应用程序比物理E5450慢50%

我们的应用程序在ESX下的Xeon X5650上运行速度比裸机上的E5450慢50%。

物理服务器上的testing任务需要17分钟。

虚拟服务器上的相同任务需要25分钟:时间延长50%。

从我能说的一切来看,这应该是不可能的。 在相同的时钟速度下,5600系列的速度应该比单线程进程的5400系列速度快10-20%,对于单线程CPU限制的工作负载,虚拟化开销应该同样低。 性能至less应该达到平衡,不是吗? 但是,性能没有相同或更好的performance,而是减less了1/3。


更新:解决。 (固定)虚拟服务器上的相同任务需要14分钟,速度提高15%。

这是RAMconfiguration。 50%的性能下降是因为ESX主机系统内存安装错误,只能提供大约一半的全部可能的带宽。 对于CPU和内存绑定的过程,带宽的损失转化为性能低于预期的50%。

现在应用程序的性能在我们原来预期的10-20%的改善中间现在已经被忽略了。


有两个物理Windows Server 2003 R2系统运行一个应用程序,该应用程序由一个服务器(32位)上运行的单线程计算组成,在另一个服务器(64位)上来回交谈SQL Server 2005数据库。

两个物理盒子都是单CPU E5450,带有4GB RAM @ 800Mhz。 计算服务器永远不会使用超过1.5GB的物理内存,并且SQL Server不会超过2.5GB。 计算服务器上的CPU利用率永远不会超过〜15%(大约是单核的50%)。 数据库服务器上的CPU利用率永远不会超过〜25%(一个充分利用的单核)。

物理ESX 4.1主机是双CPU X5650,具有64GB RAM @ 1333Mhz。 虚拟机每个都有4个内核和4GB RAM,以反映物理环境。 testing是在每台物理主机上运行一个虚拟机,以及在同一主机上运行的。

有趣的是,我们在使用X5550 CPU和RAM @ 1066Mhz的另一对ESX服务器上获得了几乎相同的25分钟testing结果。

此外,虚拟系统中的testing结果在给出虚拟机1个,2个或4个CPU,或者1,2,4或8GB RAM的情况下,变化不会超过10%。 有很less的networking或磁盘活动,并且据我所知,该进程应该是CPU绑定的。

已经在单独的主机上使用本地15K SAS磁盘运行testing,也使用15K磁盘的千兆iSCSI SAN运行testing。 不同的储存结果可以忽略不计。

据我所知,Xeon 5600系列应该比单线程工作负载的5400系列快20-50%。 即使考虑到X5650是2.67GHz的部分和E5450的3GHhz的一部分,如果每核心性能是相同的时钟速度相同,你仍然会看到至less90%的性能,而不是67%。 这甚至没有考虑到内存时钟接近两倍的事实。

应该说,过去我已经完成了几个虚拟化项目,即使使用相同的物理CPU核心,也没有看到任何接近50%的性能降低的内容,更不用说内核速度更快的新一代内核。

任何想法可能的原因或任何configuration设置,我应该检查?

根据虚拟化的types,5%的开销是最好的情况。 通过全面的半虚拟化,您可以轻松地在IO轻负载上实现这种开销。 借助硬件辅助虚拟化技术(VMWare使用的技术),可以在虚拟机less的虚拟机pipe理程序上实现IO轻负载的低开销。 完全虚拟化(无CPU扩展),5%的开销几乎是一个梦想。

请记住,这可能取决于很多因素。 虚拟化往往会在磁盘和客户操作系统之间增加大量的延迟。 这将增加IO等待,因此加载平均值,同时保持CPU使用率较低。 如果您的存储处于IOPS规模的较低端,这将产生非常大的影响。 如果您正在使用networking存储,则由于必须为每个IO访问networking,而不是仅仅访问内部总线,这几乎总会增加延迟。

如果使用虚拟交换机等特殊的networkingconfiguration模块,虚拟化还会增加额外的networking延迟,但这通常不是很重要。

虚拟化往往会增加许多额外的中断,这些中断需要从一个虚拟机切换到另一个虚拟机。 根据pipe理程序的调度程序,这可能很重要。 关于这一点,你可以做的不多,因为这仅仅是由于虚拟化的本质。 但是要记住这是降低性能的理由。

由于应用程序的单线程特性,拥有更多的内核将不会产生显着的性能提升。 两个CPU都有类似的频率,但是您会注意到X5650在没有“Turbo Boost”的情况下频率较低。 您可能想要检查该function是否与您的设置兼容/启用。

IO密集型工作负载的33%的开销是,我觉得不是那么糟糕。 尝试分离两个虚拟机的存储,看看是否有帮助。