x86服务器虚拟化平台性能测试
2014-10-15张寓琛张小芳
张寓琛,张小芳
(西北工业大学计算机学院,陕西 西安 710129)
0 引言
虚拟化(Virtualization)是云计算的关键技术之一。服务器虚拟化使一个物理服务器上可以同时运行多个虚拟服务器,带来降低运营成本、加速部署应用、提高服务可用性、提升资源利用率和动态调度资源的技术优势[1]。VMware将服务器虚拟化技术引入x86平台,并迅速被业界接受,成为炙手可热的技术。目前主流的x86服务器虚拟化平台有开源的Xen、VMware vSphere(核心组件是ESXi)和Microsoft Hyper-V等。
由于在传统操作系统和服务器物理硬件之间引入了虚拟化层,带来了不可避免的性能损失,虚拟服务器的性能表现是备受关注的。传统的性能测试工具和方法并非针对虚拟化环境设计,运用在x86服务器虚拟化平台的性能测试中,显然不是最理想的。目前,虚拟化环境的性能测试工具还很少。
针对x86服务器虚拟化平台,本文提出一种支持Xen、VMware ESXi和 Microsoft Hyper-V的性能测试系统。该系统在运用传统测试工具的同时,可以实时获取虚拟化平台的性能数据。本文运用该系统进行性能测试,分析、对比这3种平台的性能表现。
1 服务器虚拟化技术
1.1 x86架构虚拟化技术
大型机上的服务器虚拟化技术发展了几十年,非常成熟和稳定。然而x86架构设计之初并没有考虑支持虚拟化技术,这使得在x86架构上实现虚拟化相当困难[2]。主流的x86平台服务器虚拟化解决方案都是基于Hypervisor的。Hypervisor是位于物理服务器和同时运行的多个客户操作系统(Guest OS)之间的中间软件层。Hypervisor也可以称作虚拟机监视器(Virtual Machine Monitor,VMM)。
x86架构的虚拟化技术主要分为完全虚拟化、半虚拟化和硬件辅助虚拟化。
1.1.1 完全虚拟化
完全虚拟化(Full Virtualization)使用二进制转换(Binary Translation)的方法,Hypervisor捕获Guest OS执行的操作特权资源的敏感指令[3],将其转换为合适的指令后由Hypervisor执行,其他指令可以直接执行。
完全虚拟化使用影子页表实现内存虚拟化。Hypervisor为每个Guest OS维护一个影子页表,保存虚拟机内存“物理”地址到实际硬件内存物理地址的映射关系,Hypervisor将影子页表交给硬件层的内存管理单元(MMU)进行地址转换。
IO设备方面,Hypervisor负责操作硬件设备,而Guest OS使用的是一组虚拟IO设备,每次IO操作都会被Hypervisor捕获进行解析,而后对实际物理设备进行操作。
完全虚拟化的好处是操作系统不需要经过任何修改就可以运行在虚拟化平台上,缺点是性能损失较大。
1.1.2 半虚拟化
半虚拟化(Paravirtualization)需要对Guest OS进行修改,Guest OS知道自己运行在虚拟化环境中,自动将不能直接执行的指令转变为可由Hypervisor直接执行的超级调用(Hypercall),交由 Hypervisor执行。
内存方面,Hypervisor修改 Guest OS的页表,将Guest OS自身页表中的虚拟机“物理”内存地址转变为实际硬件内存物理地址,Guest OS可以直接将页表中的物理地址交给MMU进行转换。
经过修改的Guest OS,安装了特殊的半虚拟化IO设备驱动,由该驱动负责IO请求的传递,Hypervisor接收到IO请求并解析处理后,交由物理设备的原生驱动程序来完成IO。
半虚拟化方式修改Guest OS,针对虚拟化环境进行了优化,理论上性能优于完全虚拟化方式。但是,对于无法修改的操作系统,比如Windows,显然无法使用这种方法。Xen使用这种方法,文献[4]详细论述了Xen 1.x的实现,并首次提出了半虚拟化,文献[5]验证了Xen 1.x的性能优势。
1.1.3 硬件辅助虚拟化
硬件辅助虚拟化(Hardware-assisted Virtualization)需要特殊硬件的支持,即 Intel-VT或 AMD-V。支持虚拟化的x86处理器,扩展了x86指令集,存在一个比Ring0更高的特权级,这样就可以使Guest OS无需任何修改地运行在Ring0,而Hypervisor运行在更高的特权级。Intel的扩展页表技术(EPT)和AMD的嵌套页表技术(NPT)都实现了硬件支持的内存虚拟化。Intel的VT-d技术和AMD的IOMMU技术对硬件支持IO虚拟化进行着探索。
硬件辅助虚拟化不需要对Guest OS进行任何修改,而且避免了完全虚拟化较高的性能损失。主流服务器虚拟化产品均支持硬件辅助虚拟化。
1.2 x86服务器虚拟化平台
本文涉及的服务器虚拟化平台有开源的Xen、VMware ESXi和 Microsoft Hyper-V。
许多商业产品是基于Xen的,如华为UVP、Oracle VM和 Citrix XenServer等,云计算平台 Amazon Web Service使用的也是Xen虚拟化平台。Xen系统中存在一个特殊的虚拟机Domain 0,有直接访问物理IO设备的特权,负责处理其他虚拟机对IO设备的请求。这样使得原有的Linux硬件驱动程序得以充分利用,Hypervisor也更加精简。Xen的架构如图1。
图1 Xen架构
VMware是业界领先的虚拟化解决方案提供商,最早进入x86虚拟化领域,占据了x86虚拟化市场的很大份额。与Xen不同,VMware ESXi的管理功能和物理硬件驱动包含在Hypervisor中,其对硬件的支持依赖于VMware制造的驱动。VMware ESXi的架构如图2。
图2 ESXi架构
Microsoft Hyper-V使用与Xen相同的架构,凭借Windows的市场优势,在x86服务器虚拟化市场占据了一席之地,但对于Linux的支持不佳,而且必须有Intel-VT或AMD-V的硬件支持。
1.3 虚拟化平台性能测试
每一种服务器应用,均有相应的成熟的传统性能测试工具。使用传统工具对虚拟服务器进行性能测试,虚拟机的性能表现可以一定程度上反映一个虚拟化平台的性能。传统工具只是用于衡量一台服务器运行单一应用的性能,服务器虚拟化使一个物理服务器上可以同时运行多个虚拟服务器,这就需要将传统的性能测试工具进行整合以应对服务器的整合。同时,传统性能测试工具并非针对虚拟化环境,也就无法获得服务器虚拟化平台整体的CPU使用率、网络吞吐量等指标。
相比传统性能测试工具,专门针对虚拟化环境的性能测试工具很少。Intel已经停止支持vConsolidate[6],VMware 的 VMmark[7]与之采用基本相同的测试方法,针对服务器整合的应用环境进行测评。SPEC最新的虚拟化测评基准为SPECvirt_sc2013,价格不菲。使用VMmark或SPECvirt_sc2013进行测试的代价高昂,需要大量软硬件资源。
文献[8-10]通过在虚拟化环境中模拟传统环境的工作负载进行性能测试,文献[11-13]使用传统测试工具对虚拟机的CPU、内存、磁盘和网络等进行性能测试,都获得了一些有意义的结论。
2 测试系统设计与实现
针对上文提到的x86服务器虚拟化平台,本文设计和实现了一种性能测试系统,架构如图3所示。
图3 测试系统架构
测试系统主要由PHP实现的Web应用程序构成。支持对Web和数据库两种虚拟服务器进行性能测试,可以获取Xen、VMware ESXi和Microsoft Hyper-V这3种服务器虚拟化平台的性能数据。用户通过网页界面设置测试工具参数并指定虚拟化平台后,自动调用传统开源测试工具向被测虚拟服务器发送请求,进行性能测试,同时自动通过Hypervisor提供的接口获得虚拟化平台的实时性能数据。
2.1 测试工具
Web和数据库是十分常见的服务器应用。针对这些服务器应用,有不少成熟的测试工具。Web服务器的性能测试工具选用了ApacheBench。Apache-Bench可以并发地向Web服务器发送HTTP请求。
Sysbench是强大的系统性能测试工具,可以完成多种类型的测试。在数据库性能测试中使用Sysbench对数据库服务器执行联机事务处理(OLTP)测试。
根据用户设置的测试参数,本测试系统会自动调用以上测试工具对1台或多台虚拟服务器进行性能测试,并在测试完成后将测试结果返回。
2.2 虚拟化平台性能数据的获取
各虚拟化平台均提供了接口用于系统的远程管理和控制,通过这些接口可以远程监控虚拟化平台的性能。本测试系统监控虚拟化平台的CPU使用率、内存使用量、磁盘读写速度和网络收发速度这几项指标。在测试工具对虚拟服务器进行性能测试的同时,本测试系统会自动收集服务器虚拟化平台的性能指标,并将数据实时返回给用户。
Xen Management API(XAPI)是 XenServer和 Xen Cloud Platform(XCP)的核心组件,用于远程配置和控制虚拟机。XAPI是一组远程过程调用(RPC),基于XML-RPC。任何程序设计语言都可以通过HTTP协议调用XAPI。本系统使用The Incutio XML-RPC Library for PHP来远程调用XAPI,实现对Xen的性能监控。
本系统使用VMware vSphere API监控ESXi的性能。vSphere API以Web服务的形式提供对虚拟机和其他虚拟组件的管理和监控功能。PHP通过SOAP协议访问vSphere API,可以获得ESXi非常丰富的实时性能数据。
Windows管理规范(WMI)是Windows操作系统管理数据和执行操作的基础架构,是核心的Windows管理技术,可以使用WMI来管理本地和远程的Windows。本系统在Linux下使用WMI客户端wmic跨平台获取Hyper-V的实时性能数据。
3 测试结果
利用本文设计和实现的测试系统,对Xen、VMWare ESXi和Microsoft Hyper-V这3种x86服务器虚拟化平台进行性能测试。所用各虚拟化平台版本为:Xen 4.1.3(XCP 1.6),ESXi 5.1 和 Hyper-V 3.0(Windows Server 2012)。
物理服务器为曙光 A620r-G,硬件配置:2个AMD Opteron 62122.6 GHz 8 核处理器,16 GB DDR3内存,2个千兆网卡。
虚拟服务器的操作系统使用CentOS 6.3和Windows Server 2008 R2,每台虚拟机分配4个虚拟CPU和4 GB内存。
3.1 Web服务器性能测试
Web是常见的服务器应用。使用Apache 2.2构建Web虚拟服务器用于测试。测试中,ApacheBench的并发数设为100,请求Web虚拟服务器上的大小约为110 kB的静态页面,持续10分钟。
图4 Web服务器性能测试结果
测试结果如图4所示。在网络环境相同的情况下,各Web虚拟服务器的性能表现基本一致,每秒处理的请求数差异在1%以内,性能主要受网络带宽限制。
3.2 数据库服务器性能测试
数据库虚拟服务器使用MySQL 5.6进行测试。Sysbench创建100个线程对数据库虚拟服务器进行复杂模式的OLTP测试,持续10分钟。
图5 数据库服务器性能测试结果
测试结果如图5所示,Xen的Linux虚拟服务器有明显的性能优势,比ESXi和Hyper-V的吞吐量分别高15%和56%,体现了Xen半虚拟化技术的优势。同时,Xen在Windows虚拟机的测试中也稍占优。
3.3 服务器整合测试
为了降低成本和提高IT投资回报率,服务器整合在企业数据中心是一种普遍的做法[14]。服务器虚拟化技术可以使原本单独运行在多台物理服务器上的应用,运行在一台服务器上的多台虚拟服务器上。
在被测服务器虚拟化平台上开启Web和数据库虚拟服务器,同时对2台虚拟服务器进行性能测试,测试参数与上文保持一致,测试时间10分钟。Web服务器性能测试结果见图6,数据库服务器性能测试结果见图7。
相比于单独运行一台虚拟机的情况,3种虚拟化平台上的Web虚拟服务器性能下降幅度很小,在6%以内。数据库虚拟服务器都出现了明显的性能下降,Hyper-V的Windows虚拟机数据库性能下降了85%,Xen和ESXi的降幅也在50%以上。ESXi在服务器整合测试中性能表现最好。
图6 服务器整合测试结果(Web)
图7 服务器整合测试结果(数据库)
4 结束语
本文讨论了x86架构的服务器虚拟化技术,并针对x86服务器虚拟化平台,提出了一种性能测试系统,同时给出了系统的设计与实现。运用本文提出的系统对Xen、ESXi和Hyper-V进行性能测试,结果表明,ESXi的虚拟服务器总体性能表现最好,使用半虚拟化技术的Xen的单个Linux虚拟服务器有明显的性能优势。
下一步工作将完善测试系统,支持更大规模和更多种类的测试,同时探究提高x86服务器虚拟化平台性能的方法。
[1]王庆波,金涬,何乐,等.虚拟化与云计算[M].北京:电子工业出版社,2009.
[2]Robin J S,Irvine C E.Analysis of the Intel Pentium’s ability to support a secure virtual machine monitor[C]//Proceedings of the 9th Conference on USENIX Security Symposium.2000,9:129-144.
[3]广小明,胡杰,陈龙,等.虚拟化技术原理与实现[M].北京:电子工业出版社,2012.
[4]Barham P,Dragovic B,Fraser K,et al.Xen and the art of virtualization[J].ACM SIGOPS Operating Systems Review,2003,37(5):164-177.
[5]Clark B,Deshane T,Dow E,et al.Xen and the art of repeated research[C]//Proceedings of the 2004 USENIX Annual Technical Conference.2004:135-144.
[6]Casazza J P,Greenfield M,Shi K.Redefining server performance characterization for virtualization benchmarking[J].Intel Technology Journal,2006,10(3):243-251.
[7]Makhija V,Herndon B,Smith P,et al.VMmark:A Scalable Benchmark for Virtualized Systems[R].VMware Inc.,2006.
[8]Ostermann S,Iosup A,Yigitbasi N,et al.A performance analysis of EC2 cloud computing services for scientific computing[M]//Cloud Computing.Springer,Berlin,Heidelberg,2010,34:115-131.
[9]Barker S K,Shenoy P.Empirical evaluation of latencysensitive application performance in the cloud[C]//Pro-ceedings of the 1st Annual ACM SIGMM Conference on Multimedia Systems.2010:35-46.
[10]Wang Q S,Zhao D,Huang Z C.Research on the performance of virtualization-based remote sensing data processing platform[C]//Proceedings of the 2012 IEEE International Conference on Systems and Informatics.2012:900-904.
[11]张扬.Xen下基于Intel VT-d技术的I/O虚拟化的实现[D].成都:电子科技大学,2010.
[12]李莼蒲.基于Intel VT技术的PC虚拟化平台研究与测试[D].北京:北京邮电大学,2009.
[13]高清华.基于Intel VT技术的虚拟化系统性能测试研究[D].杭州:浙江大学,2008.
[14]Padala P,Zhu X,Wang Z,et al.Performance Evaluation of Virtualization Technologies for Server Consolidation[R].HP Labs,2007.