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