Linux 升级内核开启 TCP BBR 有多大好处

如果你有订阅一些科技新闻,应该会有看过内核在4.9当中加入了一个新的算法,来解决在有一定的丢包率的情况下的带宽稳定的问题,这个是谷歌为我们带来的干货,新的 TCP 拥塞控制算法 BBR (Bottleneck Bandwidth and RTT),谷歌一向的做法是,先上生产,然后发论文,然后有可能开源,所以这个已经合并到了内核4.9分支当中,算法带来的改变在出的测试报告当中有很详细的数据展示,这个看多了可能反而不知道到底会有什么明显改变,特别是对于我们自己的场景

那么本篇就是来做一个实践的,开看看在通用的一些场景下,这个改变有多大,先说下结果,是真的非常大

实践

还是我的两台机器lab8106和lab8107,lab8106做一个webserver,lab8107模拟客户端,用简单的wget来进行测试,环境为同一个交换机上的万兆网卡服务器

我们本次测试只测试一种丢包率的情况就是1%,有兴趣的情况下,可以自己去做些其他丢包率的测试,大多数写在丢包率20%以上的时候,效果可能没那么好,这个高丢包率不是我们探讨的情况,毕竟不是常用的场景

安装新内核

内核可以自己选择4.9或者以上的进行安装,也可以用yum安装,这里只是测试,就yum直接安装

yum --enablerepo=elrepo-kernel install kernel-ml

修改启动项

grub2-editenv list
grub2-set-default 'CentOS Linux (4.9.5-1.el7.elrepo.x86_64) 7 (Core)'
grub2-editenv list

准备下载数据

准备一个web服务器然后把一个iso丢到根目录下,用于客户端的wget

设置丢包率

这里用tc进行控制的,也就是一条命令就可以了,这个还可以做其他很多控制,可以自行研究

tc qdisc add dev enp2s0f0 root netem loss 1%

如果需要取消限制

tc qdisc del root dev enp2s0f0

设置新的算法

讲下面的两个配置文件添加到/etc/sysctl.conf

net.ipv4.tcp_congestion_control=bbr
net.core.default_qdisc=fq

然后执行sysctl -p让它生效

检查是参数是否生效

[root@lab8106 rpmbuild]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno

检查模块是否开启

[root@lab8106 rpmbuild]# lsmod | grep bbr
tcp_bbr                16384  0

如果需要恢复成默认的就修改成下面这个值,然后执行sysct -p恢复默认

net.ipv4.tcp_congestion_control = cubic
net.core.default_qdisc = pfifo_fast

开始测试

为了避免磁盘本身的写入速度的影响,我们直接将数据wget到内存当中去

[root@lab8107 ~]# cd /dev/shm

写入到这个目录当中的数据就是直接写入内存的 我们先来对比下没有丢包的时候的速度

1、默认算法,无丢包率

 wget http://192.168.8.106/FreeBSD-10.2-RELEASE-amd64-dvd1.iso
2017-01-24 12:34:01 (909 MB/s) - ‘FreeBSD-10.2-RELEASE-amd64-dvd1.iso’ saved

2、BBR算法,无丢包率

wget http://192.168.8.106/FreeBSD-10.2-RELEASE-amd64-dvd1.iso
2017-01-24 12:36:21 (913 MB/s) - ‘FreeBSD-10.2-RELEASE-amd64-dvd1.iso’ saved

上面的两组数据基本一样,没有什么差别 下面的测试将丢包率控制到1%,然后继续测试

3、默认算法,1%丢包率

wget http://192.168.8.106/FreeBSD-10.2-RELEASE-amd64-dvd1.iso
2017-01-24 12:38:47 (142 MB/s) - ‘FreeBSD-10.2-RELEASE-amd64-dvd1.iso’ saved

可以看到在1%丢包率下,速度已经降为正常的1/6左右了,是一个很大的衰减

4、BBR算法,1%丢包率

wget http://192.168.8.106/FreeBSD-10.2-RELEASE-amd64-dvd1.iso
2017-01-24 12:40:25 (896 MB/s) - ‘FreeBSD-10.2-RELEASE-amd64-dvd1.iso’

可以看到在1%丢包率下,还能维持接近900MB/s的下载速度,相对于默认算法,相差了真实非常非常的大,google在很多情况下技术甩了其他公司真的是几条街了

总结

上面的测试通过一个简单的场景来验证了bbr算法对于丢包情况下的带宽的优化,这个对于一些提供下载服务,并且有一定的丢包率的场景的情况下,能够有很大的改善,所以算法对于技术的改变还是非常大的,很多时候就是这种异常情况下的差别,才是真正的差别

顺便提一下微博的技术经理@来去之间最近说的一段话:

曾经有同事问我,为啥有些新业务给老员工做,交学费,而不是市场上招人更有效率。。。俺说渣浪业务起起伏伏,如果所有战线都用雇佣兵,顺的时候势如破竹,逆的时候兵败山倒了。。公司和员工都是相互扶持的,有些新业务,员工有能力做,只是经验不足,公司多付出一些,就当给未来不顺的时候上一份保险了

所以作为管理者,是不是多考虑多留住一些老员工,多培养一些人才,少期待一些雇佣兵

要过年了,祝大家新年快乐

原文发布于微信公众号 - 磨磨谈(momotan1987)

原文发表时间:2017-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

如何提高SDN可拓展性

Software Defined Networking是一种控制平面和数据平面分离的可编程的网络架构,目前已经有许多商业落地案例。在部署SDN时,往往会因SDN...

34070
来自专栏媒矿工厂

媒体容器新标准—CMAF

1. 视频流量持续走高 随着移动互联网的快速发展,数据流量呈现出爆发式的增长,互联网传输的视频流量也呈爆炸性增长,预计未来几年将持续增长。根据2017年思科预测...

1.3K70
来自专栏WeTest质量开放平台团队的专栏

通过三次优化,我将gif加载优化了16.9%

现在app越来越炫,动不动就搞点动画,复杂的动画用原生实现起来挺复杂,如是就搞起gif播放动画的形式,节省开发成本。

13320
来自专栏非著名程序员

超级实用:小而精,优而美的开源库,开年第一篇有意思的分享

昨天是元旦,新年的第一天,估计细心的读者可能发现了,我昨天发起了一个抽奖送书活动,而且发布的时间正好是1月1号11点11分。这可不是一个巧合,这是我故意为之,是...

22760
来自专栏AI研习社

如何在 Kaggle 中高效搜索数据集?快吃下这枚安利

对于关注数据科学的同学来说,Kaggle 上庞大的数据集是一个极好的资源池,但是这么多的数据,如何进行更精准的搜索?近日,Kaggle 官方博客就刊登了 Rac...

29640
来自专栏开源FPGA

基于Xilinx FPGA的视频图像采集系统

         本站点博客将逐步迁移至http://ninghechuanblogs.cn/   本篇要分享的是基于Xilinx FPGA的视频图像采集系统,...

57190
来自专栏企鹅号快讯

2017 年度数据库:PostgreSQL 实至名归

来源:oschina www.oschina.net/news/92308/postgresql-is-the-dbms-of-the-year-2017 DB...

24180
来自专栏PPV课数据科学社区

【数据可视化专题】22个免费的数据可视化和分析工具推荐

本文总结推荐22个免费的数据可视化和分析工具。列表如下: ? 数据清理(Data cleaning) 当你分析和可视化数据前,常需要“清理”工作。比如一些输入性...

33050
来自专栏华章科技

干货 | 22个免费的数据可视化和分析工具推荐

当你分析和可视化数据前,常需要“清理”工作。比如一些输入性列表“New York City” ,同时其他人会说”New York, NY” 。因此你需要标准化这...

14640
来自专栏鹅厂网事

可视化网络路径探测HashTrace

引子 长期以来,探究网络质量和探索网络路径是广大网络工作者监控网络的必备工作,ping用于探究网络质量和traceroute用于探索路径。对于探测结果似...

71380

扫码关注云+社区

领取腾讯云代金券