Document PXN alltoall rail balancing

This commit is contained in:
cs 2026-05-23 17:03:02 +08:00
parent 05294a66d8
commit 17441a4583
3 changed files with 65 additions and 5 deletions

View File

@ -10,6 +10,8 @@
`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 均为约 `590.98 GB`。但每条 rail 的实际吞吐仍只有约 `19.82 GB/s`,没有打满 400G rail。
这个提升有实际价值,但仍远低于 PDF 参考 `76.54 GB/s`。其他参数没有改善,部分明显变差:
| Case | Avg Bus BW | 结论 |
@ -28,6 +30,36 @@
| `NCCL_IB_ADAPTIVE_ROUTING=0` | `30.0535 GB/s` | 无改善 |
| `NCCL_IB_PCI_RELAXED_ORDERING=0` | 未完成 | 明显异常,不建议 |
## 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` |
## 正式配置更新
`configs/multinode_nccl_nccl227_pdf_matrix.yaml` 已对 2 nodes x 8 GPUs 的 alltoall 增加:
@ -47,5 +79,6 @@ op_env:
## 判断
1. PXN 在当前拓扑下对 8 卡 alltoall 有负面影响,禁用后有约 `22-24%` 提升。
2. 禁用 PXN 后仍只有 PDF 目标的一半左右,剩余差距不是单一 NCCL 环境变量可以补齐。
3. 后续重点仍应放在 NCCL net plugin/SHARP、交换网络策略、路由/拥塞和 alltoall rail 分布。
2. 禁用 PXN 可以修复 rail 分布不均衡,但无法打满每条 400G rail。
3. 禁用 PXN 后仍只有 PDF 目标的一半左右,剩余差距不是单一 NCCL 环境变量可以补齐。
4. 后续重点仍应放在 NCCL net plugin/SHARP、交换网络策略、路由/拥塞和 NCCL internal alltoall 实现效率。

View File

@ -14,6 +14,8 @@
8 卡 alltoall 仍只有 `30 GB/s busbw`,不是 HCA 顺序导致。HCA 顺序 sweep 都稳定在 `30.02-30.07 GB/s`。计数器显示 alltoall 流量主要压在 `mlx5_0``mlx5_6` 上,`mlx5_1``mlx5_7` 只有约三分之一流量,说明剩余问题更像 NCCL alltoall rail 分布、路由、拥塞、NCCL net plugin/SHARP 或网络侧策略问题。
补充测试显示,`NCCL_PXN_DISABLE=1` 可以把 alltoall 流量均匀分配到四条 HCA并将 busbw 提升到约 `36.95 GB/s`。不过每条 400G rail 仍只有约 `19.82 GB/s`,没有达到裸 RDMA 单 rail 能力。
## 裸 RDMA 4 rail 并发
命令类型:
@ -93,10 +95,24 @@ NCCL 输出:
| `mlx5_1,mlx5_0,mlx5_7,mlx5_6` | `30.0413 GB/s` |
| `mlx5_6,mlx5_7,mlx5_0,mlx5_1` | `30.0230 GB/s` |
## PXN disabled alltoall 计数器
`NCCL_PXN_DISABLE=1` 后:
| Metric | Value |
|--------|-------|
| `Avg bus bandwidth` | `36.9518 GB/s` |
| 每条 HCA 流量 | 约 `590.94-590.98 GB` |
| 每条 HCA 吞吐 | 约 `19.82 GB/s` |
| 每节点 4 HCA 合计吞吐 | 约 `79.29 GB/s` |
判断:禁用 PXN 可以修复 rail 分布不均衡,但不能让 alltoall 打满当前 4 条 400G rail。
## 判断
1. 裸 RDMA 4 rail 可以并发跑到约 `184.62 GB/s`,网络基础带宽不是单 rail 瓶颈。
2. 8 卡 allreduce 当前不是软件参数小调能解决的问题,性能已经贴近当前 4 条 400G rail 的物理带宽上限。
3. 8 卡 alltoall 仍明显异常,且不是 HCA 顺序问题;需要继续从 NCCL alltoall rail 分布、网络路由/拥塞、NCCL net plugin/SHARP、交换机侧策略排查。
4. 如果验收必须达到 PDF 的 2 机 16 卡 `491.84/76.54 GB/s`,需要确认当前两台机器是否具备与 PDF 参考环境同等的有效跨节点 rail 数量和交换网络能力。
5. 两台机器当前均未发现 `libnccl-net.so` 或 SHARP/HCOLL 包NCCL 使用 internal IB plugin如果目标值依赖 NCCL net plugin/SHARP需要先补齐对应运行环境。
4. `NCCL_PXN_DISABLE=1` 可改善 8 卡 alltoall 的 rail 均衡性和性能,但无法补齐到 PDF 目标。
5. 如果验收必须达到 PDF 的 2 机 16 卡 `491.84/76.54 GB/s`,需要确认当前两台机器是否具备与 PDF 参考环境同等的有效跨节点 rail 数量和交换网络能力。
6. 两台机器当前均未发现 `libnccl-net.so` 或 SHARP/HCOLL 包NCCL 使用 internal IB plugin如果目标值依赖 NCCL net plugin/SHARP需要先补齐对应运行环境。

View File

@ -285,6 +285,15 @@ NET/IB : GPU Direct RDMA Disabled for HCA 0 'mlx5_0'
其他变量如 `NCCL_P2P_PXN_LEVEL``NCCL_NET_SHARED_COMMS``NCCL_NET_SHARED_BUFFERS``NCCL_NCHANNELS_PER_NET_PEER``NCCL_IB_ADAPTIVE_ROUTING` 均无改善或变差。
PXN disabled 计数器显示该参数确实修复了 rail 分布:
| 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` |
但禁用 PXN 后每条 400G rail 仍只有约 `19.82 GB/s`,没有接近裸 RDMA 单 rail 的 `347-387 Gb/s`。因此它解决的是 rail 分布不均衡的一部分,不是全部 alltoall 性能问题。
### 8. 8 卡链路计数器与物理上限判断
计数器探测报告:`reports_multinode_nccl_counter_probe_20260523.md`
@ -327,6 +336,8 @@ busbw = algbw * 2 * (nranks - 1) / nranks = algbw * 1.875
同一测试窗口内端口计数器显示 alltoall 流量分布不均衡:`mlx5_0``mlx5_6` 的流量约 `885 GB``mlx5_1``mlx5_7``295 GB`,约为三倍差距。继续调换 `NCCL_IB_HCA` 顺序后8 卡 alltoall 仍稳定在 `30.02-30.07 GB/s`,说明不是简单 HCA 列表顺序问题。
`NCCL_PXN_DISABLE=1` 后,端口流量变为四条 HCA 均约 `591 GB`alltoall `Avg bus bandwidth` 提升到 `36.9518 GB/s`,但每条 rail 吞吐仍只有约 `19.82 GB/s`
### 9. NCCL net plugin / SHARP 状态
两台机器上均未找到:
@ -382,7 +393,7 @@ libnccl-dev
- PDF 8 卡 allreduce `491.84 GB/s busbw` 反推需要约 `262 GB/s algbw`,超过当前 4 x 400G 的物理单向总带宽
- 8 卡 alltoall 端口计数器显示 rail 分布不均,且 HCA 顺序 sweep 无改善
- 当前环境缺失 NCCL net plugin/SHARPNCCL 只能使用 internal IB plugin
- `NCCL_PXN_DISABLE=1` 可将 8 卡 alltoall 提升到约 `36.7 GB/s`,但仍不到 PDF 参考值的一半
- `NCCL_PXN_DISABLE=1` 可将 8 卡 alltoall 提升到约 `36.7 GB/s`并修复 rail 分布不均,但仍不到 PDF 参考值的一半
### 阻塞 3`nccl-gpu-2` SSH 存在外部连接压力