跳到主要内容

ISSUE-032:旧 report 的 EPLB 收益 (2-3×) 被过强 incast 假设夸大,实测偏度下真实收益 1.1-1.5×

发现日期:2026-06-02 状态已确认(非 bug — 接收端建模正确,旧 report 假设错误) 类型报告结论修正(建模正确,结论依据 outdated) 影响范围:topo-routing-comm-eval report.md 的 KA1 核心结论(EPLB 提升幅度)。不影响 G5 代码(接收端建模符合 spec)。


问题现象

重写 report 时发现:v3 数据集(= v2 一致)的 EPLB 提升只有 1.08-1.46×,但旧 report.md(2026-05-27)KA1 写的是 2.3-2.9×。差一个量级,且方向性结论(EPLB 是决定性杠杆)受影响。

具体(fat-tree-k16 N=64 ecmp heavy tok256,per-chip 出向 GB/s):

形态旧 report 假设v3 实测
S0 完美均衡245.6293.7
S1 未开 EPLB20.7271.4
S2 开启 EPLB59.5294.4
EPLB 提升 (S1→S2)2.87×1.08×

旧 report 假设"未开 EPLB 时瓶颈在目的芯片接收端口,吞吐压到硬件 5-15%"(对应 S1=20.7),v3 实测 S1=271,几乎不压制。


调查过程

  • [查代码] configs/chips/SG2262.yaml: num_link_groups=8, line_rate_per_lg=50 B/ns → 单 chip 出向 = 8×50 = 400 GB/s

  • [查代码] setup.rs:123 确认 RX cap 注入生效:rx_line_rate_per_lg_bytes_per_ns = paxi_yaml.tx.line_rate_per_lg_bytes_per_ns = 50 → 接收聚合上限 = 8×50 = 400 GB/s,与出向对称

  • [实验] v2 vs v3 同坐标对比:S1 = 268(v2)vs 271(v3),差 1%。确认 S1 数据非 dispatch 重构引入,旧 report 的 20.7 是 pre-v2 过时实验数据

  • [实验] 接收矩阵 incast 程度:S1 形态 RX max/mean = 1.62(符合 s1_target=1.6 设计,接收侧扎堆;TX 侧 max/mean≈1.0 发送均匀)。

  • [实验] 决定性验证 — incast chip 接收串行时间 vs critical path(T 从 busbw 反推):

    拓扑形态T_actual接收 incast 串行时间critical path
    fat-treeS036.9μs29.0μs网络(T > 接收,差额 = spine 争抢)
    fat-treeS139.9μs44.0μs接收 incast(网络也占)
    torusS029.1μs29.0μs接收(T ≈ 接收,网络不瓶颈)
    torusS142.2μs44.0μs接收 incast
  • [实验] 偏度敏感性佐证(s1_target 1.4/1.6/2.0,heavy):torus 299/257/211(随偏度单调降,接收瓶颈显现),fat-tree 279/271/250(对偏度不敏感,网络先瓶颈)。若 RX cap 不生效,torus 不会对偏度敏感 → 反向证明接收端建模在起作用。


根因分析

两层瓶颈结构,接收 incast 是否进 critical path 取决于网络是否先瓶颈:

  1. fat-tree 网络先瓶颈:每芯片单 uplink(度=1)接 leaf,跨 leaf 流量争 8 个 spine 容量。S0 完美均衡时 busbw 已卡在 293 < chip 400 上限,瓶颈在网络。incast(S1)来了只把 critical path 从网络部分推向接收,EPLB 缓解 incast 的收益被网络瓶颈稀释 → 1.08×

  2. torus 网络充足:每芯片直连 6 邻居(度=6,聚合 2400 GB/s),网络不瓶颈。S0=372 接近 chip 400 上限,瓶颈已在接收端。incast(S1)直接把接收 incast chip 推成 critical path(42.2μs ≈ 接收时间 44μs),EPLB 缓解 incast 收益大 → 1.46×

接收端建模正确(对称 400 GB/s,符合收发共用全双工 SerDes 的硬件事实)。EPLB 收益 1.1-1.5× 是真实结论。

旧 report 错在 incast 假设过强:"压到 5-15%" 需要 incast 倍数 7-20×(单 chip 接收近全部流量)。但 design 设计的偏度是 RX max/mean 1.4-2.0,锚定实测(NVIDIA TRT-LLM DeepSeek EP32 = 1.56,SGLang up to 2.0)。实测偏度下 incast 温和(1.62),接收时间只 1.62× 均值,压制有限。


Spec / 文档依据

  • configs/chips/SG2262.yaml: num_link_groups=8, line_rate_per_lg=50 → 收发对称 400 GB/s。
  • docs/specs/G5仿真建模/G5-RC-Link传输层设计规格.md §芯片级聚合接收 cap:接收上限 = num_link_groups × rx_line_rate,收发复用同一全双工 SerDes。
  • design.md §流量形态:偏度档 {1.4,1.6,2.0} 锚定 NVIDIA/SGLang 实测,非极端假设。

解决方案

不改代码(接收端建模正确)。修正 report 结论:

  1. KA1 重写:EPLB 收益从"2-3× 决定性杠杆"改为"实测偏度下 1.1-1.5×,且收益依赖网络是否先瓶颈"。
  2. 机理写清:EPLB 缓解的是接收 incast;只有当网络带宽充足(如 torus)时 incast 才是瓶颈,EPLB 收益才显现;网络先瓶颈的拓扑(如 fat-tree)EPLB 收益被稀释。
  3. 适用范围标注:EPLB 收益强依赖偏度。实测偏度 1.4-2.0 下温和;若专家负载更极端(偏度 >> 2),incast 加剧,EPLB 收益会更大。旧 report 的 2-3× 对应极端假设,不符合实测。

验证 (Acceptance Criteria)

  • v2/v3 同坐标一致(排除 dispatch 重构引入)
  • RX cap 注入生效(setup.rs:123 = 50,非 0)
  • incast chip 接收时间 = critical path(torus S1: 44μs ≈ T 42μs)
  • 偏度敏感性佐证(torus 敏感 / fat-tree 不敏感)
  • 收发带宽对称(8×50 = 400 GB/s 双向)

Lessons Learned / Prevention

  • report 数字必须标注数据来源版本:旧 report 混入了 pre-v2 过时实验数据(S1=20.7),与当前数据集差一个量级却未察觉。重写后所有数字应注明 v3 + 实验日期。
  • 结论依赖的隐含假设要显式写出:旧 report 的"EPLB 2-3×"隐含"incast 极端到压制 5-15%"的假设,但正文没写明,导致结论看似稳健实则建立在未声明的极端假设上。偏度这种关键 knob 必须在结论里显式标注取值范围。