虚拟化环境的性能测试,当然要用虚拟化的方法来解决,但是虚拟化环境的性能测试是非常难搞的事情,没有标准,物理服务器不一样,测出来的结果也不一样,可用于虚拟化环境性能测试的工具也很难找,目前商用的据说ixia和spirent都还行,没用过,主要是太贵,开源的也就iperf和trex,trex功能丰富,什么吞吐、新建、并发、时延都能测,我以前实践过一次,但是没整明白,目前日常使用的还是iperf,尽管只能测吞吐,就拿iperf测吞吐,也没那么简单,本周末就来总结一下。
iperf测吞吐有两种方法,一种是tcp的,另一种是udp的,
tcp的可以这样,服务端,iperf -s,客户端,iperf -c x.x.x.x -t 60 -i 10,
以一台ESXi上的VSS为例,服务端的效果是,
客户端的效果是:
udp的可以这样,服务端,iperf -s -u,客户端,iperf -c x.x.x.x -u -t 60 -i 10 -b 10000M,
还是以这台ESXi上的VSS为例,服务端的效果是,
客户端的效果是:
为啥两者测出来的吞吐性能不一样呢,咱们来抓包看看,
用tcp测试时,服务端收到的很多都是3万多字节的超大包,
而用udp测试时,服务端收到的所有都是1512字节的包,
如果你在硬件防火墙时代根据rfc2544测过性能,应该知道吞吐量一般采用udp进行测试,这样看来,在虚拟化环境内,用upd测试也是靠谱的,能把pps的准确性能测试出来,这样在不同包长下的吞吐直接算就可以了,
那么上面测试的ESXi的pps是否就是udp800M时的数呢,非也,经过验证,需要开17个这样的打流窗口,才能把这台ESXi单VSS的pps性能测出来,结果是,800M * 17 / 1512 / 8 = 1.12M pps。
领取专属 10元无门槛券
私享最新 技术干货