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

📅 2026/7/8 23:49:07
200GbE RDMA 精细扫描:QP=4 固定,msg_size 从 1K 扫到 1M
一、问题动机之前实验QP1 msg4KB 是甜蜜点77.68 Gb/sbidirectional 4KB 总带宽 128.44 Gb/s。但生产环境 NCCL AllReduce 用的就是多个 QP 并发QP4 才是更真实的场景。如果在 QP4 下做精细 msg_size 扫描会复现 QP1 的甜蜜点吗还是有完全不同的曲线本文就是回答这个问题。二、测试方法固定参数QP 4生产环境典型配置tx_depth 128test_duration 15 秒 / 每点单向传输默认模式扫描 msg_size1KB / 2KB / 4KB / 8KB / 16KB / 64KB / 128KB / 1MB 共 8 个点2 的幂等比分布工具组合ib_write_bwperf stat同上文三、测试结果3.1 完整数据表msg_sizeBW (Gb/s)MsgRate (Mpps)IPCL1_dc_missLLC_missctx_switchcpu_mig1KB52.466.4042.000137.7MN/A16422KB51.763.1592.37678.4MN/A15724KB52.391.5992.69742.0MN/A23538KB51.720.7892.86722.7MN/A2911116KB50.050.3822.75824.5MN/A334264KB50.560.0962.9668.7MN/A1624128KB50.830.0483.0045.6MN/A22651MB51.550.0063.0392.6MN/A38343.2 ASCII 图BW vs msg_sizeBW (Gb/s) 53 ┤ ● ● 52 ┤ 51 ┤ ● ● 50 ┤ ● ● ● ● 49 ┤ └──┬──┬──┬──┬──┬──┬──┬──┬─► msg_size (对数) 1K 2K 4K 8K 16K 64K 128K 1M3.3 关键观察维度观察BW 极差50.05 ~ 52.46 Gb/s差距仅 4.8%峰值位置1KB52.46 4KB52.39双峰谷底位置16KB50.05趋势msg_size 越大BW 越稳定在 ~50 Gb/s大包靠 DMA 走 PCIe不靠 CPUL1 miss 趋势msg_size 越大L1 miss 越少大包数据局部性好四、对比 QP1 的扫描结果msg_sizeQP1 (Gb/s)QP4 (Gb/s)QP1 vs QP41KB63.7352.4621.5%⭐2KB75.0151.7644.9%4KB77.6852.3948.3%⭐⭐8KB63.9151.7223.5%16KB50.0150.05-0.1%64KB49.8050.56-1.5%128KB50.7250.83-0.2%1MB51.4851.55-0.1%ASCII 图QP1 vs QP4 对比BW (Gb/s) 80 ┤ ● ← QP1 甜蜜点 (4KB) 75 ┤ ● 70 ┤ 65 ┤ ● 60 ┤ 55 ┤ 50 ┤● ● ● ● ● ← QP1 大包平台 45 ┤ ● ● ● ● ● ← QP4 整体水平 40 ┤ └──┬──┬──┬──┬──┬──┬──┬──┬─► msg_size 1K 2K 4K 8K 16K 64K 128K 1M五、根因分析5.1 QP1 vs QP4 为什么差这么多小包场景≤ 8KBQP1CPU 单核串行处理一个 QP每条消息从网卡 DMA → 内存 → 完成中断 → CPU 处理 → 下一条QP4CPU 必须在 4 个 QP 之间轮询每次轮询需要 4 次内存访问每个 QP 检查 CQCPU 调度开销巨大小包本身耗时短1KB 52 Gb/s 150ns/包CPU 调度开销占比相对较大大包场景≥ 64KBQP1 ≈ QP451 vs 51 Gb/s大包一次 DMA 耗时数微秒CPU 调度开销占比几乎为零瓶颈在DMA / PCIe / 内存带宽不在 CPU5.2 IPC 与 msg_size 的关系msg_sizeIPC (QP4)解释1KB2.000小包CPU 频繁响应IPC 低4KB2.69716KB2.75864KB2.9661MB3.039⭐大包 CPU 进入等 DMA 完成空闲IPC 反而高反直觉大包 IPC 反而高。因为大包发送后 CPU 进入 wait for completionCPU 利用率低但忙的有效指令多。5.3 L1-dcache miss 走势msg_sizeL1_dc_miss解释1KB137.7M⭐小包每包都需要查 CQ数据结构反复进出 L14KB42.0M16KB24.5M128KB5.6M1MB2.6M大包QPL 数据结构长时间驻留 L1L1 miss 与 msg_size 强负相关包越大CPU 处理频率越低cache 命中率越高。六、综合判断6.1 QP4 场景下的甜蜜点在哪两个局部峰1KB52.46和 4KB52.39。但极差只有 4.8%——在工程误差范围内。QP4 没有明显甜蜜点消息大小几乎不影响 BW。6.2 这意味着什么NCCL AllReduce 等真实负载QP 数量动态变化但单 QP 流量在 ~50 Gb/s 是稳态要突破 100 Gb/s 必须并行多个 QP多连接并发CPU 选型是 RDMA 性能的关键i3 单核天花板 ~52 Gb/s多核可叠加6.3 进一步优化方向方向预期说明CPU 多核并行4× 提升4 个核每个跑一个 QP4 进程 → 200 Gb/sPCIe Gen4/52× 提升把单核带宽从 16 GB/s 提到 32 GB/s换 DDR51.5× 提升内存频率翻倍带宽提升inline data8% 提升小包走 inline 省 PCIe DMA七、附录完整 perf 数据QP4, msg4KB 为例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八、写在最后通过固定 QP4 精细扫描 msg_size验证了QP4 没有明显甜蜜点BW 几乎不受 msg_size 影响稳定在 ~50 Gb/sCPU 单核天花板在 ~52 Gb/s与 QP 数 / msg_size 关系不大小包场景下 QP 数越少越好大包场景下 QP 数无所谓多核并行是突破 100 Gb/s 的必由之路