Recent network performance enhancements in the Linux kernel
从 Linux 6.x 内核开始,有许多用于提升网络性能的新选项,这些内容在我们 2024 年 INDIS 研讨会1论文《近期影响 TCP 吞吐量的 Linux 改进:来自科研与教育网络的见解》2中有详细介绍。
1 https://scinet.supercomputing.org/community/indis/
2 https://fasterdata.es.net/assets/INDIS_2024_final.pdf
以下是这些改进的简要总结。
内核升级
与 5.15 内核相比,使用最新的 Linux 内核(2024 年 9 月的 6.8 版本),我们发现在广域网(WAN)上性能提升高达 38%,在局域网(LAN)上性能提升 30%。
有关安装最新受支持内核的说明,请参阅此页面3。
3 https://fasterdata.es.net/host-tuning/linux/new-kernels/
接收端硬件通用接收卸载(HW GRO)
在 Linux 6.11 系统上,对于固件版本 >= 28.42.1000 的英伟达 ConnectX-7 网卡,有新的接收端优化功能可用,其中包括接收端硬件加速的通用接收卸载(GRO)和头部-数据分离(header-data split)。英特尔和博通的其他新型网卡可能也支持此功能。
开发者的初步测试结果表明,单流测试的吞吐量提升高达 60%。
我们的初步测试结果显示,在启用接收端硬件 GRO 后,对于 9000 字节最大传输单元(MTU)的单流测试,AMD 主机的性能提升了 33%(从 40 Gbps 提升到 53 Gbps),英特尔主机的性能提升了 5%(从 62 Gbps 提升到 65 Gbps)。
对于英特尔主机上 1500 字节 MTU 的测试,吞吐量提升了惊人的 160%(从 24 Gbps 提升到 62 Gbps)。
要启用接收端硬件 GRO,请执行以下操作:
# 注意:使用硬件 GRO 时,环形缓冲区不能超过 4096。2048 字节的缓冲区效果似乎不错。
/usr/sbin/ethtool -G eth100 tx 2048 rx 2048
/usr/sbin/ethtool -K eth100 rx-gro-hw on
还要注意,在使用接收端硬件 GRO 时,使用 8000 字节的最大段大小(MSS)比使用 iperf3 默认的 MTU-40 要快约 5%。
更多详细信息即将发布。
BIG TCP
(更多详细信息即将发布。有关测试结果,请参阅 INDIS 论文)
要启用BIG TCP,以下是针对 IPv4 和 IPv6 的命令:
/usr/sbin/ip link set dev ethN gso_ipv4_max_size 150000 gro_ipv4_max_size 150000
/usr/sbin/ip link set dev ethN gro_max_size 185000 gso_max_size 185000
如果您使用的是 VLAN,还需要为每个 VLAN 运行该命令。
更多信息请访问:https://lwn.net/Articles/884104/
和 https://netdevconf.info/0x15/slides/35/BIG%20TCP.pdf
一些人建议在使用 BIG TCP 时进行如下设置:
/usr/sbin/ethtool --set-priv-flags eth100 rx_striding_rq off
总体而言,我们并未看到 BIG TCP 在吞吐量方面有显著提升,但 CPU 负载有所降低。BIG TCP 的一个问题是,它需要定制内核,以允许 MAX_SKB_FRAGS
使用更大的值,才能充分发挥其优势。
Src
https://fasterdata.es.net/host-tuning/linux/recent/
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://www.hqyman.cn/post/11891.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~