RDMA网卡 PFC水线设置影响
RDMA网卡 PFC水线设置过低,过高 会有什么样的后果,硬件怎么处理
阈值过低(XOFF 太早 / headroom 太小)
- 频繁触发 PFC XOFF:链路/队列被频繁暂停与恢复,导致吞吐下降和高延迟抖动。
- 流量时序恶化:短时间内大量 XOFF/XON 切换引发 TCP/上层重传与队列倒置(head-of-line blocking)。
- 不公平/优先级干扰:本应承载高优先级 RDMA 的队列被过早限流,影响延迟敏感流量。
- 硬件表现:网卡/交换机会在达到 XOFF 阈值时立刻停止接收/发送相应优先级帧并记录 XOFF 计数;如果 headroom 不足仍可能发生丢包(在触发和生效之间存在短暂数据在飞行)。
阈值过高(XOFF 太晚 / headroom 预留不足)
- 丢包风险上升:当队列继续填满到物理缓冲耗尽时,会发生丢包,导致 RoCE 重传、性能崩溃与更高延迟。
- 交换机缓冲压力突增:单向或多流突发会耗尽共享缓冲,导致其它优先级被影响(互相挤占)。
- 链路恢复滞后:XOFF 触发滞后,缓冲已经接近临界点,恢复需要更长时间,可能出现长尾延迟。
- 硬件表现:到达硬件 buffer 上限后,交换机通常直接丢弃超出部分包(统计 drop);网卡在发送端若接收到下游丢包/重传,会触发上层重试;部分交换芯片在极端情况下会产生 panic/port-disable(少见,取决厂商)。
XON/XOFF 差值设置不当
- 差值过小:XON 很接近 XOFF,会导致频繁来回切换(抖动)。
- 差值过大:恢复缓慢,会造成长期暂停和吞吐浪费。
Headroom 设置不当
- 过小:在 PFC 信号传递与网络中数据“在飞行”期间无法容纳数据突发,导致丢包。
- 过大:占用过多缓冲资源,减少系统能分配给其它优先级或流的容量,降低整体吞吐与公平性。
硬件具体处理机制(通常行为)
- PFC 机制:当队列占用超过 XOFF 阈值,设备发送 PFC XOFF 帧至相邻对端,指示暂停对应 PCP 优先级;当降至 XON 阈值时发送 XON 恢复。
- 缓冲管理:交换机/网卡维护 per‑priority/ per‑port 队列与共享缓冲池;根据配置的队列深度与 headroom 执行分配与回收。
- 丢包与丢弃策略:到达物理缓冲极限时,交换机一般按队列/优先级或基于 RED/ECN(若启用)进行丢弃;部分设备支持 tail-drop 或基于流的丢弃。
- 计数与告警:硬件会统计 XOFF/XON 帧数、队列占用峰值、drop 计数与错误事件,用于诊断。
简短建议:把 XOFF 设为队列深度的 ~60%,XON 低 ~20–30%(如 35%),Headroom 用 2RTT带宽+安全余量 计算并与交换机缓冲能力对齐;在大流/突发场景下做压测验证并监控 XOFF/XON、drop 与延迟指标。
