Archive for the ‘test’ tag
一个简单的KVM网络性能测试(续)
在一个简单的KVM网络性能测试里面,我用wget和nc对使用VirtIO的KVM虚拟机进行了一些网络性能的测试。但是从观察到的情况来看,得到的数据不能完全说明问题,毕竟不是用通用的测试软件来做的。所以这次使用netperf-2.4.5再测试一次。
还是和上次一样的软硬件配置,进行了三个配置的测试:1. 两个物理机通信;2. 同一物理机上的两个VM通信;3. 不同物理机上的两个VM通信。
每个测试配置中,一台开启netserver,另外一台使用netperf进行连接。样例脚本如下:
#!/bin/sh
TESTS=("TCP_STREAM" "UDP_STREAM" "TCP_RR" "UDP_RR")
for ((i=0;i<${#TESTS[@]};i++))
do
netperf -t "${TESTS[i]}" -H "$SERVER" -l 120 > netperf_"$TYPE"_"${TESTS[i]}"
done
在对同一物理机上两个VM进行测试时,第一次测试时两个VM的网卡都hang掉了,物理机的网桥还是好的。重启两个VM之后恢复正常。不知道这算不算是一个bug。
对每个配置进行了4个测试。
- 两个物理机通信,TCP_STREAM带宽941.40M,UDP_STREAM带宽900.29M;TCP_RR每秒完成9562.31个传输,UDP_RR每秒完成10183.35个传输。
- 同一物理机上的两个VM,TCP_STREAM带宽1801.36M,UDP_STREAM带宽1034.40M;TCP_RR每秒完成2736.87个传输,UDP_RR每秒完成2906.29个传输。
- 不同物理机上的两个VM,TCP_STREAM带宽550.59M,UDP_STREAM带宽909.48M;TCP_RR每秒完成2049.98个传输,UDP_RR每秒完成2117.30个传输。
Request/Response测试中,payload的大小都是1B;STREAM测试中,TCP payload的大小是16KB,UDP payload的大小是64KB。所以RR测试主要是考查机器处理中断的能力;STREAM主要是考查传输带宽。
配置2中的UDP_STREAM第一次测试只有64M带宽,令人吃惊的小。再次进行测试后变为1034.40M。
和原来的简单测试类似,在TCP_STREAM测试中,配置2的带宽超出了物理网卡的极限——数据只在网桥内进行交换,而且中断次数不是太多。不同物理机上的TCP_STREAM带宽只有物理网卡的一半多点。
在RR测试中,虚拟机完全落败于物理机。虚拟机的调度还有极长的中断处理路径是最大的软肋。
一个简单的KVM网络性能测试
硬件:曙光天潮TC2600,CB-65F刀片,Broadcom NetXtreme BCM5715S千兆网卡。
软件:RHEL 5.5,KVM 83。
所有虚拟网卡都以VirtIO模型启动,目前看到的报告是VirtIO的性能比较好。
测试很简单。
host1% nc -l 8000 < /dev/zero host2% wget target:8000 -O /dev/null
- 两个物理机,稳定112M/s,接近千兆网卡的极限。
- 同一物理机上的两个VM,稳定200M/s。
- 不同物理机上的两个VM,稳定40M/s,峰值80M/s。
host1% nc -l 8000 < /dev/urandom host2% wget target:8000 -O /dev/null
- 两个物理机,稳定6.8M/s。
- 同一物理机上的两个VM,稳定3.44M/s。
- 不同物理机上的两个VM,稳定3.40M/s。
很有趣的结果。其实我用iptraf看了一下,在zero的情况下,真正的outgoing rate是很低的。虽然wget报的数据很吓人,但是实际上的数据率没有超过10M/s。而且ifconfig看到的RX也与wget累积计数不合。发现VirtIO的一个可能的bug,网卡的TX/RX到4G多一点的时候就会清0。
这样的测试没什么典型性,下一步考虑用Netperf来测试,请期待。
What’s True?
A bash(1) script, from Advanced Bash-Scripting Guide.
#!/bin/bash
echo
if [ 0 ]; then
echo "0 is true"
else
echo "0 is false"
fi
echo
if [ 1 ]; then
echo "1 is true"
else
echo "1 is false"
fi
echo
if [ -1 ]; then
echo "-1 is true"
else
echo "-1 is false"
fi
echo
if [ ]; then
echo "NULL is true"
else
echo "NULL is false"
fi
echo
if [ xyz ]; then
echo "random string is true"
else
echo "random string is false"
fi
echo
if [ $uninit_var ]; then
echo "Uninitialized variable is true"
else
echo "Uninitialized variable is false"
fi
echo
if [ -n "$xyz" ]; then
echo "Uninitialized variable is true"
else
echo "Uninitialized variable is false"
fi
xyz=
echo
if [ -n "$xyz" ]; then
echo "Null variable is true"
else
echo "Null variable is false"
fi
echo
if [ "false" ]; then
echo "\"false\" is true"
else
echo "\"false\" is false"
fi
echo
exit 0
惨
http://nlp.cn/ceshi/NLPql/
你的成绩:情商2段
欢迎光临地球,爱情,对你而言这可能比折叠空间飞行更加抽象。的确,它不可揣摩,没有规律,并且极具破坏性,地球上三分之一的战争都是因它而起,嗯!爱情太恐怖,地球太危险,回你的星球数你的黑洞去吧。
Orz