news 2026/7/8 23:48:55

200GbE RDMA 精细扫描:QP=4 固定,msg_size 从 1K 扫到 1M

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
200GbE RDMA 精细扫描:QP=4 固定,msg_size 从 1K 扫到 1M

一、问题动机

之前实验QP=1 + msg=4KB 是甜蜜点(77.68 Gb/s)bidirectional 4KB 总带宽 128.44 Gb/s

但:生产环境 NCCL AllReduce 用的就是多个 QP 并发,QP=4 才是更真实的场景。如果在 QP=4 下做精细 msg_size 扫描,会复现 QP=1 的甜蜜点吗?还是有完全不同的曲线?

本文就是回答这个问题


二、测试方法

固定参数

  • QP =4(生产环境典型配置)
  • tx_depth = 128
  • test_duration = 15 秒 / 每点
  • 单向传输(默认模式)

扫描 msg_size

1KB / 2KB / 4KB / 8KB / 16KB / 64KB / 128KB / 1MB (共 8 个点,2 的幂等比分布)

工具组合ib_write_bw+perf stat(同上文)


三、测试结果

3.1 完整数据表

msg_sizeBW (Gb/s)MsgRate (Mpps)IPCL1_dc_missLLC_missctx_switchcpu_mig
1KB52.466.4042.000137.7MN/A1642
2KB51.763.1592.37678.4MN/A1572
4KB52.391.5992.69742.0MN/A2353
8KB51.720.7892.86722.7MN/A29111
16KB50.050.3822.75824.5MN/A3342
64KB50.560.0962.9668.7MN/A1624
128KB50.830.0483.0045.6MN/A2265
1MB51.550.0063.0392.6MN/A3834

3.2 ASCII 图(BW vs msg_size)

BW (Gb/s) 53 ┤ ● ● 52 ┤ 51 ┤ ● ● 50 ┤ ● ● ● ● 49 ┤ └──┬──┬──┬──┬──┬──┬──┬──┬─► msg_size (对数) 1K 2K 4K 8K 16K 64K 128K 1M

3.3 关键观察

维度观察
BW 极差50.05 ~ 52.46 Gb/s,差距仅 4.8%
峰值位置1KB(52.46)+ 4KB(52.39)双峰
谷底位置16KB(50.05)
趋势msg_size 越大,BW 越稳定在 ~50 Gb/s(大包靠 DMA 走 PCIe,不靠 CPU)
L1 miss 趋势msg_size 越大,L1 miss 越少(大包数据局部性好)

四、对比 QP=1 的扫描结果

msg_sizeQP=1 (Gb/s)QP=4 (Gb/s)QP=1 vs QP=4
1KB63.7352.46+21.5%
2KB75.0151.76+44.9%
4KB77.6852.39+48.3%⭐⭐
8KB63.9151.72+23.5%
16KB50.0150.05-0.1%
64KB49.8050.56-1.5%
128KB50.7250.83-0.2%
1MB51.4851.55-0.1%

ASCII 图(QP=1 vs QP=4 对比)

BW (Gb/s) 80 ┤ ● ← QP=1 甜蜜点 (4KB) 75 ┤ ● 70 ┤ 65 ┤ ● 60 ┤ 55 ┤ 50 ┤● ● ● ● ● ← QP=1 大包平台 45 ┤ ● ● ● ● ● ← QP=4 整体水平 40 ┤ └──┬──┬──┬──┬──┬──┬──┬──┬─► msg_size 1K 2K 4K 8K 16K 64K 128K 1M

五、根因分析

5.1 QP=1 vs QP=4 为什么差这么多?

小包场景(≤ 8KB)

  • QP=1:CPU 单核串行处理一个 QP,每条消息从网卡 DMA → 内存 → 完成中断 → CPU 处理 → 下一条
  • QP=4:CPU 必须在 4 个 QP 之间轮询,每次轮询需要 4 次内存访问(每个 QP 检查 CQ),CPU 调度开销巨大
  • 小包本身耗时短(1KB @ 52 Gb/s = 150ns/包),CPU 调度开销占比相对较大

大包场景(≥ 64KB)

  • QP=1 ≈ QP=4(51 vs 51 Gb/s):大包一次 DMA 耗时数微秒,CPU 调度开销占比几乎为零
  • 瓶颈在DMA / PCIe / 内存带宽,不在 CPU

5.2 IPC 与 msg_size 的关系

msg_sizeIPC (QP=4)解释
1KB2.000小包,CPU 频繁响应,IPC 低
4KB2.697
16KB2.758
64KB2.966
1MB3.039大包 CPU 进入"等 DMA 完成"空闲,IPC 反而高

反直觉大包 IPC 反而高。因为大包发送后 CPU 进入 wait for completion,CPU 利用率低但"忙的有效指令多"。

5.3 L1-dcache miss 走势

msg_sizeL1_dc_miss解释
1KB137.7M小包,每包都需要查 CQ,数据结构反复进出 L1
4KB42.0M
16KB24.5M
128KB5.6M
1MB2.6M大包,QPL 数据结构长时间驻留 L1

L1 miss 与 msg_size 强负相关:包越大,CPU 处理频率越低,cache 命中率越高。


六、综合判断

6.1 QP=4 场景下的"甜蜜点"在哪?

两个局部峰:1KB(52.46)和 4KB(52.39)。

极差只有 4.8%——在工程误差范围内。QP=4 没有明显甜蜜点消息大小几乎不影响 BW

6.2 这意味着什么?

  1. NCCL AllReduce 等真实负载:QP 数量动态变化,但单 QP 流量在 ~50 Gb/s 是稳态
  2. 要突破 100 Gb/s 必须并行多个 QP(多连接并发)
  3. CPU 选型是 RDMA 性能的关键(i3 单核天花板 ~52 Gb/s,多核可叠加)

6.3 进一步优化方向

方向预期说明
CPU 多核并行4× 提升4 个核每个跑一个 QP=4 进程 → 200+ Gb/s
PCIe Gen4/52× 提升把单核带宽从 16 GB/s 提到 32 GB/s
换 DDR51.5× 提升内存频率翻倍,带宽提升
inline data<8% 提升小包走 inline 省 PCIe DMA

七、附录:完整 perf 数据(QP=4, msg=4KB 为例)

Performance counter stats for 'ib_write_bw -d mlx5_1 -x 2 -s 4096 -D 15 -q 4 -t 128 --report_gbits --cpu_util <server_ip>': 25,461,628 cache-misses # 58.601 % of all cache refs 43,433,000 cache-references 41,949,788 L1-dcache-load-misses 124,567 LLC-load-misses 1,876,432 LLC-store-misses 24,892 dTLB-load-misses 12,341 iTLB-load-misses 42,568,134,892 cycles 114,879,562,341 instructions # 2.70 insn per cycle 235 context-switches 3 cpu-migrations 16.272389913 seconds time elapsed

八、写在最后

通过固定 QP=4 精细扫描 msg_size,验证了:

  1. QP=4 没有明显甜蜜点,BW 几乎不受 msg_size 影响(稳定在 ~50 Gb/s)
  2. CPU 单核天花板在 ~52 Gb/s,与 QP 数 / msg_size 关系不大
  3. 小包场景下 QP 数越少越好,大包场景下 QP 数无所谓
  4. 多核并行是突破 100+ Gb/s 的必由之路
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 23:48:52

JVM类加载机制深度解析:双亲委派模型与自定义类加载器实战

JVM类加载机制深度解析&#xff1a;双亲委派模型与自定义类加载器实战 一、引言&#xff1a;从ClassNotFoundException说起 线上故障中&#xff0c;ClassNotFoundException 和 NoClassDefFoundError 是最令人头疼的问题之一。它们表面上是"类找不到"&#xff0c;但根…

作者头像 李华
网站建设 2026/7/8 23:48:22

【Linux+Docker+WSL+VMware+VirtualBox+云服务器】 Windows 开发者实现 Docker 服务 24 小时在线:从本地虚拟机到云服务器的完整避坑指南

Windows 开发者实现 Docker 服务 24 小时在线&#xff1a;从本地虚拟机到云服务器的完整避坑指南 本文为 Windows 开发者提供了实现 Docker 服务 24 小时在线的完整解决方案。首先打破"本地运行"的迷思&#xff0c;指出依赖个人电脑无法实现服务持续运行。然后系统梳…

作者头像 李华
网站建设 2026/7/8 23:48:05

YOLOv8 + ByteTrack 多目标跟踪实战:在MOT17数据集上实现75+ MOTA

YOLOv8与ByteTrack深度整合&#xff1a;在MOT17数据集实现75 MOTA的工程实践引言&#xff1a;当检测遇见跟踪的化学反应多目标跟踪&#xff08;MOT&#xff09;技术正在重塑计算机视觉的边界。想象一下这样的场景&#xff1a;繁忙的十字路口&#xff0c;数十个行人、车辆同时移…

作者头像 李华
网站建设 2026/7/8 23:46:13

基于STM32和TC78H651AFNG的高性能直流有刷电机驱动器设计

1. 项目背景与核心器件选型在工业自动化和机器人控制领域&#xff0c;直流有刷电机因其结构简单、控制方便、成本低廉等优势&#xff0c;仍然是许多中低功率应用的首选。但传统驱动方案存在效率低、发热大、控制精度不足等问题。我们基于TC78H651AFNG电机驱动芯片和STM32F446ZE…

作者头像 李华
网站建设 2026/7/8 23:45:45

Windows下Maven安装配置全指南:避坑、验证与企业级实践

1. 这不是“装个软件”那么简单&#xff1a;为什么Windows下Maven配置总让人反复折腾你是不是也经历过——下载完Maven压缩包&#xff0c;解压、配环境变量、改MAVEN_HOME、追加%MAVEN_HOME%\bin到Path&#xff0c;最后在CMD里敲mvn -v&#xff0c;结果弹出“mvn 不是内部或外部…

作者头像 李华
网站建设 2026/7/8 23:42:34

CNN vs 全连接网络:在CIFAR-10上对比参数量、训练速度与准确率

CNN vs 全连接网络&#xff1a;在CIFAR-10上对比参数量、训练速度与准确率当我们需要处理图像分类任务时&#xff0c;选择正确的神经网络架构至关重要。本文将深入对比两种主流架构——卷积神经网络(CNN)和全连接网络(FCN)在CIFAR-10数据集上的表现差异&#xff0c;通过量化指标…

作者头像 李华