性能基準測試:KVM大戰Xen
在上周,我們對 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。
via: http://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive