1. 课程导入与全景认知
在传统服务器里,CPU 既要运行业务应用,又要处理网络协议栈、中断、内存拷贝、块设备 I/O 调度,存储路径上的每一层都会消耗通用算力。当业务转向全闪存、分布式存储和 NVMe-oF(NVMe over Fabrics)后,这种矛盾被进一步放大:NVMe SSD 的时延已经进入微秒级,而主机侧协议处理、TCP/ RoCE 封装解封装、队列管理与中断聚合往往成为新的瓶颈。Marvell DPU(Data Processing Unit)正是为这类“数据面卸载”而设计的专用处理器,它把存储、网络、安全等基础设施任务从主机 CPU 迁移到 DPU 上,让主机专注于业务逻辑。
理解 Marvell DPU 的定位,需要先区分它与普通网卡、与通用 SoC 的差别。普通 SmartNIC 通常只做部分流表卸载或加密卸载;而 DPU 具备可编程的多核 ARM 子系统、专用网络与存储加速引擎、独立内存与 PCIe 通道,能够承载完整的 NVMe-oF target/initiator、virtio-blk、vhost、加密压缩、RDMA 等数据面服务。Marvell 的 OCTEON 系列 DPU 与 FastLinQ/QL 系列智能网卡在存储加速上各有侧重:前者强调多核可编程与高密度网络接口,后者在 NVMe-oF、iSCSI、FCoE 等存储协议卸载上积累深厚。本课程以存储与 NVMe-oF 加速为主线,把两者统一到“主机卸载 + 网络存储加速”的工程视角下。
从核心价值看,Marvell DPU 在存储场景中主要解决四类问题。第一是时延与抖动:把 NVMe-oF 的传输层处理下沉到 DPU,减少主机内核路径上的上下文切换与拷贝,使 P99 时延更稳定。第二是主机 CPU 占用:将中断处理、协议解析、数据搬移交给 DPU 的加速引擎,可释放出可观的 CPU 核用于业务。第三是存储协议多样性:同一块 DPU 可同时呈现 NVMe-oF、iSCSI、NFS 等不同前端,后端统一接入本地 NVMe 或远端存储池。第四是安全与隔离:在 DPU 上完成加解密、访问控制与多租户隔离,避免主机侧软件栈成为攻击面。
典型部署形态可以归纳为三种。其一是主机内卸载卡形态:DPU 以 PCIe 卡形式插在服务器中,对主机呈现为一块或多块 NVMe 设备,主机侧使用标准 nvme 驱动即可,无需改动业务;DPU 内部完成 NVMe-oF initiator 到远端 target 的转换。其二是存储 target 节点形态:DPU 作为 NVMe-oF target,把本地 NVMe SSD 通过 RDMA/TCP 暴露给计算节点,承担命名空间管理、连接管理与 QoS。其三是边缘/一体机形态:DPU 同时承担网络转发与存储服务,在资源受限的边缘节点上把计算、网络、存储三张网合并到一张卡上。三种形态共享同一套软件栈,差别主要在角色配置与前端协议选择。
为了让后续章节的学习路径清晰,这里先给出一个全景关系:主机侧通过 PCIe 与 DPU 交互,DPU 内部由 ARM 核、网络加速引擎、存储加速引擎、DMA 与内存子系统组成;对外通过以太网/RDMA 连接远端存储或计算节点。数据流的方向是:主机应用发起块 I/O → 主机 NVMe 驱动 → DPU 呈现的虚拟 NVMe 控制器 → DPU 内 NVMe-oF 协议处理 → RDMA/TCP 封装 → 网络 → 远端 target。反向路径同理。理解这条链路,是后续做性能调优、故障定位和参数配置的基础。
学习路径上,建议按“认知—配置—调优—排障”四层推进。认知层要弄清 DPU 的角色、接口与数据流,也就是本节的链路图;配置层要掌握主机侧识别虚拟 NVMe、DPU 侧建立 NVMe-oF 连接、target 侧导出命名空间的具体命令与参数;调优层关注队列深度、中断聚合、MTU、PFC/ECN、NUMA 亲和性等对时延和吞吐的影响;排障层则要能通过 dmesg、nvme list、rdma 统计、DPU 侧日志定位链路断点。后续章节会围绕这条主线逐步展开,每一节都会落到可观察、可验证的工程对象上。
nvme list 能看到 DPU 呈现的命名空间,且 nvme id-ctrl 返回的控制器信息与 DPU 配置一致,说明主机到 DPU 的 PCIe 呈现层已通;如果 DPU 侧 NVMe-oF 连接建立成功,远端 target 的 nvme list-subsys 能看到对应子系统,说明数据面链路已具备继续调优的基础。