几种开源虚拟产品的性能比较

周末看了一篇 Virtualization of Linux servers,这篇论文测试了当前几个主要开源虚拟产品的性能,刚好配合前段时间看的几种不同虚拟技术的隔离性能。虚拟机的性能和隔离性都是虚拟技术非常重要的性能指标,大面积测试和比较不同的产品需要消耗大量的时间和精力,这篇文章在前人的基础上较全面测试了 Linux 下不同虚拟产品的性能,涉及到的有 KQEMU、KVM、Linux-VServer、OpenVZ、VirtualBox、Xen.

测试方法

整个测试在一台 IBM/Lenovo Desktop PC 上进行,这台 PC 配有 Intel Core 2 Duo 6300 处理器,4GB 内存和 80GB SATA 硬盘。服务器(host)操作系统是 Ubuntu 7.10,内核是 2.6.22-14,虚拟机(guest)操作系统是 Ubuntu 6.10. 网络部分的测试则通过另外一台 PC 来进行。使用的测试软件和参数如下:

Kernel Build
$ make defconfig
$ date +%s.%N && make && date +%s.%N
$ make clean

Dbench
$ /usr/local/bin/dbench -t 300 -D /var/tmp 100

Netperf
$ netserver # server side
$ netperf -H # client side

Rsync
Experiment 1:
$ date +%s.%N && rsync -av ::kernel /var/tmp && date +%s.%N # client side
# where ’kernel’ is the linux-2.6.22.14 file tree (294M)
$ rm -fr /var/tmp/*
Experiment 2:
$ date +%s.%N && rsync -av ::iso /var/tmp && date +%s.%N # client side
# where ’iso’ is ubuntu-6.06.1-server-i386.iso (433M)
$ rm -fr /var/tmp/*

Dd
Experiment 1:
$ dd if=/opt/iso/ubuntu-6.06.1-server-i386.iso of=/var/tmp/out.iso
$ rm -fr /var/tmp/*
Experiment 2:
$ dd if=/dev/zero of=/dev/null count=117187560 # 117187560 = 60G

Bzip2
$ cp /opt/ubuntu-6.06.1-server-i386.iso .
$ date +%s.%N && bzip2 -9 ubuntu-6.06.1-server-i386.iso && date +%s.%N
$ rm ubuntu-6.06.1-server-i386.iso.bz2

SysBench
$ mysql> create database sbtest;
$ sysbench –test=oltp –mysql-user=root –mysql-host=localhost –debug=off prepare
$ sysbench –test=oltp –mysql-user=root –mysql-host=localhost –debug=off run

测试结果

  • kernel build:内核编译是个长时间重负荷的 CPU 处理过程,期间还会涉及到多线程处理和小文件的读写操作。使用 OS-level 和 para-virtualization 技术的虚拟产品性能较好,接近 Linux.
  • dbench:是个文件系统测试工具,用来测试文件服务器的负载,Linux-VServer 在这项测试中大比分胜出,VirtualBox 则在这项测试中不明原因的 crash,其余产品的测试结果均比 Linux 低约30%.
  • netperf:是用来测试网络性能的工具,使用 TCP 包流来测试网络数据交换的性能。这项测试中基于 QEMU 的虚拟产品性能较差,VirtualBox 在这项测试中表现较好,可能和 VirtualBox 使用一个特别的网络驱动有关。
  • rsync:也是用来测试网络。OpenVZ 最好,KVM 最差,其余几个差不多。
  • dd:用来测试磁盘 I/O 的性能,不用涉及太多的 CPU. Xen 和 KVM 性能较好,OpenVZ 明显很慢。
  • bzip2:压缩也是个重负荷 CPU 的工作,但是不用磁盘频繁 IO 操作。除了 KQEMU 和 OpenVZ 外,其余几个虚拟机性能接近 Linux.
  • sysbench:数据库服务器测试。在这个测试中,Linux-VServer 和 Xen 性能接近 Linux,而 KVM 和 OpenVZ 性能只有他们的一半。
  • scale:在最后一项也是最考验虚拟技术的 scale 测试中(sysbench at scale),Xen 表现优异,其他几个虚拟产品在虚拟机数目达到32个的时候,性能大大降低,只有 Xen 能在扩大虚拟机数目的同时保持较好的性能损失。KVM 在8个虚拟机的时候表现最好,VirtualBox 在16个的时候表现最好,其余产品在虚拟机数目达到4个的时候表现最好。

sysbench-at-scale

总的来说,Xen 除了在 dbench 文件系统测试中有点落后外,在其余所有的测试中都表现不俗,尤其是在最后的 scale 测试中表现惊艳。

评论 (2 Comments)

  1. 博主您好,请问您测试过在openvz和xen中,相同硬件资源的条件下,web静态访问的性能吗?

  2. 这两个完全不同,很难做到性能的公平测试,拿 kvm 和 xen 可能更容易比较一些。我主要是关心稳定,测试的时候 openvz 会在多个虚拟机同时运行的时候挂,尤其是 vps >60 的时候经常挂掉(测的不只是 web)。

发表评论