摘 要: 在openstack云環(huán)境下通過對網(wǎng)卡I/O、處理器、內(nèi)存和磁盤I/O幾個方面進(jìn)行對比分析,比較了KVM虛擬機(jī)和物理機(jī)的性能差距。最后根據(jù)分析結(jié)果得出了KVM虛擬機(jī)更適合于網(wǎng)絡(luò)I/O、內(nèi)存和處理器密集型任務(wù),而不適合磁盤I/O密集型任務(wù)的結(jié)論,并發(fā)現(xiàn)隨著虛擬機(jī)數(shù)量的增加網(wǎng)卡I/O和磁盤I/O的性能呈直線下降。
關(guān)鍵詞: KVM;虛擬機(jī);性能測試
隨著云計(jì)算的不斷發(fā)展,各種云計(jì)算管理平臺也應(yīng)運(yùn)而生,如Eucalyptus、Vmware、Xenserver、Openstack。在各種各樣的云計(jì)算管理平臺中只有Openstack是完全開源的,而開源的云計(jì)算管理平臺則一致被業(yè)界和學(xué)術(shù)界認(rèn)為是未來云計(jì)算發(fā)展的方向。
Openstack是美國國家航空航天局(NASA)和Rackspace合作研發(fā)的一個云平臺管理的項(xiàng)目,它主要由3個部分組成:nova(虛擬服務(wù)器部署和業(yè)務(wù)計(jì)算)模塊、swift(分布式云存儲)模塊、glance(虛擬機(jī)磁盤映像存儲)模塊。除了有Rackspace和NASA的大力支持外,后面還有包括Dell、Citrix、Cisco等公司的貢獻(xiàn)和支持,發(fā)展速度非常快。
1 KVM技術(shù)
KVM(Kernel-based Virtual Machine)是由以色列的一個開源組織開發(fā)的基于Linux內(nèi)核的虛擬機(jī),于2008年被紅帽收購。KVM由兩部分組成:(1)內(nèi)核中管理虛擬化硬件的設(shè)備驅(qū)動,通過字符設(shè)備/dev/km實(shí)現(xiàn);(2)QEMU,用來模擬用戶的PC機(jī)。KVM與其他虛擬技術(shù)不同的是KVM是Linux內(nèi)核的一部分,直接運(yùn)行于硬件之上,虛擬機(jī)作為一個正常的Linux進(jìn)程而實(shí)現(xiàn),由標(biāo)準(zhǔn)Linux調(diào)度程序調(diào)度,能受益于Linux內(nèi)核的所有特征,它能夠直接與硬件交互,不需要修改虛擬化操作系統(tǒng),相比于XEN等其他虛擬技術(shù)KVM更加輕量級。KVM虛擬機(jī)體系結(jié)構(gòu)如圖1所示。
2 虛擬機(jī)性能評測方法
如今為止還沒有一套完整成熟的能為學(xué)術(shù)界和業(yè)界普遍接受和認(rèn)可的虛擬機(jī)性能評測與分析方案。VMware公司作為虛擬化市場份額的最大占有者,并且是虛擬化性能評測委員會的成員,其推出了一款程序測試方案——VMmark。VMmark主要是對微軟的WindowsServer進(jìn)行的虛擬化性能測試與分析。但是對于普通用戶來說其并不關(guān)心一臺虛擬服務(wù)器性能的高低,他們關(guān)心的更多的是虛擬機(jī)和物理機(jī)相比其性能如何,相比于物理機(jī)虛擬機(jī)要損失多少性能,具體到細(xì)節(jié)方面就是處理器、內(nèi)存、網(wǎng)卡I/O和磁盤I/O的性能與物理機(jī)相比其結(jié)果如何。因此本實(shí)驗(yàn)在性能測試方面還是采用傳統(tǒng)的性能測試工具和方法。
在本實(shí)驗(yàn)中,采用ubuntu-12.04.2-server-amd64.iso作為基準(zhǔn)操作系統(tǒng)。為保證測試數(shù)據(jù)的準(zhǔn)確性,測試均采用系統(tǒng)自帶指令和程序進(jìn)行測試。本實(shí)驗(yàn)中所測試的性能對象和性能標(biāo)準(zhǔn)如表1所示。
本實(shí)驗(yàn)所采用的服務(wù)器的配置如下:2顆Intel(R)Xeon(R)CPU E5520(2.27 GHz,6核),8 GB內(nèi)存,167 GB磁盤,兩塊以太網(wǎng)卡,其中一塊網(wǎng)卡通過路由器連接到局域網(wǎng)中。實(shí)驗(yàn)開始之前先用ubuntu-12.04.2-server-amd64.iso做為底層操作系統(tǒng),使用openstack搭建起一個私有云環(huán)境,然后使用KVM虛擬技術(shù)創(chuàng)建虛擬機(jī),虛擬機(jī)的配置為2個CPU、2 GB內(nèi)存、20 GB硬盤和一塊網(wǎng)卡,同時為其分配一個IP地址使其也連接到局域網(wǎng)內(nèi)。
在測試過程中,每一項(xiàng)測試都進(jìn)行3次,最后進(jìn)行統(tǒng)計(jì)匯總,然后以物理機(jī)的測試結(jié)果為基準(zhǔn),將虛擬機(jī)的測試結(jié)果與物理機(jī)進(jìn)行對比和分析。每進(jìn)行一項(xiàng)測試之后都會將本次測試所產(chǎn)生的所有內(nèi)容刪去并重啟計(jì)算機(jī)從而保證本次測試不會對下一次測試結(jié)果產(chǎn)生影響。
3 測試結(jié)果
首先進(jìn)行測試的是網(wǎng)卡I/O性能,在本次測試中虛擬機(jī)和物理機(jī)都通過一臺路由器連接到同一個局域網(wǎng)內(nèi),然后從局域網(wǎng)內(nèi)同一臺ftp服務(wù)器下載一個3.13 GB大小的ISO鏡像文件。為了保證測試的準(zhǔn)確性,路由器沒有連接外網(wǎng),每次下載統(tǒng)計(jì)完成之后都要刪除下載內(nèi)容并重啟機(jī)器。這個測試中主要使用wget指令,wget是一個從網(wǎng)絡(luò)上自動下載文件的工具,其主要測試的是虛擬機(jī)的網(wǎng)卡I/O性能。經(jīng)過對測試結(jié)果標(biāo)準(zhǔn)化處理之后圖2中顯示了KVM虛擬機(jī)和物理機(jī)的網(wǎng)絡(luò)I/O對比結(jié)果。
從圖2中可以看出KVM虛擬機(jī)的網(wǎng)絡(luò)I/O性能與物理機(jī)相比是非常接近的。
從圖3可以看出在壓縮時間方面KVM虛擬機(jī)的壓縮時間相比于物理機(jī)有一定的損失,損失比大概在13%左右。
然后進(jìn)行的是解壓測試,同壓縮測試相同的是解壓測試也采用的是bzip2指令,但是不同的是壓縮測試是一個cpu密集型任務(wù),主要體現(xiàn)的是機(jī)器的cpu性能,而解壓測試則主要體現(xiàn)的是內(nèi)存的性能。其測試對象是剛進(jìn)行壓縮測試時所產(chǎn)生的壓縮文件,其大小為3.0 G。其測試對比結(jié)果如圖4所示。
從圖4可以看出在解壓時間方面KVM虛擬機(jī)相對于物理機(jī)的損失大于其壓縮時間的損失,性能損失率大概在18%左右,但是也在可接受范圍之內(nèi)。
在最后進(jìn)行的是磁盤I/O性能的測試,本次測試中采用的是cp指令,每次執(zhí)行完之后都會刪除掉復(fù)制過去的文件只保留源文件然后對機(jī)器進(jìn)行重啟,cp操作對cpu和內(nèi)存沒有太大壓力,其主要測試集中在硬盤的I/O性能。在本次測試中把一個3.2 G的鏡像文件拷貝到同一個ext4分區(qū)下。其測試對比結(jié)果如圖5所示。
從圖5可以看出KVM虛擬機(jī)的磁盤傳輸性能還沒有達(dá)到物理機(jī)磁盤傳輸性能的40%,損失比非常大,其效果是非常不理想的。
在單臺虛擬機(jī)性能測試完成之后,最后測試了網(wǎng)卡I/O和硬盤I/O性能和虛擬機(jī)數(shù)量的關(guān)系,本次測試中分別在openstack云環(huán)境下創(chuàng)建了1臺、2臺、3臺虛擬機(jī),測試過程中每個結(jié)果測試3次,每次測試完成之后重啟虛擬機(jī),并最終以1臺虛擬機(jī)的性能為基準(zhǔn),將兩臺和3臺虛擬機(jī)的性能與其進(jìn)行對比分析。其測試對比結(jié)果圖如圖6、圖7所示。
分析圖6可以看出,網(wǎng)卡I/O性能與虛擬機(jī)的數(shù)量關(guān)系較大,隨著虛擬機(jī)數(shù)量的增加,網(wǎng)卡I/O的性能呈大幅下降的趨勢,可以說虛擬機(jī)數(shù)量的增加對網(wǎng)卡I/O性能的影響是比較大的。從圖7看到,當(dāng)虛擬機(jī)數(shù)量增加到2臺的時候硬盤I/O的性能只有很小的降低,可以說虛擬機(jī)硬盤I/O的性能還是保持在令人滿意的狀態(tài),但是當(dāng)虛擬機(jī)數(shù)量增加到3的時候,硬盤I/O的性能大幅下降了一半以上。性能只有2臺時的一半不到。由此可以看出,隨著虛擬機(jī)數(shù)量的增加,對網(wǎng)卡I/O和硬盤I/O的性能影響是比較大的。在openstack云環(huán)境中當(dāng)增加虛擬機(jī)的數(shù)量時,需要著重考慮網(wǎng)卡I/O和硬盤I/O的性能。
本文主要評測了在openstack云環(huán)境下KVM虛擬機(jī)的基本性能,并使用了各種測試方法來比較了KVM虛擬機(jī)與物理機(jī)性能的差別。
在實(shí)驗(yàn)中可以看出,在網(wǎng)卡I/O性能方面KVM虛擬機(jī)與物理機(jī)的性能相比是不相上下的,甚至是完全相同的。采用bzip2所進(jìn)行的壓縮測試主要體現(xiàn)的是處理器的處理能力,可以看出相比于物理機(jī)KVM的處理器性能損失是比較少的,在可接受范圍之內(nèi)。解壓測試則主要體現(xiàn)的是內(nèi)存的性能,其性能損失比雖然比處理器要高一些但是也都是在可接受范圍以內(nèi)。唯一性能損失比較大的就是磁盤I/O性能,從測試結(jié)果可以看出,其性能還不到物理機(jī)的40%。
最后測試了網(wǎng)卡I/O、硬盤I/O性能和虛擬機(jī)數(shù)量的關(guān)系,發(fā)現(xiàn)隨著虛擬機(jī)數(shù)量的增加,網(wǎng)卡I/O和硬盤I/O的性能都呈現(xiàn)大幅度下降的趨勢。
從以上分析可以得出本文的結(jié)論,當(dāng)使用openstack搭建起私有云環(huán)境時,對于處理器和內(nèi)存尤其是網(wǎng)卡I/O性能要求比較高的業(yè)務(wù),KVM虛擬技術(shù)是一個很不錯的選擇方案,但是當(dāng)磁盤I/O密集型應(yīng)用為主要業(yè)務(wù)時,KVM虛擬化解決方案就并不是一個很好的選擇了,并且在增加虛擬機(jī)數(shù)量的時候需要著重考慮網(wǎng)卡I/O和硬盤I/O性能的下降,否則虛擬機(jī)的性能將不盡如人意。
參考文獻(xiàn)
[1] 于波.Linux KVM的虛擬化性能[J].軟件世界,2007,6(5):49-50.
[2] 崔澤永,趙會群.基于KVM的虛擬化研究及應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(6):108-111.
[3] 蘭雨晴,宋瀟豫,馬立克,等.系統(tǒng)虛擬化技術(shù)性能評測[J].電信科學(xué),2010(8):19-24.
[4] 余平.QEMU-KVM實(shí)現(xiàn)虛擬機(jī)動態(tài)負(fù)載均衡[J].技術(shù)應(yīng)用,2012(6):59-62.
[5] 李亞奇.虛擬化云計(jì)算中資源管理的研究[J].電腦知識與技術(shù),2013(6):2916-2917.
[6] 孫琳程.虛擬機(jī)KVM與XEN的性能分析[J].電腦知識與技術(shù),2013(4):2364-2365.
[7] MAKHIJA. VMMARK: a scalable benchmark for virtualized systems[R]. Tech report, Vmware, Inc, 2006.