ubuntu 网卡网速测试bondnetperf测试优化tcp
一、测试环境
1.用千兆网线把server和client的机器直接连接在一起;
2.关闭两台机器的iptables;
3.server端执行netserver,client端执行
实例
测两台已经做好bond4的x520网卡的速度
netperf -P 0 -v 0 -H $ip -i 10,2 -I 99,10 -t -- -m 64 -s 32768 -S 32768(其中$ip为server端ip)。
二、优化前
测试3次平均分为833.41分。
三、优化后
在server端/etc/sysctl.conf添加一行
net.ipv4.tcp_adv_win_scale=2
执行sysctl -p使其生效后再进行测试。
测试3次平均分为940.53分。
在tcp连接中,对于接收端的读缓存而言,接收到一个来自对端的tcp报文时,会使读缓存增加;当接收端的进程读取tcp流时,会使读缓存减少。netperf测试过程中server端接收tcp报文的速率受限于读缓存中实际存放tcp报文缓冲区的大小,这是因为server端进程读取tcp流的速率小于server端接收tcp报文的速率,而这会导致缓冲区逐步被占满。当缓冲区达到上限后,则不会再接收新的报文,进而限制接收tcp报文的最大速率。由此分析将net.ipv4.tcp_adv_win_scale由1改为2后分数的提升,改为2后相当于接收端读缓存实际用来存放tcp报文的缓冲区增加,从而提升接收tcp报文的速率。这与增大测试命令中-s、-S值的效果相同,而测试发现增大-s、-S的值确实会提升测试分数。
下面是测试截图
装包netperf
安装后查看自己的速度
下面开始测速
注:两台都需要装包,netperf 一台为服务端,一台为客户端
Server 端开启netserver 服务 Client 端根据对应的端口进行netperf测试
服务端:netserver -p 18887 客户端:netperf -H 10.22.11.84 -l 10 -p 18887 (目标IP 10秒测速)