Theme NexT works best with JavaScript enabled
概述:
测试准备:
1
2
$ uname -r
4.8.6-x86_64-linode78
1
2
# uname -r
4.8.6-x86_64-linode78
测试方式:
模拟丢包1%-30%的场景,分别测试不同内核开启BBR先后的情况。
用到的tc指令: 1
2
3
4
5
6
7
8
# 清理tc规则:
tc qdisc del root dev eth0
# 模拟1%丢包:
tc qdisc add dev eth0 root netem loss 1%
# 模拟10%丢包:
tc qdisc add dev eth0 root netem loss 10%
# 模拟30%丢包:
tc qdisc add dev eth0 root netem loss 30%
测试从从ADDR02传数据到ADDR01,ADDR01的内核不变,ADDR02在每次测试都会调整内核重启。 测试过程:
步骤略,test.gz约160MB,过程大致如下:
没有启用BBR的情况,从ADDR02传数据到ADDR01: 1
2
3
4
5
6
$ rsync -ave "ssh -l mickey" --progress test.gz [email protected] :/home/mickey/test.gz
sending incremental file list
test.gz
166042909 100% 3.27MB/s 0:00:48 ( xfer#1, to-check= 0/1)
sent 166063274 bytes received 31 bytes 3288382.28 bytes/sec
total size is 166042909 speedup is 1.00
4.8.6-x86_64-linode78 4.9.15-x86_64-linode78 非linode的官方4.10内核(generic) 没有启动BBR正常情况 3.27MB/s 3.36MB/s 没有测试 启动BBR正常情况 没有测试 3.45MB/s 2.31MB/s 启动BBR丢包1% 3.19MB/s 没有测试 没有测试 启动BBR丢包10% 没有测试 3.21MB/s 2.81MB/s 启动BBR丢包30% 97.30kB/s(在20分钟内没有传输完成中断得到的最后结果) 1.35MB/s 1.15MB/s
测试总结和当时情况(以上述结果来总结):
linode自己编译的内核有明显针对性优化,效果比较明显. 启动bbr后在丢包30%的情况下还能完成传输,bbr的效果也比较明显; 4.10内核选择了generic没有选择lowlatency. 本来还打算测50%的丢包.但是50%设置后几乎无法远程操作ADDR01而放弃测试. 附录:
1
2
3
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo= elrepo-kernel install kernel-ml -y
1
2
3
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
grub2-set-default 0 #default 0表示第一个内核设置为默认运行, 选择最新内核就对了
reboot
1
2
3
4
modprobe tcp_bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p