VM性能的快速测试方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VM性能的快速测试方法
一 .描述
按照此前运维组制定的《VMWare测试方案》要求,针对VMWare产品ESXi5.0做了如
下测试:
1. 创建,删除虚拟机
2. 克隆虚拟机
3. P2V(物理机到虚拟的转换)
4. VMware虚拟网络配置(Vswitch)
5. HA(动态虚拟机迁移)
6. VMotion(手动虚拟机迁移)
7. VCB(统一备份)
UnixBench来评估虚拟机CPU性能,mbw来评估内存性能,iozone来评估文件IO性能,iperf来评估网络性能,pgbench来评估数据库性能
(0)安装必要的软件
假定VM的操作系统是Ubuntu,可以按照如下步骤安装必要的软件:
(1)CPU性能测试
我们使用UnixBench来进行CPU性能测试。UnixBench是一套具有悠久历史的性
能测试工具,其测试结果反映的是一台主机的综合性能。从理论上来说UnixBench测
试结果与被测试主机的CPU、内存、存储、操作系统都有直接的关系。但是根据我们
的观察,对于现代的计算机系统来说,UnixBench测试结果受CPU 处理能力的影响更
大一些。因此,在这里我们用UnixBench测试结果来代表虚拟机的vCPU 处理能力。
每个UnixBench测试结果包括两个数据,一个是单线程测试结果,另一个是多线程测
试结果(虚拟机上有几颗虚拟CPU,就有几个并发的测试线程)。
cd ~/UnixBench
./Run
下面是一个可供参考的测试结果。在这个测试中使用了两台物理机,每台物理机
各配置一颗Intel Core i3 540 @ 3.07 GHz (双核四线程),16 GB内存(DDR3 @ 1333 MHz),一块Seagate ST2000DL003-9VT1硬盘(SATA,2TB,5900RPM),运行Ubuntu 10.04 AMD64 Server操作系统,使用的文件系统为ext4,使用的Hypervisor
为KVM(qemu-kvm-0.12.3)。我们分别测试了宿主机、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在本地磁盘上的虚拟机、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在NFS上的虚拟机的CPU性能。虚拟机的配置为2 颗vCPU
(占用两个物理线程,也就是一个物理核心)和4 GB内存,运行Ubuntu 12.04
AMD64 Server操作系统。在这个测试中没有对操作系统、文件系统、NFS、KVM等等进行任何性能调优。
从如上测试结果可以看出,在没有进行任何性能调优的情况下,在单线程CPU性
能方面,宿主机 >> 本地磁盘上的虚拟机 >> NFS服务上的虚拟机;在多线程CPU性
能方面,宿主机 >> 本地磁盘上的虚拟机= NFS服务上的虚拟机。需要注意的是,
在多线程测试结果方面,宿主机所占的优势完全是由于宿主机比虚拟机多占用了两个
物理线程,也就是一个物理核心。可以认为,在如上所述测试中,物理机和虚拟机的CPU性能基本上是一致的,虚拟化基本上没有导致CPU性能损失。
(2)文件IO性能测试
我们使用iozone来进行文件IO性能测试。iozone性能测试结果表示的是文件
IO的吞吐量(KBps),但是通过吞吐量可以估算出IOPS.在如下命令中,我们评估的
是以256K为数据块大小对文件进行写、重写、读、重读、随机读、随机写性能测试,在测试过程当中使用/io.tmp作为临时测试文件,该测试文件的大小是4 GB.需要注意的是,命令中所指定的测试文件是带路径的,因此我们可以测试同一虚拟机上不同文
件系统的性能。例如我们通过NFS将某一网络共享文件系统挂载到虚拟机的/mnt目录,那么我们可以将该测试文件的路径设定为/mnt/io.tmp.
cd ~/iozone3_414/src/current
./iozone -Mcew -i0 -i1 -i2 -s4g -r256k -f /io.tmp
下面是一个可供参考的测试结果。在这个测试中使用了两台物理机,每台物理机
各配置一颗Intel Core i3 540 @ 3.07 GHz (双核四线程),16 GB内存(DDR3 @ 1333 MHz),一块Seagate ST2000DL003-9VT1硬盘(SATA,2TB,5900RPM),运行Ubuntu 10.04 AMD64 Server操作系统,使用的文件系统为ext4,使用的Hypervisor
为KVM(qemu-kvm-0.12.3)。我们分别测试了宿主机、NFS、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在本地磁盘上的虚拟机、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在NFS上的虚拟机、以及从虚拟机内部挂载宿主
机NFS服务(虚拟网卡启用了virtio)的磁盘IO性能。虚拟机的配置为2 颗vCPU
(占用两个物理线程,也就是一个物理核心)和4 GB内存,运行Ubuntu 12.04
AMD64 Server操作系统。在这个测试中没有对操作系统、文件系统、NFS、KVM等等进行任何性能调优。
从如上测试结果可以看出,在如上所述特定测试场景中,在文件IO性能方面,
宿主机 > NFS > 虚拟机中的NFS > 本地磁盘上的虚拟机 >NFS服务上的虚拟机。值得注意的是,即使是从虚拟机中挂载NFS服务,其文件IO性能也远远超过本地磁盘上的虚拟机。
[特别说明]需要注意的是,当我们说文件(或者磁盘)IO性能的时候,我们指
的通常是应用程序(例如iozone)进行文件读写操作时所看到的IO性能。这个性能
通常是与系统相关的,包括了多级缓存(磁盘自身的缓存机制、操作系统的缓存机制)的影响,而不仅仅是磁盘本身。利用iozone进行文件IO性能测试时,测试结果与主
机的内存大小、测试数据块的大小、测试文件的大小都有很大的关系。如果要全面地
描述一个特定系统(CPU、内存、硬盘)的文件IO性能,往往需要对测试数据块的大
小和测试文件的大小进行调整,进行一系列类似的测试并对测试结果进行全面分析。
本文所提供的仅仅是一个快速测试方法,所提供的测试参数并没有针对任何特定系统
进行优化,仅仅是为了说明iozone这个工具的使用方法。如上所述之测试数据,仅仅在如上所述之测试场景下是有效的,并不足以定性地说明任何虚拟化场景下宿主机和
虚拟机的文件IO性能差异。建议读者在掌握了iozone这个工具的使用方法的基础上,对被测试对象进行更加全面的测试。(感谢saphires网友的修改建议。)
(3)内存性能测试
我们使用mbw来测试虚拟机的内存性能。mbw通常用来评估用户层应用程序进行
内存拷贝操作所能够达到的带宽(MBps)。
mbw 128
下面是一个可供参考的测试结果。在这个测试中使用了两台物理机,每台物理机
各配置一颗Intel Core i3 540 @ 3.07 GHz (双核四线程),16 GB内存(DDR3 @ 1333 MHz),一块Seagate ST2000DL003-9VT1硬盘(SATA,2TB,5900RPM),运行Ubuntu 10.04 AMD64 Server操作系统,使用的文件系统为ext4,使用的Hypervisor
为KVM(qemu-kvm-0.12.3),虚拟机运行Ubuntu 12.04 AMD64 Server操作系统。我
们分别测试了宿主机、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在本
地磁盘上的虚拟机、磁盘映像以文件格式(RAW格式,没有启用virtio)存储在NFS
上的虚拟机的内存性能。虚拟机的配置为2 颗vCPU(占用两个物理线程,也就是一个物理核心)和4 GB内存。在这个测试中没有对操作系统、文件系统、NFS、KVM等等
进行任何性能调优。