FaRM 是 RDMA 分布式平台的先驱——通过 one-sided RDMA lock-free reads + ring buffer messaging 实现 10× throughput / 100× lower latency vs TCP/IP。与以下五篇论文共同构成"RDMA/bypass 驱动的分布式调度"研究簇:
| 论文 | 关系 | 关联维度 |
|---|---|---|
| KRCore | successor | KRCore 解决 FaRM 未触及的 RDMA QP 扩展性瓶颈——FaRM 用 connection multiplexing 绕过 QP 数量限制 [farm-nsdi14],KRCore 通过 DCT 虚拟化从根本上消除 QP 创建代价 [2201.11578] |
| OnePiece | downstream | OnePiece 的 double-ring buffer 是 FaRM ring buffer messaging 在变长消息场景的演进 [2601.20655]。FaRM 的定长消息 ring buffer + lock-free reads 模式直接启发了 OnePiece 的 RDMA 通信设计 |
| Blink | downstream | Blink 的 DPU-GPU ring buffer 继承 FaRM 的 ring buffer 范式(sender 写 receiver ring buffer + receiver 轮询)[2604.07609],但将消费者从 host CPU 改为 GPU persistent kernel |
| RackSched | orthogonal | RackSched 在网络设备(交换机)做计算 [racksched-osdi20],FaRM 在端侧用 RDMA 替代网络协议栈——两者是 bypass 技术的网络侧 vs 端侧分支 |
| CPU-Slowdowns | validates | CPU-Slowdowns 量化了 CPU 控制面瓶颈 [2603.22774]——FaRM 的 one-sided RDMA lock-free reads(完全绕过远端 CPU)[farm-nsdi14] 正是此类瓶颈的解法原型 |
FaRM 假设 RDMA 连接已建立,用 connection multiplexing 管理 QP 数量 [farm-nsdi14]——$q$ 个线程共享一个 QP,通过调节 $q$ 平衡并行度和 NIC 缓存压力。KRCore 证明这种绕行不够:随着集群规模扩大,即使用 multiplexing 仍面临 QP 创建吞吐瓶颈(verbs: 712 QPs/s)[2201.11578]。FaRM 的 PhyCo 2GB regions 解决 NIC page table 扩展性 [farm-nsdi14],KRCore 的 DCT 虚拟化解决 QP 创建扩展性——两者互补解决 NIC 两个独立瓶颈。
FaRM 在 software → hardware implications 中预见了 DCT 的价值:"Dynamically Connected Transport would solve queue pair scalability without application-level multiplexing hacks" [farm-nsdi14]——KRCore 正是这一预言的实现。
FaRM 的 ring buffer 设计简洁:sender 写 receiver 侧预分配 circular buffer,receiver 轮询 head pointer [farm-nsdi14]。消息定长(16–512 bytes),buffer 管理仅需 head/tail 指针。OnePiece 将此模式扩展到变长消息:分离 buffer region 和 size region、CAS spinlock 保护 multi-producer 互斥、busy bit + timeout 保证 liveness [2601.20655]。
核心 delta:FaRM 的 ring buffer 是 single-producer-single-consumer(SPSC),OnePiece 是 multi-producer-single-consumer(MPSC)。MPSC 引入了 CAS 竞争和死锁风险——FaRM 无需处理的复杂性。但 FaRM 的 lock-free read 方案(cache-line versioning)[farm-nsdi14] 提供了一种更优雅的无锁一致性机制,OnePiece 未采用此思路而选择了 spinlock——可能因为 cache-line versioning 假设 x86 DMA coherence,不适用于跨 NIC 的 CAS 操作。
FaRM 的数据面由 host CPU 的 pinned threads 驱动(事件循环轮询 RDMA completions)[farm-nsdi14]。Blink 将这个角色交给 GPU 的 persistent kernel——256 GPU 线程替代 CPU pinned threads 轮询 ring buffer [2604.07609]。核心 delta:FaRM 优化了"CPU 怎么用 RDMA",Blink 回答了"能否完全不用 CPU"。
FaRM 的 lock-free read 正确性依赖三个 x86 硬件属性(RDMA write ordering、cache-coherent DMA、compiler barriers)[farm-nsdi14]。Blink 的 DPU-GPU ring buffer 正确性依赖 CUDA atomic CAS + RDMA memory fences——不同的硬件基础但同样的设计理念:利用硬件保证避免软件层锁。
FaRM 和 RackSched 代表 bypass 技术的两条路线:端侧(用 RDMA 加速每个操作的数据面)vs 网络侧(用交换机加速请求分发的控制面)。FaRM 通过 one-sided RDMA 实现 146M lookups/s [farm-nsdi14],加速比来自绕过 TCP/IP。RackSched 通过交换机数据面实现近线性扩展 + 单服务器级尾延迟 [racksched-osdi20],加速比来自绕过 CPU 调度。两者可组合:RackSched 路由请求到正确 machine → FaRM 在该 machine 上用 RDMA 处理。
CPU-Slowdowns 发现 vLLM 的 shared-memory broadcast(1-writer-N-reader)在 CPU oversubscription 下 dequeue 膨胀 19× [2603.22774]。FaRM 的 RDMA ring buffer messaging 是此问题的直接替代方案——用 RDMA WRITE 替代 shared-memory IPC,远端 zero-CPU involvement [farm-nsdi14]。但 FaRM 设计于 2014 年的 KV-store 场景,直接应用到 LLM 推理需要适配:消息从 KV 操作变为调度元数据 + prompt/token,通信模式从 request-response 变为 broadcast(1 EngineCore → N GPU workers)。
FaRM 是"RDMA 替代 TCP/IP"范式的奠基工作,占据不可替代的生态位:
在 LLM 推理语境下,FaRM 的直接适用性有限(为 KV-store 而非推理设计),但其技术范式是整个研究簇的根基。从 FaRM 到 Blink 的演进路线清晰:
FaRM 不会被"替代"——它定义了问题框架和技术方法论,后续工作在不同维度延伸同一范式。