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

Modified on: Sat, 26 Oct 2019 08:00:03 +0800

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

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

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

从我能说的一切来看,这应该是不可能的;据推测,5600系列在相同时钟速度下的单线程进程速度比5400系列快10-20%,对于单线程CPU绑定工作负载,虚拟化开销应该同样低。性能应该至少收支平衡,不应该吗?
但是,不是具有相同或更好的性能,性能会降低1/3。


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

这是RAM配置。性能下降50%是因为ESX主机系统内存安装错误,仅提供了全部可能带宽的一半左右。对于CPU&内存限制过程,带宽损失转化为比预期差50%的性能。

应用程序性能现在正处于我们原先预期的10-20%改善的中间。


有两个物理Windows Server 2003 R2系统运行一个应用程序,该应用程序包含在一台服务器(32位)上运行的单线程计算,另一台服务器来回与SQL Server 2005数据库进行通信(64-位)。

两个物理盒都是单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,以镜像物理环境。测试是在每个物理主机上运行的单个VM以及在同一主机上运行的两个VM上进行的。

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

此外,虚拟系统中的测试结果的变化不会超过10%,无论是给出VM 1,2或4个CPU,还是1,2,4或8GB RAM。网络或磁盘活动很少,据我所知,进程应该受CPU限制。

已使用单独主机上的本地15K SAS磁盘以及具有15K磁盘的千兆位iSCSI SAN运行测试。不同存储的结果可以忽略不计。

从我能说的一切来看,Xeon 5600系列应比单线程工作负载的5400系列快20-50%。即使考虑到X5650是2.67GHz部分而E5450是3GHhz部分,如果每个核心的性能在相同的时钟速度下相等,你仍然可以看到至少90%的性能而不是67%。这甚至没有考虑到内存时钟几乎是速度的两倍这一事实。

应该说我过去已经完成了几个虚拟化项目,即使使用SAME物理CPU核心,也从未见过接近50%性能降级的任何东西,更不用说两代内核更新,内存更快。 / p>

我应该检查有关可能原因或任何配置设置的任何想法吗?

作者:,ryandenki

最佳答案

根据虚拟化的类型,5%的开销是最好的情况。通过完全半虚拟化,您可以非常轻松地在IO-light工作负载上实现此类开销。借助硬件辅助虚拟化(VMWare使用的技术),可以在具有少量VM的虚拟机管理程序上实现IO光工作负载的低开销。通过完全虚拟化(无CPU扩展),5%的开销几乎是一个梦想。

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

如果使用特殊的网络配置模块(如虚拟交换机),虚拟化还会增加额外的网络延迟,但这通常不是很重要。

虚拟化往往会添加许多额外的中断,这些中断是从VM切换到另一个VM所必需的。根据管理程序的调度程序,这可能很重要。您无法做到这一点,因为它只是由于虚拟化的本质。但要记住这是降低绩效的理由。

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

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


相关问答

添加新评论