先放测试结果
测的是openstack G版本上的虚拟机性能
测试结论是虚拟机的总体性能与普通笔记本差不多,但是与台式机有一定差距,特别是磁盘IO部分。
CPU
1.vmstat
vmstat 1
参数介绍
r,可运行队列的线程数,这些线程都是可运行状态,只不过 CPU 暂时不可用;
b,被 blocked 的进程数,正在等待 IO 请求;
in,被处理过的中断数
cs,系统上正在做上下文切换的数目
us,用户占用 CPU 的百分比
sys,内核和中断占用 CPU 的百分比
wa,所有可运行的线程被 blocked 以后都在等待 IO,这时候 CPU 空闲的百分比
id,CPU 完全空闲的百分比
swpd,已使用的 SWAP 空间大小,KB 为单位;
free,可用的物理内存大小,KB 为单位;
buff,物理内存用来缓存读写操作的 buffer 大小,KB 为单位;
cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位;
bi,磁盘块从文件系统或 SWAP 读取到 RAM(blocks in)的大小,block 为单位;
bo,磁盘块从 RAM 写到文件系统或 SWAP(blocks out)的大小,block 为单位;
上面是一个频繁读写交换区的例子,可以观察到以下几点:
物理可用内存 free 基本没什么显著变化,swapd 逐步增加,说明最小可用的内存始终保持在 256MB X 10% = 2.56MB 左右,当脏页达到10%的时候(vm.dirty_background_ratio = 10)就开始大量使用 swap;
buff 稳步减少说明系统知道内存不够了,kwapd 正在从 buff 那里借用部分内存;
kswapd 持续把脏页面写到 swap 交换区(so),并且从 swapd 逐渐增加看出确实如此。根据上面讲的 kswapd 扫描时检查的三件事,如果页面被修改了,但不是被文件系统修改的,把页面写到 swap,所以这里 swapd 持续增加。
2.bzip2
wget http://mirror.ihep.ac.cn/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD2.iso -O 1GB.iso
start=$(date +%s) && bzip2 -9 1GB.iso && end=$(date +%s) && echo $(( $end - $start ))
3.sysbench
安装
apt-get install sysbench
素数测试
sysbench --test=cpu --cpu-max-prime=30000 run
线程
sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
文件IO读写
sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw prepare
sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw run
sysbench --test=fileio --num-threads=16 --file-total-size=1G --file-test-mode=rndrw cleanup
4.SPECCPU2006
5.SPECjbb2005
6.UnixBench
7.SysBench
8.PCMark
只能在windows中运行
9.内核编译
可以在make时添加"-j N"参数来使用N进程协作编译
性能为同等原生系统的94.15%左右
10.Super PI
可以支持计算到小数点后32M个数据位
CPU性能为原生系统的97.17%
配置
为了防止图形界面对结果的影响,设置运行级别为3,不开启图形界面
内存
1.mbw
apt-get install mbw
mbw 1024
2.命令行
cat /proc/meminfo
3.LMbench
4.Memtest86+
5.STREAM
网络
主要性能指标是throughput,延迟, 抖动, 丢包率等等。
1.iperf
iperfiperf -s 一台作为服务器
iperf -c 202.122.39.226 -i 1 一台作为客户端
物理实际带宽1Gbps,实际能达到800多M左右
2.vps 网速测试
wget freevps.us/downloads/bench.sh -O - -o /dev/null | bash
3.netflow 跟踪
4.ethtool
apt-get install ethtool
ethtool eth0
5.netperf
apt-get install netperf
netserver
netperf -H 202.122.39.232 -l 1
使用virtio,VT-d,SR-IOV等方式的网卡虚拟化可以达到与原生系统差不多的性能
在达到相同带宽时,VT-d和SR-IOV方式占用的CPU资源比virtio少
6.tcpdump
apt-get install tcptrace
tcpdump -w network.dmp
tcptrace network.dmp
7.NETIO
8.SCP
磁盘IO
各种情况下的读写throughput,如:连续/随机/大块/小块等等。
1.dd
dd if=/dev/zero of=1GB.files bs=64k count=16k conv=fdatasync
dd if=file.dat of/dev/null iflag=direct bs=1k count=10k
dd if=/dev/zero of=dd1.dat conv=fsync oflag=direct bs=1k count=10k
2.iozone3
脚本中记得清cache
apt-get install iozone3
iozone -s 512m -r 8k -S 20480 -L 64 -I -i 0 -i 1 -i 2 -Rab iozone.xls
3.sysstat
iostat -kx 1
顺序 IO 是指同时顺序请求大量数据,比如数据库执行大量的查询、流媒体服务等,顺序 IO 可以同时很快的移动大量数据。可以这样来评估 IOPS 的性能,用每秒读写 IO 字节数除以每秒读写 IOPS 数,rkB/s 除以 r/s,wkB/s 除以 w/s. 下面显示的是连续2秒的 IO 情况,可见每次 IO 写的数据是增加的(45060.00 / 99.00 = 455.15 KB per IO,54272.00 / 112.00 = 484.57 KB per IO)。
相对随机 IO 而言,顺序 IO 更应该重视每次 IO 的吞吐能力(KB per IO):
随机 IO 是指随机请求数据,其 IO 速度不依赖于数据的大小和排列,依赖于磁盘的每秒能 IO 的次数,比如 Web 服务、Mail 服务等每次请求的数据都很小,
随机 IO 每秒同时会有更多的请求数产生,所以磁盘的每秒能 IO 多少次是关键。
4.fio
apt-get install fio
顺序读
fio -name iops -rw=read -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
其中 rw=read表示随机读,bs=4k表示每次读4k,filename指定对应的分区 direct=1表示穿越linux的缓存
顺序读,SAS总体表现是SATA硬盘的1.3倍,SSD总体表现是sata硬盘的4倍
随机读
fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
随机读,SAS总体表现是SATA硬盘的4倍,SSD总体表现是sata硬盘的一千多倍。
顺序写
测试命令:fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
同样的4KB数据包顺序写的情况下,SSD卡的成绩为592MB/S,SAS卡的成绩为190MB/S,SATA卡的成绩为124.9MB/S
本地硬盘仅为118MB/S,IOPS仅为30290
随机写
fio -name iops -rw=randwrite -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda6 -ioengine libaio -direct=1
在接下来的4KB数据包随机写操作中,
SSD卡再次展示了其高超的IO性能,高达549MB/S的随机写速率,IOPS高达140K。
SAS 2000K /s
SAT 548K /s
本地硬盘的随机读写仅为548KB/S,IOPS为134。
5.Bonie++
6.hdparm
评分测试
geekbench
wget https://www.dropbox.com/s/vhzy8rbchw6p6d9/Geekbench-3.1.3-Linux.tar.gz
unixbench
wget http://www.zhujima.com/soft/unixbench.sh;sh ./unixbench.sh;
性能优化
1.客户端操作系统中的VCPU与物理CPU进行绑定2.未启用扩展页表
测试环境
Openstack 环境
计算结点1 HP 8核 G8计算结点2 HP 4核 H9
笔记本
Intel Pentium CPU P6000 1.87GHz 联想E46A P6000
台式机
Dell OptiPlex 7010旧服务器
惠普DL 380G5
最终结果
http://wenku.baidu.com/view/1a434a89f121dd36a32d829b.html
N2(2V并双)表示 openstack 第2个计算结点 的一个2VCPU的虚拟机 4GB 内存 同时运行2个虚拟机 双任务
N2(2V并单)表示 openstack 第2个计算结点 的一个2VCPU的虚拟机 4GB 内存 同时运行2个虚拟机 单任务
N2(2V单) 表示 openstack 第2个计算结点 的一个2VCPU的虚拟机 4GB 内存 只同时运行1个虚拟机 单任务
N2(1V)表示 openstack 第2个计算结点 的一个1VCPU的虚拟机 4GB 内存 只同时运行1个虚拟机 单任务
N1(1V)表示 openstack 第1个计算结点 的一个1VCPU的虚拟机 4GB 内存 只同时运行1个虚拟机 单任务
N2(2V 双)表示 openstack 第2个计算结点 的一个2VCPU的虚拟机 4GB 内存 只同时运行1个虚拟机 双任务
N2(2V 单)表示 openstack 第2个计算结点 的一个2VCPU的虚拟机 4GB 内存 只同时运行1个虚拟机 单任务
K5(1V) 表示 旧环境的一台1VCPU 4G 的虚拟机
G5(单) 表示 旧的 惠普DL380 G5 单任务
G5(8)表示 旧的 惠普DL380 G5 8任务
参考
http://www.cpubenchmark.net/multi_cpu.html
http://mingxinglai.com/cn/2013/07/sysbench/
http://smilejay.com/2013/12/classfications-of-performance-testing/
http://www.chenshake.com/secondary-development-of-openstack-dashboard/
http://yaronspace.cn/blog/archives/1102
http://m.oschina.net/blog/159640
http://smilejay.com/2013/01/cpu-performance-test-tools/