CentOS 7安装4.9内核开启BBR

最新的4.9内核合并了Google研发的BBR TCP阻塞算法,使用效果大概可以跟锐速相比。待4.9正式版发出前,CentOS并没有4.9的RPM包。那么我们可以手动编译内核,安装并启用。


注意:
内存小于512M的机器在编译内核bzImage的时候会出现错误。仅推荐1G内存以上的机器跑内核编译。

已编译好的RC内核:http://elrepo.org/people/ajb/devel/kernel-ml/el7/x86_64/RPMS/

以下是自己编译的步骤:

  1. 先从kernel.org下载内核:
wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.9-rc8.tar.xz
  1. 解压
xz -d linux-4.9-rc8.tar.xz
tar xf linux-4.9-rc8.tar
  1. 安装必要的编译工具
sudo yum install "Development Tools" -y
sudo yum install ncurses-devel openssl-devel elfutils-libelf-devel -y
  1. 进入linux-4.9-rc8目录,配置.config
make menuconfig

选择Networking Support回车,找到Network options回车,找到TCP: Advanced congestion algorithm回车,移动到BBR按M,然后按右方向键找到Save回车两次,最后按右一直Exit退出到shell。

  1. 编译过程

首先要做编译准备

make prepare

再进行正式编译

make -j`nproc`

然后就是漫长的等待。

  1. 编译模块

虽然模块在上一步已经做好,但是为了以防万一还是检查下比较好。

make -j`nproc` modules
  1. 安装模块
sudo make modules_install
  1. 安装新内核
sudo make install
  1. 更改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
  1. 重启
reboot

重启后确认内核为4.9:

uname -r
  1. 修改/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.)

删除编译的内核,参考此文:http://askubuntu.com/questions/594443/how-can-i-remove-compiled-kernel

作者:小老外

我还需要不断地学习。

8条评论

  1. 请问你测了fq跟fq_codel在BBR上表现的区别了吗?

  2. 进入linux-4.9-rc8目录,配置.config是什么意思呢,make prepare似乎也没有这条语句

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据