对KVM虚拟机可扩展性测试,主要是指随着虚拟机的数量的增加,虚拟机的在CPU利用率、内存使用、磁盘IO和网络IO的性能是否表现良好,最后能够给出在物理机一定硬件条件下,可运行的虚拟机的数目的最佳指标。
在具体的设计方案上,在物理机上分别启动1到16个虚拟机,然后从CPU利用率、磁盘IO和网络IO三个方面进行分析,这里需要说明下没有测试内存使用的情况的原因:针对KVM来说,分配给虚拟机的内存大小是事先指定,加入分配512M内存,则虚拟机的物理内存就是512M内存,分析意义不大;
1, CPU利用率测试上
在测试虚拟机CPU利用率方面,主要是CPU密集型的软件进行测试,计算最终的执行时间;例如内核的编译或者bzip2对大文件进行压缩,都是CPU计算性。本次测试选用bzip2 对1.8G的镜像文件进行压缩,计算最终的执行时间。
date+%s.%N && bzip2 ?9 windows_2003_server.img && date +%s.%N |
2, 磁盘IO测试
测试磁盘IO的话,我选择用的是Bonnie++ 软件,并发地从虚拟机1台到16台的进行测试,执行命令如下:
./bonnie++ -d ~/test ?s 1000 |
3, 网络IO测试
鉴于如果使用网卡类型如rtl8139或者e1000,效率非常低,所以本次测试网卡类型都是基于virtio网卡类型,然后并发地从物理机到1到16台虚拟机进行并发通信,主要是利用nertperf软件进行测试.
测试环境物理主机硬件配置
1, 8核Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
2, 16G内存
3, 1.4T硬盘
4, 千兆以太网卡
物理主机的软件配置
1,64Bit CentOS 5.3 2.6.18-128.el5
2,kvm-88
虚拟机分配的硬件配置
1, 单核CPU
2, 512M内存
3, Virtio 网卡
4, qcow2 format 增量镜像
虚拟机的软件配置
1,8.04 ubuntu系统
测试数据1, CPU执行时间
上面这图例说明,随着虚拟机数目的增加,CPU执行时间在5-9虚拟机时呈现一种稳定的状态,但是当虚拟机达到10个时,CPU执行时间呈现较大的增长,然后在10-12个虚拟机时呈现稳定装填,当虚拟机数目到达13以上,CPU时间呈增长趋势。
第一个这个图例说明,在虚拟机的数目达到8个时,执行bzip命令的时间基本上是相同的,也就是说在CPU调度方面达到了均衡,平均分配CPU时间;但是在虚拟机的数目达到9个时,每个虚拟机的CPU执行时间出现了波动,有的执行的时间长,有的执行时间短,CPU没有达到调度平衡。
2,网络IO数据
由实验数据可知,使用virtio技术,虚拟机的网络吞吐,随着虚拟机数量的增加,实际网络IO基本达到理想的网络IO的水平,即如果物理网卡是千兆网卡,虚拟机的网络IO吞吐为100M/n,n代表同一台物理机上虚拟机的数量.
3,磁盘IO数据
上面两个图分别代表对虚拟机进行磁盘的Block Read Write操作的结果,由图可知,磁盘的并发写操作的效率随着虚拟机数目的增加下降的快,而并发读操作下降的不是很明显,当虚拟机的数目达到10时,磁盘的并发读操作急剧下降,可以作为分隔点 (Bonnie++ 软件把字符和块测试放到一起,这里我只列出了block读写的数据,测试数据是否准确有待进一步验证)。
结论通过对虚拟机的CPU执行时间、网络IO和磁盘IO的测试,在现有硬件条件支持下,KVM虚拟机的数量在维持在8-10个是较稳定的状态,各个虚拟机的衡量指标达到比较稳定的值。
在这种物理主机硬件配置条件下
1, 8核Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
2, 16G内存
3, 1.4T硬盘
4, 千兆以太网卡
建议KVM虚拟机的配置:
1, 单核CPU (多核性能未测试)
2, 1G内存 (物理内存完全可以满足需求,所有可以开的大一些)
3, 百兆网卡 virtio
单台物理机启动虚拟机的数目在8-10左右,建议为8个虚拟机