最新的4.9内核合并了Google研发的BBR TCP阻塞算法,使用效果大概可以跟锐速相比。待4.9正式版发出前,CentOS并没有4.9的RPM包。那么我们可以手动编译内核,安装并启用。
注意:
内存小于512M的机器在编译内核bzImage的时候会出现错误。仅推荐1G内存以上的机器跑内核编译。
以下是自己编译的步骤:
先从kernel.org下载内核:
wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.9-rc8.tar.xz
解压
xz -d linux-4.9-rc8.tar.xz
tar xf linux-4.9-rc8.tar
安装必要的编译工具
sudo yum install "Development Tools" -y
sudo yum install ncurses-devel openssl-devel elfutils-libelf-devel -y
进入linux-4.9-rc8目录,配置.config
make menuconfig
选择Networking Support回车,找到Network options回车,找到TCP: Advanced congestion algorithm回车,移动到BBR按M,然后按右方向键找到Save回车两次,最后按右一直Exit退出到shell。
编译过程
首先要做编译准备
make prepare
再进行正式编译
make -j`nproc`
然后就是漫长的等待。
编译模块
虽然模块在上一步已经做好,但是为了以防万一还是检查下比较好。
make -j`nproc` modules
安装模块
sudo make modules_install
安装新内核
sudo make install
更改grub
(以下用root进行操作)
输入以下命令查看默认kernel:
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
会出现类似的列表:
0 : CentOS Linux (4.9.0-0.rc8.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux 7 Rescue f0e606d25a164f39aa306b052f38bc33 (3.10.0-327.36.3.el7.x86_64)
2 : CentOS Linux (3.10.0-327.36.3.el7.x86_64) 7 (Core)
3 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
4 : CentOS Linux (0-rescue-9720ffe2dea246599e9e8048162adebf) 7 (Core)
输入以下命令更新缺省内核
grub2-set-default 0
重启
reboot
重启后确认内核为4.9:
uname -r
修改/etc/sysctl.conf开启BBR的TCP阻塞算法。
添加或者修改以下两行:
net.core.default_qdisc = fq_codel
net.ipv4.tcp_congestion_control = bbr
即可。
注意:系统内的ipv6项并没有tcp_congestion_control一说,v4和v6用的是一样的(原文引用: IPv6 has no global variables such as tcp_*. tcp_* settings under ipv4/ also
apply to IPv6.)