性能基准测试:KVM大战Xen
编译自:http://major.io/2014/06/22/performance-benchmarks-kvm-vs-xen/作者: Major Hayden
原创:LCTT https://linux.cn/article-3496-1.html译者: bazz2
原文地址:https://linux.cn/article-3496-1.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。
性能基准测试:KVM大战Xen的更多相关文章
- 一文带你速懂虚拟化KVM和XEN
来源 :蛋蛋团 前言 "云计算"这个技术经过十余年的普及到如今已经可以称得上是家喻户晓了,基于云计算平台,在多个领域内创造了一个又一个的记录:电子商务里亿万人同时在线抢购的的&qu ...
- 虚拟化之kvm与xen对比
xen XenServer is the leading open source virtualization platform, powered by the Xen Project hypervi ...
- KVM与XEN虚拟化环境究竟有何不同
虚拟化的概念在近些年收到了很大程度上的普及,求其原因很简单:虚拟化能够最大程度利用资源,为企业节约成本.目前市面较受欢迎的虚拟架构主要有KVM.XEN和VMware,其中,KVM和XEN都是免费开源的 ...
- kvm与xen虚拟化的比较(转)
Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM. 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商 ...
- [转帖]PC虚拟化主流:KVM、XEN、OpenVZ详解
PC虚拟化主流:KVM.XEN.OpenVZ详解 https://zhuanlan.zhihu.com/p/90920566 1.pc虚拟化——KVM KVM是完整的硬件虚拟化,可以在Windows ...
- js 性能基准测试工具-告别可能、也许、大概这样更快更省
平时写js经常遇到这样做是不是更快点?但又没有具体简单可测试的工具,最近也倒序看博客园司徒正美 js分类下的文章 [ps:去年灵光一闪,发现看博客园排名前100的博客.按照文章分类倒序看是学习最快的方 ...
- [转] Vmware vs Virtualbox vs KVM vs XEN: virtual machines performance comparison
http://www.ilsistemista.net/index.php/virtualization/1-virtual-machines-performance-comparison.html? ...
- 【 sysbench 性能基准测试 】
度娘解释:sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试. 目前支持的数据库支持:MySQL,pgsql,oracle 这3种数据库. 安装s ...
- ubuntu下安装使用vmware、kvm、xen
一. 概念介绍: (1)全虚拟化(Full Virtulization) 简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行, 速度会根据不同的实 ...
随机推荐
- 在小红家里面,有n组开关,触摸每个开关,可以使得一组灯泡点亮。
package april; import java.util.ArrayList; import java.util.Scanner; /** * * @ClassName: Class_9 * @ ...
- 【hive】cube和rollup函数
cube 数据立方体(Data Cube),是多维模型的一个形象的说法.(关于多维模型这里不讲述,在数据仓库设计过程中还挺重要的,有兴趣自行查阅) 立方体其本身只有三维,但多维模型不仅限于三维模型,可 ...
- 在Firefox中发现一个在Linux下查看chm文档的插件
在Firefox浏览器插件中搜索插件chmfox插件,安装后就可以在linux下通过Firefox浏览器阅读chm文档了.
- PHP:第五章——字符串过滤函数
<?php header("Content-Type:text/html;charset=utf-8"); //字符串过滤函数: //1.n12br 在所有新行之前插入Htm ...
- POJ 2251 Dungeon Master bfs 难度:0
http://poj.org/problem?id=2251 bfs,把两维换成三维,但是30*30*30=9e3的空间时间复杂度仍然足以承受 #include <cstdio> #inc ...
- IIS网页GZIP压缩
1.开GZIP有什么好处? 答:Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度. 2.如何启用IIS的Gzip压缩功能: 答:首先,如果你需 ...
- iOS笔记之线程
dispatch_after dispatch_after能让我们添加进队列的任务延时执行,比如想让一个Block在10秒后执行: var time = dispatch_time(DISPATCH_ ...
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...
- 表单验证jq.validate.js
源代码--demo Validate:function(){ var me=this; var $form = $('#form'); //添加自定义方法: 同时验证手机和座机电话 jQuery ...
- oracle创建触发器
create or replace trigger 触发器名字 触发时间 触发事件 after(before) insert or update or delete on 表名 for each r ...