出于各种目的,我们会对云平台中的虚拟机进行测试,主要测试CPU、内存、网络、硬盘的性能。
本节简要总结各种测试场景下的常用工具
关键词:Super PI、UnixBench、memtester、memtest86+、netperf、fio、iometer、iozone、dd
1,CPU
早期的虚拟化技术不成熟,这使得虚拟机的cpu在中断和上下文切换时损耗严重,随着虚拟化技术的发展,这种性能损失已经控制的比较好了,
所以当前测试CPU的主要目的是衡量计算能力。
主要应用的测试工具有:Super PI 与 UnixBench
(1)Super PI简介
是一款cpu密集型测试工具,原理是计算圆周率π小数点后n位,统计消耗时间,来衡量CPU的计算能力(主要浮点计算能力)
(2)UnixBench
是一款系统层面的基准测试套件,特点是支持多cpu系统的测试,包括“单任务性能测试、多任务性能测试、并行处理能力测试”
测试的结果不仅取决于硬件,还受系统、开发库、编译器的影响
UnixBench的测试项目主要有9项:
dhrystone,字符串处理测试
whetstone,浮点运算效率和速度
excel throughput测试,每秒excel函数的调用次数(exec函数家族的一部分)
file copy,文件传输
pipe throughput,进程管道写pipe并读回来的次数
pipe-based context switch,管道上下文切换测试,与真实程序类似
process creation,创建子线程并立即退出
shell脚本,进程1分钟内启动并停止shell脚本的次数
system call overhead,系统调用消耗,使用getpid,进入离开内核的执行时间
graphic,2D3D简单测试
2,内存
物理机与虚拟机内存性能差异主要在占用与释放,这是因为虚拟机的内存与物理内存之间被映射了2次;
当前测试内存主要是测试内存是否有错误。
主要2款测试工具:memtester、memtest86+
(1)memtester
特点:从系统中测试内存
测试项目:随机值、异或、加减乘除等运算,结合内存大小和次数给出结果
(2)memtest86+
特点:引导一个小型系统来检测内存
3,网络
网络io是虚拟化的难点和热点,虚拟机也经常遇到网络性能瓶颈与网络稳定性的问题
常见测试用例:
tcp吞吐
tcp连接数
tcp单连接多交易
tcp发包率pps
udp吞吐
udp单连接多交易
udp发包率pps
业务模型网络模拟
推荐测试工具:netperf
(1)netperf介绍
针对tcp或udp传输的测试工具,可以进行不同模式网络性能测试:
批量数据传输模式,bulk data transfer
请求应答模式,request response
(2)网络测试的关键指标
BPS,网络吞吐量,1分钟经过网卡的数据流量
PPS,发包率,1分钟经过网卡的数据包的数量
(3)测试的常见流量模式
TCP三种:
单TCP连接,传输大数据量
单TCP连接,大连接次数
多TCP连接,每个连接对应RR模式
UDP两种:
单UDP,单向批量传输
RR模式
(4)测试参数-t的作用
指定5种测试类型:
TCP_STREAM,tcp批量传输
UDP_STREAM,udp批量传输
TCP_RR,多次交易过程
UDP_RR,多次交易过程
TCP_CRR,多连接场景
4,硬盘
硬盘测试主要测试吞吐量和iops,但是需要特别注意的是cache对磁盘io影响。
(1)常见的cache
在不同系统层面有4种:
guest os的buffer cache
host os 的buffer cache
raid卡的cache、模式
物理disk的cache、模式
所以测试结果需要注明软硬件环境、cache模式才有意义
(2)测试环境推荐
禁用物理disk的cache
禁用raid卡的weiteback cache
虚拟机硬盘模式设为writethough或direct io,以保证数据一致性
(3)测试用例推荐
1MB顺序读写——测试大数据块性能
4KB随机读写——测试并发性能
模拟业务场景,如4KB顺序写 30%,8KB随机写 50%,20%随机写
(4)测试工具:fio、iometer、iozone、dd
fio
用于基准和压力测试的io工具
支持裸设备、文件系统的测试
官方howto文档介绍的很详细,http://bluestop.org/files/fio/HOWTO.txt
iometer
主要windows系统下
iozone
针对文件系统的性能测试工具
图形展示测试结果,软件是收费的
dd
系统自带的命令,无需安装
只能测试顺序io性能
采用oflag或iflag参数指定direct sync dsync模式
最后,照例放上总结图: