跳转至

开启 Dev 模式

查看作者的未审核笔记。原有搜索、标签、分类和归档会同时切换。

2-Communication

导言

一台服务器装有八张 400 Gbps NIC,不等于任意一张 GPU 都能拿到八张网卡的总带宽。现有 GPU 集群通常把 GPU 与“最近的”NIC 静态绑定;当 LLM 推理请求、MoE token 或推荐模型 embedding 产生不均衡流量时,热点 GPU 会堵在一张 NIC 上,旁边的 NIC 却可能空闲。

OSDI 2025 论文 FuseLink 的核心思想,是把 NVLink/NVSwitch 从“服务器内部的 GPU 互连”重新解释为“跨服务器网络的数据路径延伸”:流量先经 NVLink 到达更适合访问空闲 NIC 的中继 GPU,再通过 RDMA 发往远端。本文沿论文 Figure 1、2、3、4、5、8 还原这条设计链,并用其余实验结果说明收益、代价与边界。

GPU-Initiated I/O

导言

把 SSD 数据送进 GPU,最直观的优化似乎是“绕过 CPU”。但这句话混合了两个不同问题:数据是否经过 CPU 内存,以及 I/O 请求究竟由 CPU 还是 GPU 发起。NVIDIA GDS 解决前者,BaM 进一步改变后者;代价是原本由 CPU 承担的队列管理、并发和缓存压力转移到了 GPU。

本文整理 DaMoN 2025 论文 Path to GPU-Initiated I/O for Data-Intensive Systems:先沿 Figure 1 比较五条 GPU-centric Storage 路径,再还原 BaM、GDS 与 SPDK 的实验边界。核心结论不是“GPU 发起一定更快”,而是系统应根据 CPU、GPU、PCIe、SSD 与数据复用状态,选择由谁支付 I/O 控制成本。

TurboBus PCIe Bandwidth Pooling

导言

GPU Memory Offloading 有一个很反直觉的现象:应用可能把大部分时间耗在 PCIe 搬运上,同一台服务器却仍有多数 PCIe 带宽处于空闲。问题不在于服务器缺少链路,而在于每块 GPU 只能使用自己名下的那条链路;不同 GPU、不同作业的搬运阶段又往往没有同时到来。

TurboBus 的核心思想,是把 NVLink、NVSwitch 等高速 Scale-Up Fabric 当成一条节点内的转发背板:繁忙 GPU 先把数据送到邻居 GPU,再借邻居的空闲 PCIe 链路访问 Host Memory。本文沿着论文 Figure 1、4、5、6、7 解释这条思路怎样从一张直觉图落成带隔离、流水、调度和 API 的系统,并区分实验已经证明的收益与仍受硬件拓扑、NUMA 和工作负载限制的外推。

Tutti SSD-Backed KV Cache

导言

把 KV Cache 放进 SSD 并不难,难的是让它取回来仍比重新 Prefill 更划算。GPU Direct Storage 已经能让数据绕过 Host DRAM,但每个 I/O 仍由 CPU 发起;Paged KV Cache 又会把一次长前缀恢复拆成海量小而散的请求。SSD 的标称带宽于是还没有用满,GPU 已经先停下来等数据。

Tutti 的核心不是再加一级缓存,而是重写 HBM 与 NVMe 之间的运行时路径:CPU 保留前缀索引和对象映射,却退出逐块 I/O 的数据与控制关键路径;GPU 通过对象化批处理、gio_uring 和 slack-aware 调度直接驱动本地 SSD。读完本文,应该能判断这三部分分别消除了什么瓶颈,以及论文的“接近 DRAM”结论在哪些条件下成立。