KVM,Xen與VirtualBox在Intel Haswell上的Linux虛擬化性能比較

轉載自https://linux.cn/article-2363-1-rel.html

在上週,我們對 KVM 和 Xen 近幾年裏在性能上的改進進行了一些有趣的探討後,我打算自己做一些這方面的小研究。我能找到的最新的資料,是來自2013年 Phoronix Haswell 性能評測上的基準測試。當然,還有其它一些2011年的評測,不過由於 Xen 被收錄進 Kernel 3.0,它們都已被熱烈地討論過。

2011年的測試提供了許多很好的基準報表,在三年後的現在,我盡最大努力把它們列出的屬性重新測試一遍。但我刪減了其中兩三個基準測試,原因是它們在未經特定優化的配置後跑出來的數據不是很好,或者它們需要跑很長時間才能得到結果。

測試環境

測試環境由兩臺一模一樣的超微服務器組成,分別都配備一顆Intel 至強 E3-1220(4核,3.10GHz),24G 金士頓 DDR3 內存,4塊西數 RE-3 160G 磁盤(組成 RAID10 陣列)。另外 BIOS 也是一模一樣。

所有測試項目(即實體機和虛擬機)都在 Fedora 20 (開 SELinux)上進行,並且測試過程中幾乎沒有運行的不相關的服務。這裏列一下相關服務的版本:

  • Kernel: 3.14.8
  • For KVM: qemu-kvm 1.6.2
  • For Xen: xen 4.3.2

根文件系統都是使用默認配置的 XFS。虛擬機使用 virt-manager 來創建(virt-mamager 也使用默認配置)。虛擬磁盤使用 raw 鏡像,容量爲 8GB,虛擬4顆 CPU。Xen 虛擬機使用 PVHVM 建立虛擬磁盤。

附加說明

也許有人會考慮到 Fedora 是紅帽公司所有,紅帽一直在維護 KVM,而 Xen 則自從在2009年紅帽重新選擇 KVM 作爲虛擬化產品後,再沒得到這個公司的重要改進。我將這個因素排除在了測試所考慮的範圍之外,不過仍然可以在心裏稍微注意一下。

並且,資源競爭產生的影響也有被嚴格控制並最小化。在大多數虛擬服務器上,你可以跑多個虛擬機,而這些虛擬機會爭用 CPU 時間片、磁盤 IO、網絡帶寬等等資源。在本測試中也不考慮這些因素。一臺虛擬機搶到資源少,性能就差,而另一臺搶得多,性能就好(LCTT譯註:它們的性能總和,就可 以大致當作是 KVM 或 Xen 的性能了)。

本測試運行在 Intel 的 CPU 上。如果使用的是 AMD 或 ARM,可能有些數據會不一樣。

結果

本測試使用裸機作爲虛擬服務測試的基準設備。在不跑虛擬機的情況下,兩臺裸機的性能偏差不會大於0.51%

在幾乎所有測試中,KVM 的性能相比宿主機而言下降了1.5%以內,只有兩項測試例外。第一個是 7-zip 壓縮,比宿主機慢了 2.79%。第二個就奇怪了,我們搭了一個郵件服務器,用 PostMark 測試其性能,結果表明 KVM 竟比宿主機快了4.11%。然後我在兩臺服務器中重新跑了幾遍 PostMark 測試,結果性能差異基本不變,浮動都在最初測試結果的1%以內。由於我對 virtio 的內部機制沒有很深的理解,我只能在以後再對這個怪現象進行進一步瞭解。

Xen 的性能相對宿主機而言差異就比較大了。有3項測試性能下降在2.5%以內,剩下的性能下降率都是 KVM 的2~4倍。PostMark 測試的性能比 KVM 慢了14.41%,這結果令我大吃一驚。重新跑了下測試,性能差還是幾乎不變,浮動都在最初結果的2%以內。KVM 表現最好的 CPU 測試:MAFFT 對齊測試,是 Xen 表現倒數第二差的。

現在奉上一個簡短得總結表:

< 如顯示不全,請左右滑動 >
  Best Value Bare Metal KVM Xen
C-Ray lower 35.35 35.66 36.13
POV-Ray lower 230.02 232.44 235.89
Smallpt lower 160 162 167.5
John the Ripper (Blowfish) higher 3026 2991.5 2856
John the Ripper (DES) higher 7374833.5 7271833.5 6911167
John the Ripper (MD5) higher 49548 48899.5 46653.5
OpenSSL higher 397.68 393.95 388.25
7-Zip higher 12467.5 12129.5 11879
Timed MAFFT Alignment lower 7.78 7.795 8.42
CLOMP higher 3.3 3.285 3.125
PostMark higher 3667 3824 3205

如果需要完整數據,請查看Goole Docs 電子表格

結論

基於上面的測試環境,KVM 的性能損耗幾乎都在2%以內,Xen 則在十多項測試中有3項損耗在2.5%以內,而其他幾項損耗都在5~7%之間。雖然 KVM 在 PostMark 測試中性能表現優異,但這是衆多測試中僅有的一項 I/O 測試,如果想證明 KVM 確實在 I/O 處理方面很強悍,就需要更多測試。

對我來說,我想要深入瞭解一下 KVM 和 Xen 在 I/O 方面的處理,以及它們之間爲什麼會有這麼大的差別。我也許還會跑一些有競爭的測試,來看看虛擬機在有壓力的條件下是否真的能比宿主機表現得更出色。

我鼓勵讀者通過使用Phoronix 測試套件來進行一些基準測試,你們可以找到一些能模仿你們工作環境的用例。如果你的工作環境是低 CPU 高 I/O,你可以找找套件裏面的 I/O 壓力測試。另一方面,如果你的工作是音頻、視頻轉碼,你可以試試套件裏面的 x264 或 mp3 測試。

更新:Chris Behrens 指出, 我忘了提到 Xen 虛擬機類型了。這裏補充下,我使用的是 PVHVM 模型(LCTT譯註:目前支持的模型包括 PV、HVM 和 PVHVM),因爲在 Xen 4.3 中這個選擁有最好的性能。另外需要注意的是在 Xen 4.4 中可以使用 PVH,但是在 Fedora 20 中還沒有使用 Xen 4.4。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章