跳到主要内容

总览

本章节范围:AI 训练 / 推理集群互联网络中的死锁问题——死锁如何形成、业界用哪些手段在各层打破循环依赖,以及不同互联 fabric 的处理路线对比 目标读者:数据中心网络架构师、AI 训练系统工程师、需要理解 RoCE / InfiniBand / Ultra Ethernet 无损与死锁权衡的研究者

范围与边界 (Scope)

  • 包含
    • 死锁的本质:循环缓冲依赖(CBD)与通道依赖图(CDG)判据
    • 两类死锁:路由诱发(routing-induced)与协议诱发(protocol-induced)
    • 分层破环模型:理论判据 / 流控 / 协议事务 / 集合通信各层手段
    • PFC 死锁专题:以太网无损网络特有的死锁与预防
    • 各 fabric 死锁处理路线对比(NVLink / InfiniBand / RoCE / Ultra Ethernet)
    • 死锁检测与恢复,以及大规模故障场景下的死锁面
  • 不包含
    • 路由算法本身的机制(ECMP / DOR / 自适应 / packet spraying)→ 见 03-路由算法;本章只补各路由的「死锁视角」
    • 集合通信算法的延迟 / 带宽推导 → 见 04-集合通信
    • 拥塞控制协议(DCQCN / Timely / Swift)→ 见 01-硬件互联 RoCE 章节
    • 集群故障图谱与 Straggler 检测 → 见 10-集群可靠性

名词定义

名词定义
死锁(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 model02-死锁理论基础
路由层路由诱发维序路由 DOR、torus dateline 切 VC、fat-tree up-down、escape VC03-路由算法 各篇的死锁视角
流控层提供必要条件credit-based vs PFC、无损 vs 可丢取舍03-流控与无损可丢
流控层(PFC 专题)路由诱发(pause 传播)CBD 消除、Tagger、Flattened Clos、PFC watchdog04-pfc死锁
协议 / 事务层协议诱发按 message class 拆独立虚网络05-协议事务层死锁
集合通信 / 应用层应用逻辑死锁ring / tree 算法依赖天然无环 + 跨 rank 调用序一致07-集合通信死锁

@tbl-deadlock-overview-layers 分层破环模型

路由层的破环手段(DOR / dateline / up-down 等)已在 03-路由算法 各篇详述,本章不重复,仅在那些文档补充「死锁视角」小节。

各 fabric 处理路线对比(导引)

不同互联 fabric 因无损机制不同,死锁的暴露面与处理手段差异很大。下表是导引概览,完整对比见 06-fabric死锁对比

Fabric无损机制破环主手段死锁风险点
NVLink / NVSwitchper-VC credit交换 ASIC 内置 VC + 按 message class 分虚网络厂商在硬件设计期消解,对用户透明
UALinkper-VC credit(scale-up 总线)TL / DL 层 VC + credit 流控,规范设计期处理类 NVLink scale-up,对用户透明
InfiniBandper-VL credit子网管理器算无死锁转发表;fat-tree up-down,不规则拓扑用 LASH / DFSSSP路由表算错 / VL 不足
RoCEv2(以太网)PFC pauseClos + up-down 无故障时无环;Tagger / Flattened Clos 兜底PFC 死锁(最棘手)
Ultra Ethernet(UEC)link 层 LLR 可靠重传替代 PFCtransport 层 packet spraying + trimming 容忍乱序 / 丢包link 层保可靠、transport 层容丢,绕开 PFC 死锁

@tbl-deadlock-overview-fabric 各 fabric 死锁处理路线导引

趋势:业界正从「靠无损 + 集中算无死锁路由表」(InfiniBand 范式)转向「放弃严格无损、用快速重传容忍丢包」(Ultra Ethernet 范式),本质是承认万卡规模下维持无死锁无损网络的代价过高。

子文档索引 (Index)

索引按最佳阅读顺序排列(沿协议栈自底向上 → 综合 → 应用 → 运维),编号即阅读顺序;优先级列标注写作优先级(与阅读顺序正交):

文档优先级一句话内容
11.2 死锁理论基础MustCDG 无环判据、Dally-Seitz 定理、Duato escape channel、turn model
11.3 流控与无损可丢Mustcredit vs PFC 背压机制、无损 vs 可丢的根本取舍、UEC 去无损路线
11.4 PFC 死锁MustPFC 死锁的 CBD 成因、Tagger、Flattened Clos、PFC watchdog 运维
11.5 协议事务层死锁Should请求-响应互锁、message class 虚网络、CXL / cache 一致性
11.6 各 fabric 死锁处理对比MustNVLink / UALink / InfiniBand / RoCE / Ultra Ethernet 死锁处理横向对比
11.7 集合通信死锁ShouldNCCL 调用序与 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)。相关章节: