# 多机 NCCL 8 卡 alltoall 网络参数 sweep - 日期:2026-05-23 - 主机:`aikubeworker0012` / `172.72.8.12`,`aikubeworker0016` / `172.72.8.16` - NCCL:临时 `2.27.7+cuda12.4` - 测试:2 nodes x 8 GPUs,`alltoall_perf -b 16G -e 16G` - HCA:`mlx5_0,mlx5_1,mlx5_6,mlx5_7` ## 结论 `NCCL_PXN_DISABLE=1` 是本轮唯一有效正向参数,可以把 8 卡 alltoall 从约 `30.06 GB/s` 提升到约 `37.24 GB/s`。纳入正式 PDF 矩阵配置后,8 卡 alltoall 原始报告结果为 `36.70 GB/s peak` / `36.74 GB/s avg`。 补充计数器探测显示,`NCCL_PXN_DISABLE=1` 的实际作用是把 alltoall 流量重新均匀分配到 4 条 400G rail 上。baseline 下 `mlx5_0/6` 与 `mlx5_1/7` 的流量约为 3:1;禁用 PXN 后四条 HCA 均衡。但每条 rail 的实际吞吐仍只有约 `19-20 GB/s`,没有打满 400G rail。 复测错误/拥塞 counter 后,没有看到 discard、链路错误、RoCE 重传、slow restart 或 packet sequence error 增长;主要非零异常是部分端口 `port_xmit_wait`。不过 allreduce 对照在 `354 GB/s busbw` 时也会出现同类 `port_xmit_wait`,所以当前不支持“链路坏包/重传导致慢”的判断,也不能只用 `port_xmit_wait` 解释 alltoall 低吞吐。更可能的方向是 NCCL internal alltoall 通信模式效率、交换侧调度/拥塞控制,或缺少 NCCL net plugin/SHARP。 这个提升有实际价值,但仍远低于 PDF 参考 `76.54 GB/s`。在 `NCCL_PXN_DISABLE=1` 之前做过一轮参数 sweep,其他参数没有改善,部分明显变差: | Case | Avg Bus BW | 结论 | |------|------------|------| | baseline | `30.0633 GB/s` | 基线 | | `NCCL_PXN_DISABLE=1` | `37.2421 GB/s` | 有效提升 | | `NCCL_P2P_PXN_LEVEL=0` | `20.1205 GB/s` | 明显变差 | | `NCCL_P2P_PXN_LEVEL=1` | `30.0588 GB/s` | 无改善 | | `NCCL_P2P_PXN_LEVEL=2` | `30.0437 GB/s` | 无改善 | | `NCCL_NET_SHARED_COMMS=0` | `27.3889 GB/s` | 变差 | | `NCCL_NET_SHARED_BUFFERS=0` | `28.2389 GB/s` | 变差 | | `NCCL_NET_SHARED_COMMS=0 NCCL_NET_SHARED_BUFFERS=0` | `28.2279 GB/s` | 变差 | | `NCCL_NCHANNELS_PER_NET_PEER=2` | `30.0281 GB/s` | 无改善 | | `NCCL_NCHANNELS_PER_NET_PEER=4` | `29.9802 GB/s` | 无改善 | | `NCCL_IB_ADAPTIVE_ROUTING=1 NCCL_IB_AR_THRESHOLD=0` | `30.0526 GB/s` | 无改善 | | `NCCL_IB_ADAPTIVE_ROUTING=0` | `30.0535 GB/s` | 无改善 | | `NCCL_IB_PCI_RELAXED_ORDERING=0` | 未完成 | 明显异常,不建议 | 在 `NCCL_PXN_DISABLE=1` 作为基线后又补跑了一轮叠加参数 sweep。短测窗口里 `NVLS_ENABLE=0`、`P2P_NET_CHUNKSIZE=4M` 有小幅波动式提升,但更长 `-w 10 -n 10` 复测没有复现,不能作为稳定优化项。 | Case | Avg Bus BW | 结论 | |------|------------|------| | `NCCL_PXN_DISABLE=1` | `37.0069 GB/s` | 短测基线 | | `+ NCCL_NVLS_ENABLE=0` | `37.2217 GB/s` | 小幅波动,不稳定 | | `+ NCCL_P2P_NET_CHUNKSIZE=4194304` | `37.2522 GB/s` | 小幅波动,不稳定 | | `+ NCCL_BUFFSIZE=8388608` | `37.0911 GB/s` | 无实质改善 | | `+ NCCL_MIN_NCHANNELS=16 NCCL_MAX_NCHANNELS=16` | `37.0189 GB/s` | 无实质改善 | | `+ NCCL_IB_AR_THRESHOLD=0` | `37.0843 GB/s` | 无实质改善 | | `+ NCCL_IB_QPS_PER_CONNECTION=4 NCCL_IB_SPLIT_DATA_ON_QPS=0` | `35.9847 GB/s` | 变差 | | `+ NCCL_IB_QPS_PER_CONNECTION=4 NCCL_IB_SPLIT_DATA_ON_QPS=1` | `29.8406 GB/s` | 明显变差 | | `+ NCCL_IB_QPS_PER_CONNECTION=8 NCCL_IB_SPLIT_DATA_ON_QPS=1` | `24.1183 GB/s` | 明显变差 | | `+ NCCL_NCHANNELS_PER_NET_PEER=8` | `29.8904 GB/s` | 明显变差 | 长测复核: | Case | Avg Bus BW | 结论 | |------|------------|------| | `NCCL_PXN_DISABLE=1` | `32.7280 GB/s` | 当前窗口基线下滑 | | `+ NCCL_P2P_NET_CHUNKSIZE=4194304` | `31.9340 GB/s` | 未复现短测提升 | | `+ NCCL_NVLS_ENABLE=0 NCCL_P2P_NET_CHUNKSIZE=4194304` | `27.6585 GB/s` | 明显变差 | 补充 ENV/INIT/NET 日志确认,性能波动时仍是 NCCL `2.27.7+cuda12.4`、4 条 400G HCA、GDR enabled、internal IB plugin;不是退回旧 NCCL、HCA 选择错误或 GDR 失效。 ## NCCL GRAPH/TUNING 对照 为避免只看带宽结果,补抓了 allreduce 与 PXN disabled alltoall 的 `NCCL_DEBUG_SUBSYS=INIT,NET,GRAPH,TUNING,COLL` 日志。该日志采样使用短迭代,只用于看 NCCL 图和通道选择,不作为性能结论。 共同点: | 观察项 | allreduce | alltoall + `NCCL_PXN_DISABLE=1` | |--------|-----------|----------------------------------| | NCCL version | `2.27.7+cuda12.4` | `2.27.7+cuda12.4` | | HCA | `mlx5_0,mlx5_1,mlx5_6,mlx5_7` | `mlx5_0,mlx5_1,mlx5_6,mlx5_7` | | GDR | enabled | enabled | | external net plugin | missing, internal IB | missing, internal IB | | channels | `16 coll / 16 nvls / 16 p2p` | `16 coll / 16 nvls / 16 p2p` | | p2p channels per peer | `2` | `2` | | P2P chunk | `131072` | `131072` | 差异: | 观察项 | allreduce | alltoall + `NCCL_PXN_DISABLE=1` | |--------|-----------|----------------------------------| | Pattern 4 | `crossNic 0`, `type NVL/PXN`, `nChannels 8` | `crossNic 2`, `type NVL/PIX`, `nChannels 8` | | `NET/IB/*/GDRDMA` channel edge lines | `256` | `512` | | `P2P/CUMEM` channel edge lines | `0` | `224` | | total NET/P2P channel edge lines | `256` | `736` | 判断:PXN disabled 后 4 条 IB/GDRDMA rail 都仍被使用,且通道数没有少;但 alltoall 的 NCCL graph 明显更复杂,并混入大量本机 `P2P/CUMEM` 路径。这个结果进一步支持:剩余差距不是 HCA/GDR 基础环境没有生效,而是 alltoall collective graph、P2P/NET 组合方式、internal IB plugin 能力或交换网络策略的问题。 ## PXN disabled 端口计数器 `NCCL_PXN_DISABLE=1` 后,8 卡 alltoall 输出: | Metric | Value | |--------|-------| | `algbw` | `39.37 / 39.46 GB/s` | | `busbw` | `36.91 / 37.00 GB/s` | | `Avg bus bandwidth` | `36.9518 GB/s` | 端口计数器: | Host | HCA | Xmit GB | Recv GB | Xmit GB/s | Recv GB/s | |------|-----|---------|---------|-----------|-----------| | 172.72.8.12 | `mlx5_0` | `590.98` | `590.91` | `19.82` | `19.82` | | 172.72.8.12 | `mlx5_1` | `590.98` | `590.98` | `19.82` | `19.82` | | 172.72.8.12 | `mlx5_6` | `590.98` | `590.90` | `19.82` | `19.82` | | 172.72.8.12 | `mlx5_7` | `590.98` | `590.98` | `19.82` | `19.82` | | 172.72.8.16 | `mlx5_0` | `590.94` | `590.98` | `19.82` | `19.82` | | 172.72.8.16 | `mlx5_1` | `590.94` | `590.98` | `19.82` | `19.82` | | 172.72.8.16 | `mlx5_6` | `590.94` | `590.98` | `19.82` | `19.82` | | 172.72.8.16 | `mlx5_7` | `590.94` | `590.98` | `19.82` | `19.82` | 对比 baseline: | Case | Rail 分布 | Avg Bus BW | |------|-----------|------------| | baseline | `mlx5_0/6` 约 `885 GB`,`mlx5_1/7` 约 `295 GB` | `30.04 GB/s` | | `NCCL_PXN_DISABLE=1` | 四条 HCA 均约 `591 GB` | `36.95 GB/s` | ### 错误/等待 counter 复测 PXN disabled 复测结果: | 观察项 | 结果 | |--------|------| | `Avg bus bandwidth` | `36.4512 GB/s` | | 每条 HCA 流量 | 约 `712.18-712.28 GiB`,四条 rail 均衡 | | discard / rcv error / symbol error / link down / link recovery | `0` 增量 | | RoCE retrans / slow restart / packet sequence error / out of sequence | `0` 增量 | | `port_xmit_wait` | `mlx5_1`、`mlx5_7` 有增长,约 `15.65M-23.49M` | allreduce 对照: | 观察项 | 结果 | |--------|------| | `Avg bus bandwidth` | `354.366 GB/s` | | 每条 HCA 流量 | 约 `178.03-178.07 GiB`,四条 rail 均衡 | | 错误/重传类 counter | `0` 增量 | | `port_xmit_wait` | `mlx5_1`、`mlx5_7` 有增长,约 `6.11M-6.59M` | ## 正式配置更新 `configs/multinode_nccl_nccl227_pdf_matrix.yaml` 已对 2 nodes x 8 GPUs 的 alltoall 增加: ```yaml op_env: alltoall: NCCL_PXN_DISABLE: 1 ``` 正式矩阵报告:`reports_multinode_nccl_pdf_matrix_nccl227.md` | Topology | alltoall Peak Bus BW | alltoall Avg Bus BW | PDF Reference | Status | |----------|----------------------|---------------------|---------------|--------| | 2 nodes x 8 GPUs | `36.70 GB/s` | `36.74 GB/s` | `76.54 GB/s` | FAIL | ## 判断 1. PXN 在当前拓扑下对 8 卡 alltoall 有负面影响,禁用后有约 `22-24%` 提升。 2. 禁用 PXN 可以修复 rail 分布不均衡,但无法打满每条 400G rail。 3. PXN disabled 基线上继续叠加 NVLS、P2P chunk、buffer、channel、QP/split、AR 等参数,没有稳定收益;QP/split 和 `NCCL_NCHANNELS_PER_NET_PEER=8` 反而明显变差。 4. 禁用 PXN 后仍只有 PDF 目标的一半左右,剩余差距不是单一 NCCL 环境变量可以补齐。 5. 后续重点仍应放在 NCCL net plugin/SHARP、交换网络策略和 NCCL internal alltoall 实现效率;`port_xmit_wait` 需要结合 allreduce 对照解读,不能单独作为 alltoall 根因。