Liuw's Thinkpad

想要赢就先学会输,想要成功就先学会失败

Archive for the ‘test’ tag

一个简单的KVM网络性能测试(续)

with one comment

一个简单的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个测试。

  1. 两个物理机通信,TCP_STREAM带宽941.40M,UDP_STREAM带宽900.29M;TCP_RR每秒完成9562.31个传输,UDP_RR每秒完成10183.35个传输。
  2. 同一物理机上的两个VM,TCP_STREAM带宽1801.36M,UDP_STREAM带宽1034.40M;TCP_RR每秒完成2736.87个传输,UDP_RR每秒完成2906.29个传输。
  3. 不同物理机上的两个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-netperf-test

Written by liuw

November 12th, 2010 at 11:53 am

Posted in Tech

Tagged with , , , , ,

一个简单的KVM网络性能测试

with one comment

硬件:曙光天潮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来测试,请期待。

Written by liuw

October 27th, 2010 at 2:57 pm

Posted in Tech

Tagged with , , , ,

What’s True?

without comments

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

Written by liuw

December 16th, 2009 at 10:44 pm

Posted in Programming,UNIX-like,分享

Tagged with ,

with one comment

http://nlp.cn/ceshi/NLPql/

你的成绩:情商2段
欢迎光临地球,爱情,对你而言这可能比折叠空间飞行更加抽象。的确,它不可揣摩,没有规律,并且极具破坏性,地球上三分之一的战争都是因它而起,嗯!爱情太恐怖,地球太危险,回你的星球数你的黑洞去吧。

Orz

Written by liuw

September 3rd, 2009 at 1:12 am

Posted in 生活

Tagged with , ,