IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux 6.8 网络优化, 大量并发连接的TCP性能提高40%左右

    smallnest发表于 2024-01-14 09:41:04
    love 0

    除了通常的新有线/无线网络硬件支持和大型 Linux 网络子系统中的其他例行变动之外,Linux 6.8 内核还对核心网络代码进行了一些关键改进,当遇到许多并发网络连接时,TCP 性能可以提高 ~40%。

    首先,对核心网络结构进行了分析和重组。这项工作一直围绕着优化缓存行的使用和添加保护措施,以确保未来的更改不会倒退。反过来,这种对核心网络结构的优化导致许多并发连接的 TCP 性能提高了 40% 或更多!

    Google 的 Coco Li 解释了他们对网络代码的 cachline 优化工作:

    当前,网络栈中的变量密集结构按时间顺序、逻辑顺序组织,有时按缓存行访问组织。这个补丁系列试图重新组织核心网络栈变量,以在数据传输阶段最小化缓存行消耗。具体来说,我们研究了TCP/IP栈和TCP中的快速路径定义。
    出于文档目的,我们还为我们考虑的每个核心数据结构添加了新的文件,尽管由于现有缓存行跨度的数量,并非所有在快速路径上都已被修改。在文档中,我们记录了我们在快速路径上识别的所有变量及原因。我们还希望在未来添加/修改变量时,可以参考并相应地更新文档,以反映最新变量组织。

    测试:我们的测试使用neper tcp_rr测试tcp流量。测试具有$cpu数量的线程和可变数量的流量(见下文)。测试在6.5-rc1上运行 效率计算为cpu秒数/吞吐量(一个tcp_rr往返行程)。下面的结果显示在应用补丁系列之前和之后的效率delta。

    • 在AMD平台上, 100Gb/s 的网卡和 256Mb 三级缓存:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    IPv4
    Flows with patches clean kernel Percent reduction
    30k 0.0001736538065 0.0002741191042 -36.65%
    20k 0.0001583661752 0.0002712559158 -41.62%
    10k 0.0001639148817 0.0002951800751 -44.47%
    5k 0.0001859683866 0.0003320642536 -44.00%
    1k 0.0002035190546 0.0003152056382 -35.43%
    IPv6
    Flows with patches clean kernel Percent reduction
    30k 0.000202535503 0.0003275329163 -38.16%
    20k 0.0002020654777 0.0003411304786 -40.77%
    10k 0.0002122427035 0.0003803674705 -44.20%
    5k 0.0002348776729 0.0004030403953 -41.72%
    1k 0.0002237384583 0.0002813646157 -20.48%
    • 在Intel平台上, 200Gb/s 的网卡和 205Mb 三级缓存:
    1
    2
    3
    4
    5
    6
    7
    IPv6
    Flows with patches clean kernel Percent reduction
    30k 0.0006296537873 0.0006370427753 -1.16%
    20k 0.0003451029365 0.0003628016076 -4.88%
    10k 0.0003187646958 0.0003346835645 -4.76%
    5k 0.0002954676348 0.000311807592 -5.24%
    1k 0.0001909169342 0.0001848069709 3.31%

    对于Intel的服务器,优化不是那么明显,但是对于对于AMD EPYC服务器而言,这是一个天使般的改进,它们的网络性能提高了 40% 左右,这是一个巨大的提升。

    相关的优化补丁可以查看Analyze and Reorganize core Networking Structs to optimize cacheline consumption, 主要由谷歌的Coco Li提交。

    tcp的优化已经实现了,udp的优化还会远吗?



沪ICP备19023445号-2号
友情链接