rya*_*nki 6 vmware-esx vmware-vsphere
我们的应用程序在 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 位)上运行的单线程计算组成,与另一台(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,用于镜像物理环境。测试是在每台物理主机上运行单个 VM 的情况下进行的,并且两者都运行在同一主机上。
有趣的是,我们在另一对使用 X5550 CPU 和 RAM @1066Mhz 的 ESX 服务器上获得了几乎相同的 25 分钟测试结果。
此外,虚拟系统中的测试结果在给 VM 1、2 或 4 个 CPU,或 1、2、4 或 8GB RAM 的情况下变化不超过 10%。网络或磁盘活动很少,据我所知,该进程应该受 CPU 限制。
测试已在不同主机上使用本地 15K SAS 磁盘以及同样具有 15K 磁盘的千兆 iSCSI SAN 运行。不同存储的结果差异可以忽略不计。
据我所知,对于单线程工作负载,至强 5600 系列应该比 5400 系列快 20-50%。即使考虑到 X5650 是 2.67GHz 部件而 E5450 是 3GHz 部件,如果每核性能在相同的时钟速度下相等,您仍然希望看到至少 90% 的性能而不是 67%。这甚至没有考虑到内存时钟几乎是速度的两倍这一事实。
应该说,我过去做过几个虚拟化项目,即使使用相同的物理 CPU 内核,也从未见过接近 50% 的性能下降,更不用说具有更快内存的两代新内核了。
关于可能的原因或我应该检查的任何配置设置的任何想法?
根据虚拟化的类型,5% 的开销几乎是最好的情况。通过完全半虚拟化,您可以轻松地在 IO 轻量工作负载上实现此类开销。借助硬件辅助虚拟化(VMWare 使用的技术),可以在具有少量 VM 的虚拟机管理程序上实现如此低的 IO 轻量工作负载开销。对于完全虚拟化(无 CPU 扩展),5% 的开销几乎是一个梦想。
请记住,这可能取决于很多因素。虚拟化往往会增加磁盘和客户操作系统之间的大量延迟。这将增加 IO 等待,从而增加平均负载,同时保持 CPU 使用率相当低。如果您的存储处于 IOPS 规模的较低侧,这将产生非常大的影响。如果您使用网络存储,这几乎总是会增加延迟,因为每个 IO 都必须访问网络,而不仅仅是访问内部总线。
如果您使用特殊的网络配置模块(例如虚拟交换机),虚拟化还会增加额外的网络延迟,但这通常不是很严重。
虚拟化往往会增加从一个虚拟机切换到另一个虚拟机所需的许多额外中断。根据虚拟机管理程序的调度程序,这可能很重要。您对此无能为力,因为这只是虚拟化的本质所致。但请记住这一点,作为降低性能的理由。
由于应用程序的单线程性质,拥有更多内核不会带来显着的性能提升。两种 CPU 的频率相似,但您会注意到 X5650 在没有“Turbo Boost”的情况下频率较低。您可能需要检查该功能是否与您的设置兼容/启用。
我发现 IO 密集型工作负载的 33% 开销还不错。尝试分离两个虚拟机的存储,看看是否有帮助。
归档时间: |
|
查看次数: |
3439 次 |
最近记录: |