kvm虚拟机_Docker容器和KVM虚拟机到底谁更优秀?

2014年7月IBM发布了一篇研究报告《Linux容器和虚拟机的性能比较》。该报告对实体机、虚拟机以及Linux Docker容器的性能进行了精准的量化及比较。

1344bc70143995f4cf077fd43020a0c3.png

对于性能测试可以有很多方面,不过对于本文所关注的只是虚拟化实例与实体机之间性能开销的差距,因为与实体机相比较可以更直观地反映出资源消耗性进程对系统资源的占用率。报告中选用了吞吐量以及延时作为两个核心性能指标进行采集,这两个指标是性能测试用例中最为典型且易于分析的要素。

实验设备采用的是IBM x3650 M4服务器。具体参数如下:

CPU:两个2.4-3.0 GHz Intel Xeon E5-2665,共16核

RAM:256 GB

LINUX:Ubuntu 13.10(saucy)64位,内核版本3.11.0

Docker 1.0,QEMU 1.5.0,libvirt 1.1.1

测试过程中节能管理被禁用,为了充分发挥系统性能。

利用微基准测试来单独测量CPU、内存、网络和存储的资源消耗,并且也对实际的应用运行场景进行测试,应用测试对象选取了:redis和mysql。

测试场景选用了:

PXZ压缩计算:压缩算法是云服务中的常用组件,PXZ是基于LZMA算法的平行无损压缩工具,使用liblzma库。LZMA是一个Deflate和LZ77算法改良和优化后的压缩算法,2001年被首次应用于7-Zip压缩工具中。

Linpack:是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。

RandomAccess:测试内存在随机的访问压力下的性能表现。

Stream:是一个简单的基线测试程序,用于测试持续的内存带宽性能。

测试结果如下表所示:

ce956c847927ac1a297679905b3c7653.png

在CPU、内存测试场景中,Docker作为轻量级容器性能表现优秀,只有很小的性能损耗。

c6f48d25507417699f9106997e953c74.png

网络配置

d6d7e75106e39612aa248c5a94d47985.png

网络小包100byte传输时延

f871c6bde4f824e7f878fc9e1b90f0ac.png

网络大包传输效率

3e92457b285963b7b901a1c6ddc52d01.png

存储配置

0ce297acc983cd9948f6322732c4d692.png

顺序IO吞吐率

037d44416fc46965e11af77a0d329cd8.png

随机IO吞吐率

3db5428cd207437735671f221ed3f943.png

Redis吞吐率

29cb77ee9e5f29bff2dbcd14c1a9c747.png

mysql吞吐率

从以上的结果中,我们得出以下结论:

虚拟机和容器基本上没有CPU和内存的额外开销,他们只会影响I/O和操作系统的交互,这是因为每次I/O操作都需要额外的周期,因此频繁的小规模I/O会对性能有较大影响。这类消耗增大了I/O延时,降低了CPU的循环效率,降低了系统的整体吞吐率。而事与愿违的是,绝大多数应用处理的还都是小I/O,这会影响容器的运行效率。

Docker加入了诸如分层镜像以及易用NAT等新特性,但这些特性的性能代价很高,因此Docker的默认设置性能不会超过虚拟机。

尽管KVM虚拟机具有良好的性能,但是配置性差是它的一个弱点。虚拟机要想达到较高的性能需要对内存、CPU、缓存进行大量的定制化配置,并需要反复的调优和试错,这种复杂的特质会对后续的运维工作造成较大的困扰。

70743981109a88622892af0e14258651.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值