基于云计算的虚拟化平台性能研究
来源:软件导刊杂志 更新时间:2014-06-11

 计算是一种基于Internet的新兴应用计算机技术。其愿景是以互联网为中心,提供可靠安全的数据存储、方便快捷的互联网服务和强大的计算能力。在这个特殊的云计算环境下,如何创造基于云计算的虚拟化平台,将是云计算面临的一大问题。从云计算的特征及目前存在的问题出发,分析云计算在虚拟化平台的应用情况。
    云计算的根本是计算资源虚拟化,在云计算蓬勃发展的今天,各厂商纷纷推出虚拟化平台产品,如何衡量一款产品性能的好坏,也成为业内新的技术挑战。从技术层面分析,虚拟化平台是在虚拟机操作系统与物理服务器硬件之间增加了一个调度层,势必会对应用程序操作硬件产生一定影响;同时其自身运行也需要耗费一定的计算资源,对整个物理服务器的资源使用会产生损耗,这些都是在性能测试设计中需要考虑的方面。
  根据云计算中最为关键的3个要素:计算资源、网络资源和存储资源,虚拟化平台性能测试也对应地分为计算性能测试、网络性能测试和存储性能测试3个主要方面。
  1.计算性能测试设计
  计算资源是云计算的重中之重,所有业务的展开都是依托于计算资源的能力提供,因此计算性能也是衡量云计算性能的最重要指标。计算性能测试设计分为两个方面:①对虚拟化平台自身消耗硬件系统性能进行评估;②不同虚拟化平台对虚拟机操作系统业务调度的影响进行比较。
  1.1 虚拟化平台性能消耗测试设计不同厂家的虚拟化平台采用了不同的底层技术,当前业内主流的4大类虚拟化底层平台为:VMware的ESX/ESXi、Microsoft的Hyper—V和开源的XEN与KVM。这些不同的底层平台对CPU和内存等计算资源的调度方式各不相同,很难找到一个通用的技术工具来统一衡量。如果变换角度,通过测试在同一硬件平台下虚拟机操作系统和物理机操作系统对资源的使用性能,可以推算出虚拟化平台自身的运行损耗。
  第1步,选择一款物理服务器平台,然后在此服务器上安装测试使用的操作系统,可以选择Windows或Linux系统。接着安装常用的计算性能测试软件,如Windows Server系统自带的评测工具或开源的Benchmarker等,测算当前系统计算性能得分。如果采用Linux Server系统,则可以安装如Imbench和Geekbench等测试工具,进行评测。性能测试后得到测试结果TestResult1。
  第2步,在物理服务器上安装虚拟化平台软件,创建一个虚拟机,并将物理服务器的CPU和内存等计算资源都分配给此虚拟服务器。然后在此虚拟服务器上安装同样的操作系统与测试工具,运行相同的测试项目,得到测试结果TestResult2。
  比较两个测试结果的差值,可以得到虚拟化平台对物理资源的损耗估计值。如果希望得到更准确的损耗估计,需要测试同一款虚拟化平台安装在不同物理服务器上,部署多个操作系统和测试工具情况下的测试结果,并进行纵向比较,得到更多的参考数据。
  1.2 虚拟化平台调度性能测试设计虚拟化平台性能损耗测试是纵向测试,比较的对象为物理服务器和虚拟服务器环境下的测试结果。而虚拟化平台调度性能测试则为横向测试,比较的对象主要为相同物理服务器和软件环境下不同虚拟化平台的性能测试结果。两者的测试方法区别不大,但环境设定存在差异。
  第1步,选取相同的物理服务器硬件平台,安装虚拟化平台软件,并创建虚拟服务器,此时不需要安装最大化部署计算资源,只需考虑业务环境需求创建对应大小CPU和内存资源的虚拟机即可。然后在虚拟机上安装操作系统与测试工具,取得测试结果TestResult1。
  第2步,更换虚拟化平台软件,创建同样资源大小的虚拟服务器并安装运行环境,取得测试结果TestResult2。比较两个测试结果,可以得到不同虚拟化平台的调度运行性能。如果希望得到更准确的调度性能结果,建议将相同测试运行多次,取平均值再进行比较。
  2.网络性能测试设计
  在虚拟化环境下,用户关心的流量转发已经由物理节点链路延伸到服务器内部,从测试设计考虑,网络性能测试也相应地增加了虚拟链路与虚拟交换机的转发性能等相关内容。虚拟链路(虚拟网卡)性能测试重点关注的是虚拟化平台为虚拟服务器提供的虚拟网卡的转发性能,即测试模型主要以单点到单点的转发为主。虚拟交换机性能测试则关注的是在限定的物理服务器平台下,虚拟交换机可以提供的最大全虚拟服务器节点的转发性能,即测试模型主要以多点到多点的转发为主。
  2.1 虚拟链路性能测试设计:虚拟链路性能测试结果主要与虚拟机采用的虚拟网络驱动类型有关,同时受限于虚拟化平台的软件转发能力。测试过程重点关注同一物理机内部的虚拟机之间的流量转发能力。对跨物理交换机网络的不同物理服务器之间的转发能力,由于会受到物理网卡及网络设备的影响,测试结果往往体现的是整个系统的性能,对单一虚拟化平台性能衡量不够精确。
  测试虚拟链路性能常用的方法是在同一物理服务器内部创建2台虚拟机(图1),在相同的操作系统和软件环境下,使用相同的测试工具(如NetPerf和Iperf等)测试流量转发性能。对于测试结果有两点注意事项:①比较不同厂家虚拟化平台产品的虚拟链路性能时,需要保证测试的物理平台与虚拟机操作系统相同。②测试结果有时还会受到测试工具所在操作系统的影响,测试过程中需要对TCP滑动窗口大小和传输报文负载大小等参数进行调整,以取得虚拟化平台能够承载的最大值和最接近真实应用数据模型情况下的测试结果。
130467749802132245_new.jpg (515×137)图1 虚拟链路性能测试模型
  2.2 虚拟交换机性能测试设计:虚拟化平台上通常需要部署大量虚拟机,因此也需要测试在复杂环境下大量虚拟机转发对虚拟交换机vswitch的影响,从而得到vswitch的最大转发性能。同样,此测试设计只对同一物理服务器内部流量转发模型有意义,对于跨物理服务器的流量模型,测试结果无法准确衡量虚拟交换机的性能。
  虚拟交换机性能测试需要测试大量虚拟机同时进行流量转发隋况下的性能,假设建立虚拟机为a1,a2,...,am;bl,b2,...,bn,流量模型可以分为Backbone或Fullmesh两类(图2)。
130467750036525651_new.jpg (545×221)

图2 虚拟交换机性能测试模型
  Backbone模型是建立每个a节点到每个b节点的双向流量,而a节点内部和b节点内部没有流量交互,测试结果可以衡量两组虚拟机之间的流量交互性能。Fullmesh模型则是在所有节点之间都要建立流量交互,以测试虚拟交换机连接所有虚拟机均有多条流量转发情况下的性能。
  测试时,需要根据实际业务模型来选取测试的流量模型。如果虚拟机部署为应用与数据库两类,只有互相访问,而没有内部交互,则可以选择Backbone模型进行测试;如果部署同一类型用于分布式计算的虚拟机,相互之间都会有流量产生,则选择Fullmesh模型测试更加适合。
  由于测试过程中需要大量虚拟机同时收发流量,则常规的单一开源测试软件如NetPerf或Iperf等很难满足需求,需要配合STAF等自动化测试平台软件才能完成任务的同步下发和管理。此类测试还有一些常用的专业测试工具,如Spirent的STCv、IXIA的IxVM等测试软件。这类软件的原理是根据模板建一个虚拟机,此虚拟机唯一的工作任务就是收发流量测试,不需要再安装操作系统与额外的软件工具。相对来说操作简单,同时可以提供更加丰富的数据。缺点是开销较大。
  虚拟交换机性能测试同样完全受限于物理服务器硬件平台和虚拟化平台的能力,因此只有在相同物理平台下,比较不同厂商的测试结果才有意义。
  3.存储性能测试设计
  在云计算虚拟化平台中,使用的存储设备资源可以为FC SAN、iSCSI、NFS、Samba等网络存储方式,无论使用哪种存储方式,虚拟化平台都会将其进行转化,最终以文件形式形成虚拟机的磁盘文件或直接以卷的形式供虚拟机使用。因此,测试设计时只需要考虑测试场景均采用同种存储方式进行搭建下的测试即可。
  关注的存储性能测试结果主要是IOPS和吞吐率两个指标。lOPS指每秒I/O吞吐数量,是存储性能的常规测试指标,体现了虚拟化平台对存储I/O处理方面的能力。吞吐率指虚拟化平台能够处理的存储流量大小,单位为Mbps,通常分为读和写两个方向的结果,受限于磁盘的磁道写人性能,通常读速率性能要远大于写速率性能。
  测试时,为了比较不同厂家虚拟化平台产品的存储性能,需要在相同硬件环境下,采用相同的存储介质与存储方式测试同一个指标,进而将得到的测试结果进行比较。测试工具可以选择专用的存储测试软件,如IOmeter、IObench和IOzone等,也可以选用通用的测试平台,如phoronix-test-suite的存储相关性能测试套件等。安装测试方法和前面的计算与网络性能测试类似,都是先给虚拟机安装Windows或Linux操作系统,然后再安装测试工具软件进行测试。
  4.小结和展望
  对于云计算虚拟化平台产品,往往还会包括各种各样的功能,如快照、备份、迁移、克隆等,这些相关特性也都有对应的性能测试内容,但是考虑到各厂商的实现均有差异,相关的性能测试也未能形成标准,结果可比较性不强。
  该研究中所述的计算、网络和存储性能测试,是当前云计算虚拟化平台产品中被业内所公认的主要性能测试项目,其测试结果也已成为衡量云计算虚拟化平台产品的关键性能指标。