推荐阅读索引:每篇材料该吸收什么
这份索引按“为什么读、抓哪个问题、迁移到 Muxi 的边界”组织。正文讲义已经把关键观点融入各周;这里用于反查。
第 1 周:通信库与数据路径
NCCL Documentation
- 为什么读:建立 collective、communicator、rank、environment variable 的基本语义。
- 抓的问题:AllReduce、Broadcast、ReduceScatter、AllGather 的语义差异。
- Muxi 边界:NCCL 是通用心智模型;MCCL 的变量、算法名和默认行为必须回到沐曦文档与实际日志。
NCCL Tests Performance
- 为什么读:避免误读
alg_bw、bus_bw、time。 - 抓的问题:benchmark 指标是如何按 collective 通信量折算的。
- Muxi 边界:指标口径可迁移;具体实现和输出字段以当前脚本为准。
Demystifying NCCL / NCCL source
- 为什么读:理解 channel、chunk、protocol、ring/tree 如何进入执行路径。
- 抓的问题:通信库为什么不是简单
send/recv。 - Muxi 边界:NCCL 内部结构不能直接等价 MCCL,只能作为提问框架。
第 2 周:Ethernet/IP/ECMP/Clos
RFC 2992:ECMP 算法分析
- 为什么读:理解 ECMP 是 flow hash 到 next-hop,不是自动平均分流。
- 抓的问题:少量大象流为什么会 hash 不均;next-hop 变化为什么会造成 flow remap。
- Muxi 边界:RFC 不告诉你 H3C 实际 hash 字段,必须靠配置、抓包和交换机 counter。
Fat-Tree
- 为什么读:理解 Clos/fat-tree 如何用多路径和高 bisection 支撑数据中心横向通信。
- 抓的问题:bisection、oversubscription、commodity switch scale-out。
- Muxi 边界:理论拓扑不能直接证明 Muxi 物理超分比。
VL2
- 为什么读:理解逻辑地址和物理位置可以解耦。
- 抓的问题:为什么同子网/同逻辑网络不等于同 rack/同 leaf。
- Muxi 边界:rail 子网只能证明逻辑隔离,不能证明物理独立交换平面。
Jupiter Rising
- 为什么读:理解真实大规模 Clos 依赖集中控制、配置和遥测。
- 抓的问题:端点观测为什么不足以恢复完整物理拓扑。
- Muxi 边界:没有 host→switch port、queue、bytes、drop、PFC/ECN counter,就不能机制闭环。
第 3 周:RDMA verbs 与 RNIC
Linux userspace verbs
- 为什么读:理解用户态如何高效操作 RDMA 设备。
- 抓的问题:fast path 为什么可以少 syscall,但仍需要内核/驱动管理资源。
- Muxi 边界:不要把“RDMA 快”误解为“CPU/驱动/轮询无关”。
RDMA Aware Networks Programming Manual
- 为什么读:系统学习 MR、QP、CQ、PD、work request。
- 抓的问题:一个 RDMA 程序从 open device 到 poll CQ 的对象顺序。
- Muxi 边界:对象模型可迁移;xscale 具体 counter 和调优项需厂商资料。
rdma-core / perftest
- 为什么读:用最小例子理解 QP 建连和 RDMA read/write/send 性能测试。
- 抓的问题:
ib_write_bw测的是简单 RDMA 路径,不是 collective。 - Muxi 边界:perftest 快不能证明 MCCL AllReduce 应该快。
第 4 周:RoCEv2、GID、MTU、QoS
RoCE / Cumulus QoS 文档
- 为什么读:理解 DSCP/PCP、priority、PG/TC、PFC、ECN 的配置链。
- 抓的问题:端点标记如何被交换机 trust 和映射。
- Muxi 边界:NVIDIA/Cumulus 示例不能照搬到 H3C/Muxi。
RFC 2474 / RFC 3168
- 为什么读:理解 DSCP 和 ECN 的 IP 字段语义。
- 抓的问题:DSCP 是分类标签;ECN CE 是拥塞标记,不是完整拥塞控制。
- Muxi 边界:字段存在不等于交换机按预期处理。
沐曦 C500 MCCL 编程指南
- 为什么读:确认
MCCL_IB_TC、MCCL_IB_GID_INDEX等变量语义。 - 抓的问题:MCCL 当前实现到底读哪些变量,如何影响 RoCE 数据面。
- Muxi 边界:文档语义仍需实际日志、抓包和网络侧配置闭环。
第 5 周:PFC/ECN/CNP/DCQCN
DCQCN
- 为什么读:理解 RoCE 数据中心如何用 ECN/CNP 做发送端速率控制。
- 抓的问题:CE/CNP 如何构成反馈环。
- Muxi 边界:具体参数、counter、实现路径依赖 xscale/H3C。
RDMA over Commodity Ethernet at Scale
- 为什么读:理解大规模 RoCE 部署里 PFC/ECN/QoS/buffer 需要协同。
- 抓的问题:lossless Ethernet 为什么不是打开 PFC 就结束。
- Muxi 边界:论文经验提供检查清单,不提供当前集群配置事实。
第 6 周:NCCL/MCCL、多 rail 与指标
NCCL Collective Operations / source
- 为什么读:理解算法、channel、chunk、protocol 如何影响通信模式。
- 抓的问题:同一个 collective 为什么可能产生完全不同的网络压力。
- Muxi 边界:MCCL 的实际算法选择必须看日志/厂商支持。
SuperBench
- 为什么读:学习如何设计多层 benchmark,而不是只看一个最终吞吐。
- 抓的问题:单机、P2P、incast、collective 如何组成证据链。
- Muxi 边界:benchmark 是诊断工具,不是根因本身。
第 7 周:端侧 tomography 与实验方法
PLink / ProbeEmbed
- 为什么读:理解端点探测如何得到亲和分组,并指导 collective placement。
- 抓的问题:亲和分组和物理拓扑命名是两件事。
- Muxi 边界:无 ground truth 时不要把行为分组命名为 leaf/spine。
SIMON
- 为什么读:理解共享瓶颈推断需要哪些观测假设。
- 抓的问题:什么时候端到端测量不足以唯一推断路径。
- Muxi 边界:对称 Clos、ECMP、四 rail 并行会削弱唯一性。
R-Pingmesh / C4
- 为什么读:理解持续探测、随机化、collective-aware 诊断的价值。
- 抓的问题:一次性矩阵为什么不如长期、多层、受控实验。
- Muxi 边界:系统化探测仍不能替代交换机侧 counter。
第 8 周:Muxi 512 毕业项目
第 8 周不新增阅读,重点是把前 7 周的材料转成 evidence map:
text
候选机制 → 支持证据 → 反证 → 替代解释 → 缺失 ground truth → 下一步优先回看:
plans/muxi-fabric-probe.mdproject/lab-workspace/reports/rounds/muxi_fabric_final_20260719.mdproject/lab-workspace/reports/rounds/muxi_topology_facts_20260719_102558.md