总览
本章节范围:AI 训练 / 推理集群互联网络中的死锁问题——死锁如何形成、业界用哪些手段在各层打破循环依赖,以及不同互联 fabric 的处理路线对比 目标读者:数据中心网络架构师、AI 训练系统工程师、需要理解 RoCE / InfiniBand / Ultra Ethernet 无损与死锁权衡的研究者
范围与边界 (Scope)
- 包含:
- 死锁的本质:循环缓冲依赖(CBD)与通道依赖图(CDG)判据
- 两类死锁:路由诱发(routing-induced)与协议诱发(protocol-induced)
- 分层破环模型:理论判据 / 流控 / 协议事务 / 集合通信各层手段
- PFC 死锁专题:以太网无损网络特有的死锁与预防
- 各 fabric 死锁处理路线对比(NVLink / InfiniBand / RoCE / Ultra Ethernet)
- 死锁检测与恢复,以及大规模故障场景下的死锁面
- 不包含:
名词定义
| 名词 | 定义 |
|---|---|
| 死锁(Deadlock) | 一组报文互相等待对方占用的缓冲 / 通道资源,无人能前进的永久阻塞状态 |
| CBD(Cyclic Buffer Dependency) | 缓冲资源的占用-等待关系构成环,是死锁的充分条件 |
| CDG(Channel Dependency Graph) | 以通道为节点、以路由可能产生的占用-等待为边的有向图;无环即路由无死锁 |
| 路由诱发死锁(Routing-induced) | 报文绕路时占用的通道形成依赖环导致的死锁 |
| 协议诱发死锁(Protocol-induced) | 请求占满输入缓冲、节点无法接收处理所需的响应,请求-响应互锁 |
| VC(Virtual Channel,虚拟通道) | 一条物理链路上逻辑独立的多条通道,各有独立缓冲,用于打破通道依赖环 |
| VL(Virtual Lane) | InfiniBand 对 VC 的称呼,标准支持 15 条数据 VL + 1 条管理 VL |
| escape channel(逃生通道) | Duato 理论中一组无环的 VC,自适应路由阻塞时退回此通道,保证整体无死锁 |
| 背压(Backpressure) | 下游缓冲满时反向通知上游暂停发送的机制;是无损网络的基础,也是网络死锁的必要条件 |
| credit-based 流控 | 发送方按接收方授予的 credit(缓冲额度)发送,无 credit 不发;IB / NVLink 采用 |
| PFC(Priority Flow Control) | 以太网按优先级发 pause 帧暂停对端发送实现无损;pause 反向传播可制造死锁 |
| 无损网络(Lossless) | 保证不因拥塞丢包的网络,靠背压实现 |
| 可丢网络(Lossy) | 拥塞时直接丢包、靠重传恢复的网络;丢包即天然消解死锁 |
| message class / 虚网络 | 按消息类型(请求 / 响应 / 数据 / 探测)划分独立 VC 集合,打破请求-响应互锁 |
| LLR(Link Level Retry) | 链路层可靠重传,提供 link 层无损传输以替代 PFC;UEC 的容忍丢包发生在 transport 层(packet trimming),与 LLR 分属两层 |
@tbl-deadlock-overview-terms 死锁与流控章节名词定义
本章节所有文档默认这些名词已定义,各专题文档只额外定义本文新引入的名词。
死锁的本质
死锁的根因是资源的循环等待。在互联网络里,"资源"是缓冲区与通道:报文 A 占用缓冲等 B,B 等 C,C 又等 A,形成环后全体永久阻塞。形式化判据由 Dally & Seitz(1987)给出——路由无死锁,当且仅当通道依赖图(CDG)无环。这是所有破环手段的理论起点:要么让路由本身不产生环,要么用虚拟通道(VC)把环拆开。
按成因,互联网络的死锁分为两类,两者要分别治理:
| 类型 | 成因 | 典型场景 |
|---|---|---|
| 路由诱发(Routing-induced) | 报文绕路占用的通道形成依赖环 | torus 的 wraparound、自适应路由、链路故障后重路由成环 |
| 协议诱发(Protocol-induced) | 请求占满缓冲,无法接收处理所需的响应 | cache 一致性、CXL、读写事务、RDMA read |
@tbl-deadlock-overview-types 死锁的两类成因
一个关键前提:无损背压是网络死锁的必要条件。没有背压,缓冲满了直接丢包(lossy 网络),循环等待无从形成。因此一个网络是否需要操心死锁,直接取决于它是否要求无损(lossless)。这条因果主线串起了 PFC、Ultra Ethernet 等所有流控层的设计取舍(详见 03-流控与无损可丢)。
分层破环模型
业界没有单一技术能消除所有死锁,而是在不同层各破一类循环依赖。本章按层组织,每层的手段与对应文档如下:
| 层 | 主要应对 | 破环手段 | 详见 |
|---|---|---|---|
| 理论判据 | 通用基础 | CDG 无环判据、Dally-Seitz 定理、Duato escape channel、turn model | 02-死锁理论基础 |
| 路由层 | 路由诱发 | 维序路由 DOR、torus dateline 切 VC、fat-tree up-down、escape VC | 03-路由算法 各篇的死锁视角 |
| 流控层 | 提供必要条件 | credit-based vs PFC、无损 vs 可丢取舍 | 03-流控与无损可丢 |
| 流控层(PFC 专题) | 路由诱发(pause 传播) | CBD 消除、Tagger、Flattened Clos、PFC watchdog | 04-pfc死锁 |
| 协议 / 事务层 | 协议诱发 | 按 message class 拆独立虚网络 | 05-协议事务层死锁 |
| 集合通信 / 应用层 | 应用逻辑死锁 | ring / tree 算法依赖天然无环 + 跨 rank 调用序一致 | 07-集合通信死锁 |
@tbl-deadlock-overview-layers 分层破环模型
路由层的破环手段(DOR / dateline / up-down 等)已在 03-路由算法 各篇详述,本章不重复,仅在那些文档补充「死锁视角」小节。
各 fabric 处理路线对比(导引)
不同互联 fabric 因无损机制不同,死锁的暴露面与处理手段差异很大。下表是导引概览,完整对比见 06-fabric死锁对比:
| Fabric | 无损机制 | 破环主手段 | 死锁风险点 |
|---|---|---|---|
| NVLink / NVSwitch | per-VC credit | 交换 ASIC 内置 VC + 按 message class 分虚网络 | 厂商在硬件设计期消解,对用户透明 |
| UALink | per-VC credit(scale-up 总线) | TL / DL 层 VC + credit 流控,规范设计期处理 | 类 NVLink scale-up,对用户透明 |
| InfiniBand | per-VL credit | 子网管理器算无死锁转发表;fat-tree up-down,不规则拓扑用 LASH / DFSSSP | 路由表算错 / VL 不足 |
| RoCEv2(以太网) | PFC pause | Clos + up-down 无故障时无环;Tagger / Flattened Clos 兜底 | PFC 死锁(最棘手) |
| Ultra Ethernet(UEC) | link 层 LLR 可靠重传替代 PFC | transport 层 packet spraying + trimming 容忍乱序 / 丢包 | link 层保可靠、transport 层容丢,绕开 PFC 死锁 |
@tbl-deadlock-overview-fabric 各 fabric 死锁处理路线导引
趋势:业界正从「靠无损 + 集中算无死锁路由表」(InfiniBand 范式)转向「放弃严格无损、用快速重传容忍丢包」(Ultra Ethernet 范式),本质是承认万卡规模下维持无死锁无损网络的代价过高。
子文档索引 (Index)
索引按最佳阅读顺序排列(沿协议栈自底向上 → 综合 → 应用 → 运维),编号即阅读顺序;优先级列标注写作优先级(与阅读顺序正交):
| 文档 | 优先级 | 一句话内容 |
|---|---|---|
| 11.2 死锁理论基础 | Must | CDG 无环判据、Dally-Seitz 定理、Duato escape channel、turn model |
| 11.3 流控与无损可丢 | Must | credit vs PFC 背压机制、无损 vs 可丢的根本取舍、UEC 去无损路线 |
| 11.4 PFC 死锁 | Must | PFC 死锁的 CBD 成因、Tagger、Flattened Clos、PFC watchdog 运维 |
| 11.5 协议事务层死锁 | Should | 请求-响应互锁、message class 虚网络、CXL / cache 一致性 |
| 11.6 各 fabric 死锁处理对比 | Must | NVLink / UALink / InfiniBand / RoCE / Ultra Ethernet 死锁处理横向对比 |
| 11.7 集合通信死锁 | Should | NCCL 调用序与 hang、DFCCL 预防、ring / tree 依赖无环性、hang 诊断 |
| 11.8 死锁检测与恢复 | Could | 运行时检测 vs 主动避免、回滚 / 抢占恢复、故障重路由成环、规模放大 |
@tbl-deadlock-overview-nav 子文档索引(编号 = 阅读顺序)
阅读建议
- 建立全局认识:02-死锁理论基础 → 本总览的分层破环模型表 → 06-fabric死锁对比
- RoCE 集群运维:03-流控与无损可丢 → 04-pfc死锁 → 06-fabric死锁对比(Ultra Ethernet 部分)
- 排查训练 hang:07-集合通信死锁 → 08-检测与恢复
- 硬件 / 协议设计:02-死锁理论基础 → 05-协议事务层死锁
开放问题
- 各 fabric 对比是否纳入国产互联(灵衢 / 国产 RoCE)的死锁处理——需查是否有公开资料
- 7 篇专题文档的写作顺序与依赖(当前建议 Must 4 篇优先,理论基础最先)
- Ultra Ethernet 正式规范(UEC 1.0)对 req-rsp 死锁的 TC / queue 映射细节,待规范公开后补充
延伸阅读
本章各专题文档的完整文献引用见对应子文档(02-08)。相关章节:
- 3.1 总览 — 路由层破环手段(DOR / up-down / 自适应)的机制详述
- 1.5 RoCE (RDMA over Converged Ethernet) — RoCE 拥塞控制与 PFC 机制
- 4.1 总览 — ring / tree 集合通信算法的依赖结构
- 10.5 弹性训练 — NCCL watchdog 故障检测与 communicator 重建