最近使用的rimach上网不理想,晚上上网看视频都不过千,使用的是BBRplus, 在研究 BBRplus 内核的时候发现有个 XanMod 内核,
xanmod是一个为ubuntu或者debian设计的 自定制linux内核版本。
可以把它理解为一个汽车的发动机,这个是加强版的。
针对网络延迟进行了优化,自动开启 BBR TCP 拥塞控制 + CAKE 队列管理算法。
根据 Issue #26 介绍其实 BBRplus 和 BBR 已经没什么区别了,索性就直接安装这个内核。
说白了 bbrplus 就是改了点东西,然后那部分修改在 5.1 内核里合并进去了。
换句话说,5.1 及以上的内核里自带的 bbr 已经包含了所谓的 bbrplus 的修改
那还要 bbrplus 干嘛,直接装新内核用自带的 bbr 就行了
PS:bbr 是一直在修改的,比如说 5.0 内核的 bbr,4.15 内核的 bbr 和 4.9 内核的 bbr 其实都是不一样的。
xanmod 内核的安装可以去它们的官方网站来查询:
可以看到它们的内核分为以下几个分支,我个人觉得直接上 edge 是没什么问题的。
xanmod 内核的特性很多地方都有,官方也写的有很多,不过大多数还是以下几点:
- 改善了 CPU 调度能力
- 改善了 I/O 的调度能力
- 增加了一些和性能有关的第三方补丁
- 使用了最新的 GCC 进行编译
- 使用了最新的 MicroCode
不过根据 Phoronix 的文章来看,性能的提升还算比较明显:
https://www.phoronix.com/scan.php?page=article&item=xanmod-2020-kernel&num=1
安装的方式也比较简单,添加源并且更新安装就行了:
echo 'deb http://deb.xanmod.org releases main' | sudo tee /etc/apt/sources.list.d/xanmod-kernel.list && wget -qO - https://dl.xanmod.org/gpg.key | sudo apt-key add -
然后安装,我个人安装的是最新的 5.8.1 的 edge:
sudo apt update && sudo apt install linux-xanmod-edge
安装完毕后还可以安装最新的微码:
sudo apt update && sudo apt install linux-xanmod
如果是 AMD Yes 的话就安装这个:
sudo apt install amd64-microcode
xanmod 的内核启用了新的 CAKE 调度算法,如果你在意网络性能的话也可以启用:
echo 'net.core.default_qdisc = cake' | sudo tee /etc/sysctl.d/90-override.conf
之后重启就可以了。
开启BBR(fq_pie)
-
sed –i ‘/net.ipv4.tcp_ecn/d’ /etc/sysctl.d/99–sysctl.conf
-
sed –i ‘/net.core.default_qdisc/d’ /etc/sysctl.d/99–sysctl.conf
-
sed –i ‘/net.ipv4.tcp_congestion_control/d’ /etc/sysctl.d/99–sysctl.conf
-
sed –i ‘/net.ipv4.tcp_ecn/d’ /etc/sysctl.conf
-
sed –i ‘/net.core.default_qdisc/d’ /etc/sysctl.conf
-
sed –i ‘/net.ipv4.tcp_congestion_control/d’ /etc/sysctl.conf
-
#上面都是清除旧的配置
-
echo “net.core.default_qdisc=fq_pie” >> /etc/sysctl.d/99–sysctl.conf
-
echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.d/99–sysctl.conf
-
sysctl —system
-
reboot
检查安装
1 2 3 4 5 |
#查看CAKE是否生效
sysctl net.core.default_qdisc
#查看当前的拥塞控制算法是否为bbr
sysctl net.ipv4.tcp_congestion_control
|
优化缓冲区
根据这篇文章,更改 tcp_notsent_lowat 为 16384(16K)可以优化 web 速度。
1 2 3 4 5 |
#添加值
echo "net.ipv4.tcp_notsent_lowat = 16384" >> /etc/sysctl.conf
#查看是否成功
sysctl net.ipv4.tcp_notsent_lowat
|
暂无评论内容