死锁检测与恢复
被动检测死锁的手段及规模故障下的恢复策略
核心要点:
- 避免是主动设计,恢复是被动兜底
- 恢复省缓冲但牺牲吞吐
- 检测主流靠超时
- 恢复分回滚式与前进式
- 规模放大故障频率,进而放大死锁面
前置阅读:
- 死锁判据与避免理论(CDG / VC / 逃生通道)→ 11.2 死锁理论基础
- PFC 死锁的预防与专项数据面检测(ITSY / Roundabout)→ 11.4 PFC 死锁
- 集群故障图谱与可靠性 → 10.1 集群可靠性总览
避免和恢复,工程上怎么选?
避免(avoidance)是在设计期保证不死锁,恢复(recovery)是允许死锁发生、检测到再打破——两者是互补的两条路线。
| 维度 | 避免 | 恢复 |
|---|---|---|
| 时机 | 设计期(路由 / VC / 拓扑保证无环) | 运行期(检测 + 解除) |
| 缓冲开销 | 高(需额外 VC / headroom) | 低(不预留破环资源) |
| 吞吐 | 高 | 较低(解除有代价) |
| 连接限制 | 有(路由受约束) | 无(不限制通信对) |
| 典型场景 | 片上网络(NoC)、生产无损网络 | 并行计算机网络、缓冲受限场景 |
避免是 02-06 各章的主线(CDG 无环、VC 破环、SM 算无死锁表等)。恢复的价值在于省缓冲、不限制连接,代价是降低吞吐——适合死锁罕见、缓冲昂贵的场景。万卡 AI 集群通常以避免为主、恢复为兜底(如 PFC watchdog,见 04-pfc死锁)。
怎么检测网络死锁?
主流检测靠超时——一个报文 / 缓冲卡住超过阈值就判定为疑似死锁。
- 超时检测:允许通道依赖图存在环,报文卡住超时即触发解除(释放缓冲 / 通道)。实现简单,但阈值难调:太短误判正常拥塞,太长恢复慢。
- 数据面探测:在交换机数据面主动探测循环缓冲依赖。PFC 死锁的专项方案 ITSY、Roundabout 属此类(见 04-pfc死锁),优点是探测快、就地解除,难点是误判率与硬件开销。
超时是工程上最普遍的检测信号——NCCL watchdog(见 07-集合通信死锁)、PFC watchdog(见 04-pfc死锁)本质都是超时检测。
检测到死锁怎么恢复?
恢复分回滚式(regressive)与前进式(progressive)两类[1]:
- 回滚式(abort-and-retry):丢弃环上的报文 / flit,释放其占用的缓冲,源节点等随机间隔后重传。代表 AFBAR 等(软件、超时驱动)。优点实现简单,代价是丢包 + 重传延迟[2]。
- 前进式:不丢报文,而是把死锁报文导入一条无死锁逃生通道继续前进。代表 DISHA(硬件,用路由器内共享的中央 deadlock buffer 提供逃生通道)。优点不丢包,代价是需要额外硬件资源。
回滚式与 03-流控与无损可丢 的「可丢网络」同源——都是用丢弃打破「不可抢占」条件;前进式则更接近 02-死锁理论基础 的逃生通道思想。
故障重路由为什么会制造死锁,怎么应对?
链路 / 节点故障触发重路由,新路径可能引入此前无环拓扑里没有的通道环——这是 PFC 死锁的主要诱因(见 04-pfc死锁),也是恢复机制要应对的动态场景。
应对的关键是快速、无死锁地重算路由表:
- Up/Down 等无死锁二次路径**:故障后切到预定的无死锁备份路由
- Dmodc:面向 Parallel Generalized Fat-Tree 的快速确定性路由——用基于模运算的闭式公式计算转发表,配合快速预处理,能在不到一秒内对数万节点的拓扑完整重路由,让集中式 fabric 管理在故障后快速给出高质量、无死锁的路由表,且不影响运行中的应用[3]
核心矛盾:重路由既要快(故障常态化下不能慢)、又要保证新路由表无死锁——Dmodc 这类算法就是在解这个矛盾。
规模如何放大死锁面?
规模通过放大故障频率间接放大死锁面:万卡集群的链路 / 节点故障是常态而非例外,而 PFC 死锁恰恰由故障态重路由触发(见 04-pfc死锁)。
因果链:
- 节点越多 → 单位时间故障次数越多 → 重路由越频繁 → 形成 CBD 的机会越多 → 死锁概率上升
- 同时规模越大,单次死锁波及的流量越广(pause storm 传播范围大),恢复代价越高
这解释了为什么死锁在小集群里是理论问题、在万卡集群里是工程必须解决的问题,也是业界转向 Ultra Ethernet 去无损路线(见 03-流控与无损可丢)的规模动因——从源头消除死锁面,比在巨大规模上维持「检测 + 恢复」成本更低、更可控。
Takeaway
| 问题 | 结论 |
|---|---|
| 避免 vs 恢复 | 避免在设计期保证无环(缓冲贵);恢复运行期解除(省缓冲、降吞吐) |
| 检测 | 主流靠超时(watchdog);数据面探测用于 PFC 专项 |
| 恢复方式 | 回滚式(丢包重传,STAFR/AFBAR)/ 前进式(逃生通道,DISHA) |
| 故障重路由 | 故障引入新通道环 → CBD;靠 Up/Down 备份路由 + Dmodc 快速无死锁重路由应对 |
| 规模影响 | 规模放大故障频率 → 死锁概率与波及面上升 |
@tbl-deadlock-recovery-takeaway 死锁检测与恢复速查
开放问题
- 补一张「避免 / 检测 / 恢复」三层时序与代价对比图(drawio)
- 调研 ITSY / Roundabout 数据面检测的探测准确率与误判率
- 量化万卡集群故障率与 PFC 死锁触发频率的实测关系
参考资料
- Comparison of Deadlock Recovery and Avoidance Mechanisms to Approach Message Dependent Deadlocks in On-chip Networks, IEEE. https://ieeexplore.ieee.org/document/5507567/
- DBR: A Simple, Fast and Efficient Dynamic Network Reconfiguration Mechanism Based on Deadlock Recovery Scheme, arXiv:1211.5747. https://arxiv.org/pdf/1211.5747
- Gliksberg, Capra, Louvet, García, Sohier, High-Quality Fault Resiliency in Fat Trees (Dmodc), arXiv:2211.13101. https://arxiv.org/abs/2211.13101
延伸阅读
- 11.4 PFC 死锁 — PFC 死锁的预防与 ITSY / Roundabout 数据面检测
- 10.1 集群可靠性总览 — 100K GPU 集群故障图谱
- DCFIT/ITSY: Initial Trigger-Based PFC Deadlock Detection in the Data Plane — 数据面 PFC 死锁检测