服务器 频道

测试手记:如何提高Vmware虚拟化的性能

虚拟机性能影响:磁盘、内存和CPU

    我们的测试环境是两台Dell PowerEdge 2850服务器。这两台服务器的配置一样,都是两个Intel Xeon双核CPU、2GB内存和三块硬盘的RAID阵列。Xeon处理器含有Intel VT虚拟化技术,提供了CPU虚拟化的代码优化。然后,我们运行了三种应用——微软Exchange Server 2003、SQL Server 2005和IIS(Internet信息服务),并采用了一些免费和商业性的工具软件,包括微软Exchange Server 2003负载模拟器(LoadSim)、SQLIOSim以及Borland的SilkPerformer 2006 R2。

    从根本上来说,跟直接在物理服务器上运行某一应用相比,在基于同一物理平台的虚拟机上跑同一应用,一定会产生性能上的损耗。在我们的测试中,这种损耗随应用的不同而变化,但一般少于10%,在6%-20%之间。

1)磁盘问题

    跟一般企业的实际应用不同,我们的测试环境中没有专门的存储子系统,如为特定应用存放数据的SAN。对于Exchange这样的应用,SAN不仅仅是提供数据存储和数据管理,也可以防止资源冲突,如当操作系统和应用程序要同时访问虚拟内存和磁盘的时候。因此,如果有一个专门的存储子系统,就能减少这样的资源冲突。另外,在同时运行多个虚拟机时,还要看应用是否需要持续的访问磁盘。

    在用LoadSim测试Exchange和用SQLIOSim测试SQL Server时,都有频繁的磁盘读写操作,但Exchange Server 2003和SQL Server 2005的性能仅降低了6%。这一结果说明,在虚拟机不会争抢访问磁盘的情况下,虚拟化对那些主要依赖驱动性能的应用影响并不大。

    ESX Server不支持动态分配磁盘空间,除非添加存储设备。从实际应用的角度来看,这确实是个棘手的问题。在决定某一台服务器上能运行多少个虚拟机时,一个关键因素可能就是包含磁盘空间的虚拟机镜像的大小。在默认情况下,ESX Server为一台虚拟机分配的磁盘空间是4GB。在测试中,为了保证有足够的空间安装应用程序和后续软件升级,我们给虚拟机分配的最小空间是10GB。而我们的系统总共有128GB的磁盘空间,因此可以安装10个虚拟机。

    值得注意的是,随着应用负载的变化,性能表现也会随之变化,有时我们不得不考虑把一个虚拟机从服务器上删除。但问题在于,在虚拟机移除之后,新释放出来的磁盘空间因为性能问题无法再分配给其它虚拟机使用,这些空间也就被闲置了。

    我们的测试结果表明,要想在同一套硬件系统上运行多个需要大量磁盘操作的应用时,就不要指望特别好的性能了,除非每个应用的数据存放在特定的存储子系统,如SAN。比如在同一套硬件系统上组合运行微软 Exchange Server 2003和SQL Server 2005时,如果两者都进行频繁的磁盘操作,性能就很一般,而如果Exchange更多使用磁盘子系统,而SQL Server更多使用内存时,性能表现就要好得多。

    如果你计划动态地迁移虚拟机时,一定要考虑好存储的问题。比如,当一个应用不再需要时,你会考虑把一个虚拟机删除,但问题在于,当你要想把另一个应用迁移到这台服务器上时,你可能会发现,虚拟机的镜像太大了。

0
相关文章