二、性能测试:
性能测试的项目中我们为VMWare ESX 选取了和Hyper-V同样的测试并发数,分别是50、100、200、240并发的响应时间来进行对比。
[url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url][url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url]
图1、2两套虚拟系统性能比较(点击放大)
上图左边是本次的VMWare的测试结果,右边是Windows Server 2008的Hyper-V测试结果。为了方便各位对两种虚拟技术有更直观的比较,我们将它们都放到一起。简单的对比,除了库存入库单记帐模块在VMWare平台上响应时间比较领先之外,其他的5个功能模块都不同程度的落后于Hyper-V的虚拟平台。
不同的功能模块在不同的虚拟服务器系统中应该有着不同的表现,但VMWare和Hyper-V其实都是属于同一种虚拟架构的虚拟技术,都是裸金属架构,即都是虚拟服务器上的系统直接驱动底层硬件,而我们测试的都是在同一套硬件之上,安装的操作系统以及所使用的系统资源都是一样的,理论上这两种虚拟机上的性能表现应该是一样的,原来我们曾经在同一个物理服务器上进行过同样压力的性能测试项目,前后的测试成绩相差都不会超过10%。对于虚拟服务器,我们原来猜想也是如此,但现实往往在想象之外。
虽然现在对具体的原因还很难分析清楚,不过根据虚拟技术的原理,可以做出一个基本判断:不论是Hyper-V还是VMWare,虚拟层的主要作用就是给客户操作系统(微软称为访客操作系统)提供模拟的单独硬件环境,另外更重要的作用就是调度核心资源例如CPU、内存以及IO。实际上在之前的Hyper-V,还有这次VMWare测试中我们都发现,分配给虚拟机的虚拟CPU和物理CPU没有映射关系(当然VMware提供这个选项),测试中不论我们分配给虚拟机1个还是4个CPU,虚拟机的性能上限都变化不大。这就意味着在CPU资源调度这个关键功能而言,虚拟层都将所有的物理CPU当成一个资源池,根据虚拟机实时的资源申请进行分配。在我们这个场景的测试中,因为只有一个虚拟机,因此基本上物理CPU资源池仅仅保留虚拟层进程必要的CPU时间片,其他资源都可以按需要分配给虚拟机。
很明显,虚拟层进程的时间占用和对资源申请的调度效率就很大程度决定了虚拟机的表现。虽然VMware描述的技术是虚拟机直接在物理CPU上运行,但是对CPU资源的调度就像操作系统对处理器的调度一样,仍然是虚拟层的核心任务,而Hyper-V与VMWare在调度效率上显然有所侧重,这也没什么奇怪的地方。
在深入研究过测试的数据后我们大致的发现VMWare响应时间比较慢的原因。对于VMWare ESX Server上的虚拟系统资源,有3种会比较影响性能的参数,1是对虚拟系统的资源保留值,即每个系统保留的CPU个数、内存大小,磁盘大小等等。2、是各个系统在物理硬件资源池中所占的资源权重,比如说多个系统都对物理资源申请调用时,哪得系统会得到优先使用权的设置。3、是虚拟系统资源的限制值(Limit),这个数值是指虚拟系统不能占用超过物理资源的百份比例。这三个设置其实是互相影响的,在物理服务机上安装的虚拟系统不多的情况下,如果没有对虚拟系统设置限制值,那么保留值的设置并没有太大的意义,因为只要物理资源有空闲的时候,虚拟系统提出申请,那么这些系统资源,尤其是CPU的计算能力,都是被虚拟系统所调用。
[url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url]
图3 IOmeter测试结果
在压力测试之余,我还特意的对两种虚拟平台上磁盘文件系统的性能做了IOmeter的性能测试。从上图可以看出,Hyper-V下的虚拟磁盘性能曲线平稳一些,而VMWare ESX 的磁盘对压力的表现更直观。就性能而言,在队列深度的不断增加,虚拟磁盘的读写速度差别不是很大,两种磁盘的性能都很接近,但在压力增加的时候,VMWare ESX 的下降趋势比较明显,这多少解释了为什么VMWare ESX 的ERP高并发时响应时间变得更慢的原因。
| 读写速度(MBps) | 队列深度 |
物理服务器磁盘 | 29.172204 | 64 |
VMWare ESX Server | 9.73768 | 16 |
Hyper-V | 9.502278 | 32 |
表1 IOmeter磁盘峰值速度
从上表可以看出,虚拟文件系统与物理文件系统的差别巨大,性能仅仅是物理系统的30%!这就是为什么重要的解决方案例如高可用和容灾一定要在单独的阵列上运行。原因之一就在于虚拟文件系统实际上需要虚拟层的翻译。例如Hyper-v其实是在Windows 2008文件系统上创建一个扩展名为VHD文件来模拟虚拟机文件系统,所有对虚拟文件系统的操作实际上是对这个Windows2008文件的操作来实现。VMware给虚拟机一个单独的分区,但是根据测试来看,其虚拟机仍然不是直接操作物理磁盘系统。这样虚拟文件系统相当于所有的操作都要通过虚拟层的翻译,效率自然高不到哪里去。
在我们进行的虚拟机Windows 2008和Windows 2003文件传送效率对比测试中,虚拟文件就造成更惊人的差别:Windows2008的文件传输效率居然是Windows2003的9倍!主要的原因也出在这个虚拟机文件系统上。
因此对实际生产的系统而言,不论采用Hyper-v还是VMware方案,我们都强烈建议将虚拟机安装在单独的SAN存储上,而不要和虚拟层共同安装在服务器直连存储上!
三、稳定性测试
对于VMWare ESX虚拟系统的稳定性,我们同样的进行了100并发中等压力下的12小时长时间的压力测试来验证VMWare ESX系统的稳定性能。同样的,测试项目顺利的完成,没有出现宕机死锁的现象。在测试中VMWare的虚拟服务器表现稳定,这和很多人认为的虚拟机只能跑象备份、邮件等非核心低压力应用的观念有很大的出入,虚拟服务器同样胜任物理服务器所能做的大部分任务。
[url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url]
图4 长时间的测试结果
因为测试项目运行的时间很长,同样的ERP业务动作会被重复的执行很多次,而由于数据的冗余,执行的事务的时间会越来越长,最小和最大的响应时间之间会出现很大的偏差,所以在稳定性测试中,平均响应时间有更多的参考价值。值得一提的是,在稳定性测试中,VMWare每个模块的平均响应时间又都领先于之前的Hyper-V的同样测试的结果(见图)。难道VMWare对数据冗余有更好的优化技术?这个问题我们会继续咨询相关的技术人员,随后给大家一个合理的答案。
实际上,VMware已经证明能够很好的支持异构操作系统,例如同时支持微软和Linux,而目前Hyper-V对Linux的支持还需要完善。目前我们还没有办法测试在完全异构环境下的资源调度效率,从这个意义上说,Hyper-V在Windows平台的优胜还不是两种方案的全部。
这其实是由于Hyper-V和VMWare ESX Server两种虚拟技术所使用的底层编译语言是不一样的,在硬件层和虚拟服务器客户机系统之间的虚拟平台,它实现的是客户机操作系统对硬件的驱动,但各自使用的方式及编译语言是不一样的。这好比BENZ和BMW,虽然都是汽车,都表现出相似的运动方式。但说到核心技术,诸如发动机、底盘、驱动方式、制动方式都有着自己的标准,所以差别并不少。
四、资源使用率
在进行压力的测试的同时,我们会不断的记录虚拟系统的资源占用情况,这也是从去年在物理服务器上测试时遗留下来的习惯。系统资源的占用情况会直观的表现系统的压力程度,不过在虚拟平台上,这就和我们的使用习惯相去甚远了。
[url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url]
图5 VMWare不同并发压力下的资源使用率
正如上文提到的虚拟资源的3个很重要的参数。没有添加限制值的时候,CPU资源的会自动进行动态的调配。持续长时间占用的100%CPU计算时间在物理服务器上是很少见到的,而在虚拟机上,不同的压力下,CPU也一直维持为接近100%的水平,这个现象在之前的Hyper-V上的虚拟服务器上已经出现过了,所以在这样高系统占用的情况下,只要虚拟服务器的计算申请没有达到或者超过物理服务器的资源水平,仍然没有宕机也不算奇怪。
这样的设置其实是体现了虚拟技术的最大特点,就是以不同应用来划分系统资源,将闲置的系统资源分配给合适的应用,同时保证每一个应用都最大程度的利用系统资源的,使物理服务器的硬件价值得到最大化的体现。
四、结论
VMWare ESX是VMWare Infrastructure的主要组成部分,ESX运行在物理服务器上的一个虚拟层,它将要调配的处理器、内存、存储器和网络资源抽象到多台虚拟机中。这大大的改变了以往一台物理服务器负责一个或多个主要应用的旧有习惯,提高了系统资源的利用率的同时,也很大的节约了服务器的摆放空间和能耗。现在的数据中心机房服务器托管都是按U计算费用,同时国家也出台了关于高能计算的单位能源损耗标准,无疑,虚拟技术的出现和普及有其必然性。
[url=http://www.pconline.com.cn/images/html/viewpic_pconline.htm?&][/url]
图6 VMWare Infrastructure架构
从本次在虚拟平台上的测试,如果单以物理性能来的衡量,测试的成绩虽然没有给我们带来太多的惊喜,但我们至少在虚拟平台上进行了高压力的应用项目测试。单个虚拟服务器的测试成绩不算很出色,不过我们并只划分了部分的硬件资源,如果全部利用起来就可以构造多个的虚拟服务器以应付不同的应用,在象VMWare的企业级的虚拟服务器平台上,依靠单台的物理服务器,架构出一个中小型企业的全部应用平台也不是不可能的。在虚拟技术这个大舞台上,微软还是VMWare,我们看看谁能笑到最后吧?
之前有网友评点过微软Server2008的测试,说目前虚拟系统的最大用途是用于测试。诚然,虚拟系统中有很多诸如快照这样的可回溯的功能,对一些破坏性的测试有很大的帮助。但经过我们的自己的测试,这样来定义虚拟服务器,确实是有点大材小用。由于时间的关系,VMWare ESX的一些其他的应用象是高可用方案(HA),VMotion管理等功能的测试会陆续进行,测试结果也会分批次的与网友见面。