Phoenix 论文阅读:一种不使用伪缓冲区的 GPU Direct Storage 重构方案
按原论文结构详译 SC'25 论文 Phoenix:解释 NVIDIA GDS 的伪缓冲区问题、基于 ZONE_DEVICE 的 GPU 显存映射、POSIX/io_uring 编程模型,以及本地 NVMe、远程存储、KV Cache 和模型加载实验。
按原论文结构详译 SC'25 论文 Phoenix:解释 NVIDIA GDS 的伪缓冲区问题、基于 ZONE_DEVICE 的 GPU 显存映射、POSIX/io_uring 编程模型,以及本地 NVMe、远程存储、KV Cache 和模型加载实验。
深入解析 xPU-IO/Phoenix:它如何通过内核模块、用户态库和应用适配器,将 SSD 数据直接送入 GPU 显存;并比较 full BAR、staging、batch、stream 等数据路径的实现与取舍。
nvidia-fs 是 NVIDIA GPUDirect Storage(GDS)的 Linux 内核模块。它不是一种文件系统,而是连接 libcufile、NVIDIA GPU 驱动、Linux 文件 I/O 和支持 GPUDirect 的存储驱动的一层内核协调组件。 这组文章阅读 NVIDIA 官方 gds-nvidia-fs 仓库,采用的版本为: commit: 328d1d8cce1175c013720985c30e123e9a35242c GDS_VERSION: 2.29.4 commit date: 2026-06-01 系列分为三篇: 模块初始化、设备接口与整体架构; GPU 内存注册、页表与 DMA 映射; 文件 I/O、批量请求、完成路径与可观测性。 本文先回答一个问题:加载 nvidia_fs.ko 后,内核里究竟多了什么? 一、源码目录 核心代码都位于 src/: 文件 职责 nvfs-core.c/.h 字符设备、ioctl、GPU 内存注册和文件 I/O 主流程 nvfs-mod.c 与 NVMe、RDMA 等外部模块动态注册 DMA 回调 nvfs-mmap.c/.h GPU 页对应的影子 struct page 和 mmap 管理 nvfs-dma.c/.h block request 到 GPU DMA 地址的映射 nvfs-batch.c/.h 批量 I/O 提交与完成 nvfs-rdma.c/.h RDMA 注册信息管理 nvfs-pci.c/.h GPU 与存储设备的 PCIe 拓扑、距离和亲和性 nvfs-proc.c、nvfs-stat.c /proc 配置、统计和诊断接口 nvfs-kernel-interface.c 不同 Linux 内核版本的兼容封装 主线集中在 nvfs-core.c,但真正的数据直达能力是多个文件共同完成的。 ...