張?jiān)㈣?,張小?/p>
(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,陜西 西安 710129)
虛擬化(Virtualization)是云計(jì)算的關(guān)鍵技術(shù)之一。服務(wù)器虛擬化使一個(gè)物理服務(wù)器上可以同時(shí)運(yùn)行多個(gè)虛擬服務(wù)器,帶來降低運(yùn)營(yíng)成本、加速部署應(yīng)用、提高服務(wù)可用性、提升資源利用率和動(dòng)態(tài)調(diào)度資源的技術(shù)優(yōu)勢(shì)[1]。VMware將服務(wù)器虛擬化技術(shù)引入x86平臺(tái),并迅速被業(yè)界接受,成為炙手可熱的技術(shù)。目前主流的x86服務(wù)器虛擬化平臺(tái)有開源的Xen、VMware vSphere(核心組件是ESXi)和Microsoft Hyper-V等。
由于在傳統(tǒng)操作系統(tǒng)和服務(wù)器物理硬件之間引入了虛擬化層,帶來了不可避免的性能損失,虛擬服務(wù)器的性能表現(xiàn)是備受關(guān)注的。傳統(tǒng)的性能測(cè)試工具和方法并非針對(duì)虛擬化環(huán)境設(shè)計(jì),運(yùn)用在x86服務(wù)器虛擬化平臺(tái)的性能測(cè)試中,顯然不是最理想的。目前,虛擬化環(huán)境的性能測(cè)試工具還很少。
針對(duì)x86服務(wù)器虛擬化平臺(tái),本文提出一種支持Xen、VMware ESXi和 Microsoft Hyper-V的性能測(cè)試系統(tǒng)。該系統(tǒng)在運(yùn)用傳統(tǒng)測(cè)試工具的同時(shí),可以實(shí)時(shí)獲取虛擬化平臺(tái)的性能數(shù)據(jù)。本文運(yùn)用該系統(tǒng)進(jìn)行性能測(cè)試,分析、對(duì)比這3種平臺(tái)的性能表現(xiàn)。
大型機(jī)上的服務(wù)器虛擬化技術(shù)發(fā)展了幾十年,非常成熟和穩(wěn)定。然而x86架構(gòu)設(shè)計(jì)之初并沒有考慮支持虛擬化技術(shù),這使得在x86架構(gòu)上實(shí)現(xiàn)虛擬化相當(dāng)困難[2]。主流的x86平臺(tái)服務(wù)器虛擬化解決方案都是基于Hypervisor的。Hypervisor是位于物理服務(wù)器和同時(shí)運(yùn)行的多個(gè)客戶操作系統(tǒng)(Guest OS)之間的中間軟件層。Hypervisor也可以稱作虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)。
x86架構(gòu)的虛擬化技術(shù)主要分為完全虛擬化、半虛擬化和硬件輔助虛擬化。
1.1.1 完全虛擬化
完全虛擬化(Full Virtualization)使用二進(jìn)制轉(zhuǎn)換(Binary Translation)的方法,Hypervisor捕獲Guest OS執(zhí)行的操作特權(quán)資源的敏感指令[3],將其轉(zhuǎn)換為合適的指令后由Hypervisor執(zhí)行,其他指令可以直接執(zhí)行。
完全虛擬化使用影子頁表實(shí)現(xiàn)內(nèi)存虛擬化。Hypervisor為每個(gè)Guest OS維護(hù)一個(gè)影子頁表,保存虛擬機(jī)內(nèi)存“物理”地址到實(shí)際硬件內(nèi)存物理地址的映射關(guān)系,Hypervisor將影子頁表交給硬件層的內(nèi)存管理單元(MMU)進(jìn)行地址轉(zhuǎn)換。
IO設(shè)備方面,Hypervisor負(fù)責(zé)操作硬件設(shè)備,而Guest OS使用的是一組虛擬IO設(shè)備,每次IO操作都會(huì)被Hypervisor捕獲進(jìn)行解析,而后對(duì)實(shí)際物理設(shè)備進(jìn)行操作。
完全虛擬化的好處是操作系統(tǒng)不需要經(jīng)過任何修改就可以運(yùn)行在虛擬化平臺(tái)上,缺點(diǎn)是性能損失較大。
1.1.2 半虛擬化
半虛擬化(Paravirtualization)需要對(duì)Guest OS進(jìn)行修改,Guest OS知道自己運(yùn)行在虛擬化環(huán)境中,自動(dòng)將不能直接執(zhí)行的指令轉(zhuǎn)變?yōu)榭捎蒆ypervisor直接執(zhí)行的超級(jí)調(diào)用(Hypercall),交由 Hypervisor執(zhí)行。
內(nèi)存方面,Hypervisor修改 Guest OS的頁表,將Guest OS自身頁表中的虛擬機(jī)“物理”內(nèi)存地址轉(zhuǎn)變?yōu)閷?shí)際硬件內(nèi)存物理地址,Guest OS可以直接將頁表中的物理地址交給MMU進(jìn)行轉(zhuǎn)換。
經(jīng)過修改的Guest OS,安裝了特殊的半虛擬化IO設(shè)備驅(qū)動(dòng),由該驅(qū)動(dòng)負(fù)責(zé)IO請(qǐng)求的傳遞,Hypervisor接收到IO請(qǐng)求并解析處理后,交由物理設(shè)備的原生驅(qū)動(dòng)程序來完成IO。
半虛擬化方式修改Guest OS,針對(duì)虛擬化環(huán)境進(jìn)行了優(yōu)化,理論上性能優(yōu)于完全虛擬化方式。但是,對(duì)于無法修改的操作系統(tǒng),比如Windows,顯然無法使用這種方法。Xen使用這種方法,文獻(xiàn)[4]詳細(xì)論述了Xen 1.x的實(shí)現(xiàn),并首次提出了半虛擬化,文獻(xiàn)[5]驗(yàn)證了Xen 1.x的性能優(yōu)勢(shì)。
1.1.3 硬件輔助虛擬化
硬件輔助虛擬化(Hardware-assisted Virtualization)需要特殊硬件的支持,即 Intel-VT或 AMD-V。支持虛擬化的x86處理器,擴(kuò)展了x86指令集,存在一個(gè)比Ring0更高的特權(quán)級(jí),這樣就可以使Guest OS無需任何修改地運(yùn)行在Ring0,而Hypervisor運(yùn)行在更高的特權(quán)級(jí)。Intel的擴(kuò)展頁表技術(shù)(EPT)和AMD的嵌套頁表技術(shù)(NPT)都實(shí)現(xiàn)了硬件支持的內(nèi)存虛擬化。Intel的VT-d技術(shù)和AMD的IOMMU技術(shù)對(duì)硬件支持IO虛擬化進(jìn)行著探索。
硬件輔助虛擬化不需要對(duì)Guest OS進(jìn)行任何修改,而且避免了完全虛擬化較高的性能損失。主流服務(wù)器虛擬化產(chǎn)品均支持硬件輔助虛擬化。
本文涉及的服務(wù)器虛擬化平臺(tái)有開源的Xen、VMware ESXi和 Microsoft Hyper-V。
許多商業(yè)產(chǎn)品是基于Xen的,如華為UVP、Oracle VM和 Citrix XenServer等,云計(jì)算平臺(tái) Amazon Web Service使用的也是Xen虛擬化平臺(tái)。Xen系統(tǒng)中存在一個(gè)特殊的虛擬機(jī)Domain 0,有直接訪問物理IO設(shè)備的特權(quán),負(fù)責(zé)處理其他虛擬機(jī)對(duì)IO設(shè)備的請(qǐng)求。這樣使得原有的Linux硬件驅(qū)動(dòng)程序得以充分利用,Hypervisor也更加精簡(jiǎn)。Xen的架構(gòu)如圖1。
圖1 Xen架構(gòu)
VMware是業(yè)界領(lǐng)先的虛擬化解決方案提供商,最早進(jìn)入x86虛擬化領(lǐng)域,占據(jù)了x86虛擬化市場(chǎng)的很大份額。與Xen不同,VMware ESXi的管理功能和物理硬件驅(qū)動(dòng)包含在Hypervisor中,其對(duì)硬件的支持依賴于VMware制造的驅(qū)動(dòng)。VMware ESXi的架構(gòu)如圖2。
圖2 ESXi架構(gòu)
Microsoft Hyper-V使用與Xen相同的架構(gòu),憑借Windows的市場(chǎng)優(yōu)勢(shì),在x86服務(wù)器虛擬化市場(chǎng)占據(jù)了一席之地,但對(duì)于Linux的支持不佳,而且必須有Intel-VT或AMD-V的硬件支持。
每一種服務(wù)器應(yīng)用,均有相應(yīng)的成熟的傳統(tǒng)性能測(cè)試工具。使用傳統(tǒng)工具對(duì)虛擬服務(wù)器進(jìn)行性能測(cè)試,虛擬機(jī)的性能表現(xiàn)可以一定程度上反映一個(gè)虛擬化平臺(tái)的性能。傳統(tǒng)工具只是用于衡量一臺(tái)服務(wù)器運(yùn)行單一應(yīng)用的性能,服務(wù)器虛擬化使一個(gè)物理服務(wù)器上可以同時(shí)運(yùn)行多個(gè)虛擬服務(wù)器,這就需要將傳統(tǒng)的性能測(cè)試工具進(jìn)行整合以應(yīng)對(duì)服務(wù)器的整合。同時(shí),傳統(tǒng)性能測(cè)試工具并非針對(duì)虛擬化環(huán)境,也就無法獲得服務(wù)器虛擬化平臺(tái)整體的CPU使用率、網(wǎng)絡(luò)吞吐量等指標(biāo)。
相比傳統(tǒng)性能測(cè)試工具,專門針對(duì)虛擬化環(huán)境的性能測(cè)試工具很少。Intel已經(jīng)停止支持vConsolidate[6],VMware 的 VMmark[7]與之采用基本相同的測(cè)試方法,針對(duì)服務(wù)器整合的應(yīng)用環(huán)境進(jìn)行測(cè)評(píng)。SPEC最新的虛擬化測(cè)評(píng)基準(zhǔn)為SPECvirt_sc2013,價(jià)格不菲。使用VMmark或SPECvirt_sc2013進(jìn)行測(cè)試的代價(jià)高昂,需要大量軟硬件資源。
文獻(xiàn)[8-10]通過在虛擬化環(huán)境中模擬傳統(tǒng)環(huán)境的工作負(fù)載進(jìn)行性能測(cè)試,文獻(xiàn)[11-13]使用傳統(tǒng)測(cè)試工具對(duì)虛擬機(jī)的CPU、內(nèi)存、磁盤和網(wǎng)絡(luò)等進(jìn)行性能測(cè)試,都獲得了一些有意義的結(jié)論。
針對(duì)上文提到的x86服務(wù)器虛擬化平臺(tái),本文設(shè)計(jì)和實(shí)現(xiàn)了一種性能測(cè)試系統(tǒng),架構(gòu)如圖3所示。
圖3 測(cè)試系統(tǒng)架構(gòu)
測(cè)試系統(tǒng)主要由PHP實(shí)現(xiàn)的Web應(yīng)用程序構(gòu)成。支持對(duì)Web和數(shù)據(jù)庫兩種虛擬服務(wù)器進(jìn)行性能測(cè)試,可以獲取Xen、VMware ESXi和Microsoft Hyper-V這3種服務(wù)器虛擬化平臺(tái)的性能數(shù)據(jù)。用戶通過網(wǎng)頁界面設(shè)置測(cè)試工具參數(shù)并指定虛擬化平臺(tái)后,自動(dòng)調(diào)用傳統(tǒng)開源測(cè)試工具向被測(cè)虛擬服務(wù)器發(fā)送請(qǐng)求,進(jìn)行性能測(cè)試,同時(shí)自動(dòng)通過Hypervisor提供的接口獲得虛擬化平臺(tái)的實(shí)時(shí)性能數(shù)據(jù)。
Web和數(shù)據(jù)庫是十分常見的服務(wù)器應(yīng)用。針對(duì)這些服務(wù)器應(yīng)用,有不少成熟的測(cè)試工具。Web服務(wù)器的性能測(cè)試工具選用了ApacheBench。Apache-Bench可以并發(fā)地向Web服務(wù)器發(fā)送HTTP請(qǐng)求。
Sysbench是強(qiáng)大的系統(tǒng)性能測(cè)試工具,可以完成多種類型的測(cè)試。在數(shù)據(jù)庫性能測(cè)試中使用Sysbench對(duì)數(shù)據(jù)庫服務(wù)器執(zhí)行聯(lián)機(jī)事務(wù)處理(OLTP)測(cè)試。
根據(jù)用戶設(shè)置的測(cè)試參數(shù),本測(cè)試系統(tǒng)會(huì)自動(dòng)調(diào)用以上測(cè)試工具對(duì)1臺(tái)或多臺(tái)虛擬服務(wù)器進(jìn)行性能測(cè)試,并在測(cè)試完成后將測(cè)試結(jié)果返回。
各虛擬化平臺(tái)均提供了接口用于系統(tǒng)的遠(yuǎn)程管理和控制,通過這些接口可以遠(yuǎn)程監(jiān)控虛擬化平臺(tái)的性能。本測(cè)試系統(tǒng)監(jiān)控虛擬化平臺(tái)的CPU使用率、內(nèi)存使用量、磁盤讀寫速度和網(wǎng)絡(luò)收發(fā)速度這幾項(xiàng)指標(biāo)。在測(cè)試工具對(duì)虛擬服務(wù)器進(jìn)行性能測(cè)試的同時(shí),本測(cè)試系統(tǒng)會(huì)自動(dòng)收集服務(wù)器虛擬化平臺(tái)的性能指標(biāo),并將數(shù)據(jù)實(shí)時(shí)返回給用戶。
Xen Management API(XAPI)是 XenServer和 Xen Cloud Platform(XCP)的核心組件,用于遠(yuǎn)程配置和控制虛擬機(jī)。XAPI是一組遠(yuǎn)程過程調(diào)用(RPC),基于XML-RPC。任何程序設(shè)計(jì)語言都可以通過HTTP協(xié)議調(diào)用XAPI。本系統(tǒng)使用The Incutio XML-RPC Library for PHP來遠(yuǎn)程調(diào)用XAPI,實(shí)現(xiàn)對(duì)Xen的性能監(jiān)控。
本系統(tǒng)使用VMware vSphere API監(jiān)控ESXi的性能。vSphere API以Web服務(wù)的形式提供對(duì)虛擬機(jī)和其他虛擬組件的管理和監(jiān)控功能。PHP通過SOAP協(xié)議訪問vSphere API,可以獲得ESXi非常豐富的實(shí)時(shí)性能數(shù)據(jù)。
Windows管理規(guī)范(WMI)是Windows操作系統(tǒng)管理數(shù)據(jù)和執(zhí)行操作的基礎(chǔ)架構(gòu),是核心的Windows管理技術(shù),可以使用WMI來管理本地和遠(yuǎn)程的Windows。本系統(tǒng)在Linux下使用WMI客戶端wmic跨平臺(tái)獲取Hyper-V的實(shí)時(shí)性能數(shù)據(jù)。
利用本文設(shè)計(jì)和實(shí)現(xiàn)的測(cè)試系統(tǒng),對(duì)Xen、VMWare ESXi和Microsoft Hyper-V這3種x86服務(wù)器虛擬化平臺(tái)進(jìn)行性能測(cè)試。所用各虛擬化平臺(tái)版本為:Xen 4.1.3(XCP 1.6),ESXi 5.1 和 Hyper-V 3.0(Windows Server 2012)。
物理服務(wù)器為曙光 A620r-G,硬件配置:2個(gè)AMD Opteron 62122.6 GHz 8 核處理器,16 GB DDR3內(nèi)存,2個(gè)千兆網(wǎng)卡。
虛擬服務(wù)器的操作系統(tǒng)使用CentOS 6.3和Windows Server 2008 R2,每臺(tái)虛擬機(jī)分配4個(gè)虛擬CPU和4 GB內(nèi)存。
Web是常見的服務(wù)器應(yīng)用。使用Apache 2.2構(gòu)建Web虛擬服務(wù)器用于測(cè)試。測(cè)試中,ApacheBench的并發(fā)數(shù)設(shè)為100,請(qǐng)求Web虛擬服務(wù)器上的大小約為110 kB的靜態(tài)頁面,持續(xù)10分鐘。
圖4 Web服務(wù)器性能測(cè)試結(jié)果
測(cè)試結(jié)果如圖4所示。在網(wǎng)絡(luò)環(huán)境相同的情況下,各Web虛擬服務(wù)器的性能表現(xiàn)基本一致,每秒處理的請(qǐng)求數(shù)差異在1%以內(nèi),性能主要受網(wǎng)絡(luò)帶寬限制。
數(shù)據(jù)庫虛擬服務(wù)器使用MySQL 5.6進(jìn)行測(cè)試。Sysbench創(chuàng)建100個(gè)線程對(duì)數(shù)據(jù)庫虛擬服務(wù)器進(jìn)行復(fù)雜模式的OLTP測(cè)試,持續(xù)10分鐘。
圖5 數(shù)據(jù)庫服務(wù)器性能測(cè)試結(jié)果
測(cè)試結(jié)果如圖5所示,Xen的Linux虛擬服務(wù)器有明顯的性能優(yōu)勢(shì),比ESXi和Hyper-V的吞吐量分別高15%和56%,體現(xiàn)了Xen半虛擬化技術(shù)的優(yōu)勢(shì)。同時(shí),Xen在Windows虛擬機(jī)的測(cè)試中也稍占優(yōu)。
為了降低成本和提高IT投資回報(bào)率,服務(wù)器整合在企業(yè)數(shù)據(jù)中心是一種普遍的做法[14]。服務(wù)器虛擬化技術(shù)可以使原本單獨(dú)運(yùn)行在多臺(tái)物理服務(wù)器上的應(yīng)用,運(yùn)行在一臺(tái)服務(wù)器上的多臺(tái)虛擬服務(wù)器上。
在被測(cè)服務(wù)器虛擬化平臺(tái)上開啟Web和數(shù)據(jù)庫虛擬服務(wù)器,同時(shí)對(duì)2臺(tái)虛擬服務(wù)器進(jìn)行性能測(cè)試,測(cè)試參數(shù)與上文保持一致,測(cè)試時(shí)間10分鐘。Web服務(wù)器性能測(cè)試結(jié)果見圖6,數(shù)據(jù)庫服務(wù)器性能測(cè)試結(jié)果見圖7。
相比于單獨(dú)運(yùn)行一臺(tái)虛擬機(jī)的情況,3種虛擬化平臺(tái)上的Web虛擬服務(wù)器性能下降幅度很小,在6%以內(nèi)。數(shù)據(jù)庫虛擬服務(wù)器都出現(xiàn)了明顯的性能下降,Hyper-V的Windows虛擬機(jī)數(shù)據(jù)庫性能下降了85%,Xen和ESXi的降幅也在50%以上。ESXi在服務(wù)器整合測(cè)試中性能表現(xiàn)最好。
圖6 服務(wù)器整合測(cè)試結(jié)果(Web)
圖7 服務(wù)器整合測(cè)試結(jié)果(數(shù)據(jù)庫)
本文討論了x86架構(gòu)的服務(wù)器虛擬化技術(shù),并針對(duì)x86服務(wù)器虛擬化平臺(tái),提出了一種性能測(cè)試系統(tǒng),同時(shí)給出了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。運(yùn)用本文提出的系統(tǒng)對(duì)Xen、ESXi和Hyper-V進(jìn)行性能測(cè)試,結(jié)果表明,ESXi的虛擬服務(wù)器總體性能表現(xiàn)最好,使用半虛擬化技術(shù)的Xen的單個(gè)Linux虛擬服務(wù)器有明顯的性能優(yōu)勢(shì)。
下一步工作將完善測(cè)試系統(tǒng),支持更大規(guī)模和更多種類的測(cè)試,同時(shí)探究提高x86服務(wù)器虛擬化平臺(tái)性能的方法。
[1]王慶波,金涬,何樂,等.虛擬化與云計(jì)算[M].北京:電子工業(yè)出版社,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]廣小明,胡杰,陳龍,等.虛擬化技術(shù)原理與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2012.
[4]Barham P,Dragovic B,F(xiàn)raser 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]張揚(yáng).Xen下基于Intel VT-d技術(shù)的I/O虛擬化的實(shí)現(xiàn)[D].成都:電子科技大學(xué),2010.
[12]李莼蒲.基于Intel VT技術(shù)的PC虛擬化平臺(tái)研究與測(cè)試[D].北京:北京郵電大學(xué),2009.
[13]高清華.基于Intel VT技術(shù)的虛擬化系統(tǒng)性能測(cè)試研究[D].杭州:浙江大學(xué),2008.
[14]Padala P,Zhu X,Wang Z,et al.Performance Evaluation of Virtualization Technologies for Server Consolidation[R].HP Labs,2007.