尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

# RDMA MTU 实验:把 MTU 从 1500 调到 9000,到底能提升多少带宽?

# RDMA MTU 实验:把 MTU 从 1500 调到 9000,到底能提升多少带宽?
📅 发布时间:2026/7/8 23:31:39

关键字:RDMA MTU、巨型帧、Jumbo Frame、9000 MTU、perftest msg_size MTU 关系


一、问题动机

实验测试全程用默认 MTU1500(标准以太网),发现:

  • QP=1, msg=4KB 跑出 77.68 Gb/s
  • QP=1, msg=4KB, bidir 跑出128.44 Gb/s

MTU=1500 在小包场景下会有分片开销。

  • 4KB / 1500B = 3 个 IP 分片
  • 64KB / 1500B =44 个分片
  • 每个分片都要单独的包头(Ethernet + IP + UDP + RoCE v2 = 至少 78 字节)

如果把 MTU 改成 9000(巨型帧 / Jumbo Frame)呢?


二、MTU 是什么?

2.1 一句话定义

MTU(Maximum Transmission Unit)是单个网络包能承载的最大数据量(不含包头)。

2.2 类比

快递包裹的尺寸限制:

  • MTU=1500 =小包裹(每次只能装 1.5kg),分批发
  • MTU=9000 =大包裹(一次能装 9kg),少发货次

包头 vs 包体:

  • 每个网络包 =78 字节包头(Ethernet 14 + IP 20 + UDP 8 + RoCE v2 36)+MTU 字节数据
  • MTU 越大 →包头占比越小→传输效率越高

2.3 不同 MTU 下 4KB 数据需要的包数

MTU4KB 数据需要包头总开销实际包数
15003 个包3 × 78 = 234 字节数据 + 234B
40961 个包1 × 78 = 78 字节数据 + 78B
90001 个包1 × 78 = 78 字节数据 + 78B

注意:MTU=4096 跟 MTU=9000 对 4KB 数据"看起来"一样(都是单包),但 MTU=9000 给 CPU 更少的中断次数(用于更大包)。


三、实验方法

配置:

  • 2 × cx8(200GbE RoCE v2)
  • ib_write_bw + perf stat
  • QP=1, 4(验证甜点)
  • msg_size: 4KB, 64KB, 1MB(3 个量级)
  • MTU:1500 vs 9000(对比)
  • test_duration: 15 秒

配置方法:

# 改 MTU(需重启网络或下拉接口)iplinkseteth1 mtu9000iplinkseteth2 mtu9000# 测完后还原iplinkseteth1 mtu1500iplinkseteth2 mtu1500

四、测试结果

4.1 完整数据(12 个配置点)

MTUQPmsg_sizeBW (Gb/s)IPCL1_dc_missctx_switch
150014KB60.762.31936.8M149
1500164KB47.942.4029.4M141
150011MB50.942.5131.9M105
150044KB50.202.71540.1M162
1500464KB50.312.9618.6M162
150041MB50.893.0262.7M388
900014KB74.91⭐2.18745.8M118
9000164KB51.552.4568.1M160
900011MB51.772.5262.0M270
900044KB52.062.69941.8M160
9000464KB51.462.9708.5M259
900041MB50.093.0202.6M161

4.2 MTU=9000 vs MTU=1500 对比

配置MTU=1500MTU=9000提升
QP=1, msg=4KB60.7674.91+23.3%⭐
QP=1, msg=64KB47.9451.55+7.5%
QP=1, msg=1MB50.9451.77+1.6%
QP=4, msg=4KB50.2052.06+3.7%
QP=4, msg=64KB50.3151.46+2.3%
QP=4, msg=1MB50.8950.09-1.6%

4.3 ASCII 图(BW vs msg_size,QP=1,MTU 对比)

BW (Gb/s) 80 ┤ ● ← MTU 9000, msg=4KB = 74.91 75 ┤ 70 ┤ 65 ┤ 60 ┤ ● ← MTU 1500, msg=4KB = 60.76 55 ┤ 50 ┤ ● ● ← 平台期 45 ┤ ●(1500) ← MTU 1500 + 64KB = 47.94(异常) └──┬──┬──┬─► msg_size 4K 64K 1M

五、根因分析

5.1 为什么 MTU=9000 在 4KB 时提升 23%?

MTU=1500 + 4KB 数据:

  • 4KB / 1464B (1500 - 36 包头) =3 个 IP 分片
  • 每次 DMA 处理 1464B + 包头 →3 次 PCIe 事务
  • CPU 3 次中断处理 →3 次 L1 cache 访问

MTU=9000 + 4KB 数据:

  • 4KB / 8964B =1 个包
  • 单次 DMA → 单次 PCIe → 单次中断 →单次 cache 访问
  • 包头开销从 234B 降到 78B(省 67%)

理论提升:

  • (4096 + 234) / (4096 + 78) = 4330 / 4174 =1.037 倍(包头节省)
  • 但实际看到 1.23 倍提升 →分片整合带来的 CPU 调度节省比单纯包头开销大

5.2 为什么 MTU=1500 + msg=64KB 跌到 47.94?

64KB / 1500B = 44 个 IP 分片

每个分片都是独立的 PCIe DMA + 中断处理:

  • 64KB 数据实际传输 = 64KB + 44×78B =67.4KB 物理流量
  • 44 次中断 → CPU 调度开销巨大

MTU=9000 + msg=64KB:

  • 64KB / 8964B =8 个包
  • 8 次中断 vs 44 次中断 →CPU 调度开销减少 82%
  • BW 从 47.94 升到 51.55(+7.5%)

5.3 为什么大包(1MB)MTU 影响小?

1MB / 1500B ≈ 699 个包
1MB / 9000B ≈ 117 个包

但 699 vs 117 都不算多(已经够流水线),所以包数减少带来的收益摊薄到总耗时上很小。

而且1MB 大包的瓶颈是 DMA / PCIe / 内存带宽,不在 CPU 包数处理。


六、MTU + bidir 综合实验(追加测试)

猜想:MTU 9000 + bidir + 4KB 是不是能突破 128 Gb/s?

结果:

MTUQP模式单方向 BW总 BW链路利用率
15001单向 4KB77.68*77.6838.8%
15001bidir 4KB64.22128.4464.2%⭐
90001单向 4KB74.9174.9137.5%
90001bidir 4KB53.64107.2853.6%
90004单向 4KB52.0652.0626.0%
90004bidir 4KB50.64101.2850.6%⭐

* 上次实验值,本次测试波动到 60.76(见 4.1)

反直觉发现:MTU 9000 + bidir 不如 MTU 1500 + bidir!

组合总 BW
MTU 1500 + bidir QP=1128.44⭐
MTU 9000 + bidir QP=1107.28
MTU 9000 + bidir QP=4101.28

为什么?

MTU 1500 + bidir 优势:

  • 每包小 → 包数多 →CPU 流水线越深
  • 4 个核并发处理多个 SQ 槽 → 隐藏 CPU 延迟

MTU 9000 + bidir 劣势:

  • 每包大 → 包数少 →CPU 等待 DMA 完成时间变长
  • i3 单核在这段时间"闲着"
  • 未能充分发挥流水线

推论:在 i3 单核 CPU 上,MTU 1500 + bidir 反而是最优组合。


七、综合判断

7.1 MTU 怎么选?

场景推荐 MTU理由
单核 CPU + 小包 + 单向MTU=9000省包头 + 省中断(+23%)
单核 CPU + 小包 + bidirMTU=1500⭐包数多利于流水线(128 vs 107)
多核 CPU + 大包MTU=9000省分片开销
多核 CPU + NCCL AllReduce两者都行NCCL 内部已优化
跨广域网MTU=1500互联网普遍不支持巨型帧

八、复现命令

# 设 MTU 9000sshroot@cx8"ip link set eth1 mtu 9000 && ip link set eth2 mtu 9000"# 跑测试sshroot@cx8"ib_write_bw -d mlx5_0 -x 2 -s 4096 -D 15 -q 1 -t 128 -b \ --report_gbits --cpu_util &"sleep2sshroot@cx8"ib_write_bw -d mlx5_1 -x 2 -s 4096 -D 15 -q 1 -t 128 -b \ --report_gbits --cpu_util 192.168.99.1"# 还原 MTUsshroot@cx8"ip link set eth1 mtu 1500 && ip link set eth2 mtu 1500"

九、一句话总结

MTU 9000 对小包单方向帮助显著(+23%),但单核 CPU 下小包 bidir 反而不如 MTU 1500(128 vs 107)。MTU 不是越大越好,要看 CPU 核心数和流量模式。

相关新闻

  • AMD Ryzen调试工具完全指南:免费开源硬件调优利器
  • Gazebo 11 与 Webots R2023b 物理引擎实测:ODE vs. Bullet 对机器人控制的影响
  • RoPE:现代 NLP 的位置编码范式

最新新闻

  • 9 款 AI 毕业论文写作工具横评,高校学术创作高效工具深度盘点
  • VASPsol隐式溶剂模型:5分钟掌握DFT计算中的溶剂效应终极指南
  • USB 3.0 xHCI 主机控制器报错代码 10/39/43:5步精准排查与修复流程(含驱动/BIOS/注册表)
  • 露易丝·海的诗歌2
  • 高精度ADC与STM32L4在工业测量中的优化设计
  • 学生管理信息系统:高效、便捷的学生管理工具

日新闻

  • SQL 查询语句的标准逻辑执行顺序(即语义处理顺序),它与实际书写顺序不同,但决定了数据库如何解析和执行查询
  • ORB-SLAM2 重定位模块深度解析:从 BoW 候选帧到 PnP 优化的 6 步流程
  • 罗技鼠标宏压枪脚本终极指南:从原理到实战的完整解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号