前一篇寫到「Google 發表的 TCP BBR 塞車演算法」寫完就發出去了 … 有寫到要支援 Kernel 4.9,順手查一下原來 Ubuntu 16.04 跟 CentOS 7 的環境也能升到最新的 Kernel,便來測試一下
先講 Ubuntu 16.04 跟 CentOS 7 怎麼升級到 Kernel 4.9 之後
Ubuntu 16.04 upgrade kernel 4.9 later
預設 Ubuntu 16.04 的 Kernel 版本是 4.4,要升級可以執行,這是之前 CPU Meltdown / Spectre 漏洞的時候有 release 出來針對每個版本的 package:
$ sudo apt update $ sudo apt install --install-recommends linux-generic-hwe-16.04
reboot 後,查看應該要至少 4.13 之後。
$ uname -rs Linux 4.13.0-45-generic
CentOS 7 upgrade kernel 4.9 later
CentOS 7 升級 Kernel 要到 epel repository 這邊去找
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org $ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
安裝 Kernel ML
$ yum --enablerepo=elrepo-kernel install kernel-ml
reboot 後,CentOS 可以裝到 4.15 以上
$ uname -sr Linux 4.15.0-1.el7.elrepo.x86_64
Enable TCP BBR Congestion Control
在 sysctl.conf 加入 BBR 設定
$ vi /etc/sysctl.conf net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr $ sysctl -p
這樣就好了 … 有點簡單。
接下來拿 speedtest-cli 來測試,環境是在 Macbook Pro 內的兩台 Ubuntu 16.04 虛擬機,兩台不重疊交叉測試的結果:
- 沒有 BBR 的情況
Download: 72.34 Mbit/s, Upload: 14.01 Mbit/s
Download: 71.44 Mbit/s, Upload: 13.43 Mbit/s
Download: 74.02 Mbit/s, Upload: 14.01 Mbit/s
- 有 BBR 的情況
Download: 73.02 Mbit/s, Upload: 34.02 Mbit/s
Download: 72.45 Mbit/s, Upload: 28.41 Mbit/s
Download: 73.28 Mbit/s, Upload: 29.53 Mbit/s
Download 沒有太大的差異,但是 Upload 速度差了一半左右,這是在虛擬機的結果,看起來還不錯 …