☰
DPU卸载纠删码与加密:解决AI对象存储的CPU瓶颈
2026/9/27 22:57:42 网站建设 项目流程

一个千卡训练集群跑到半夜,GPU 利用率掉了下来,排查下来是存储节点的 CPU 满了:它在给每一个对象算纠删码、做加密,盘和网络反而有空闲。计算等数据,数据卡在编码上,这是 AI 数据中心里很典型的错位。网卡走到 100G、200G 之后,线速折算过来是每秒十几 GB 的持续流量,纠删码编码、压缩、加密这些计算密集步骤全压在通用 CPU 上,CPU 会先于磁盘成为瓶颈,把这部分重活从 CPU 挪出去是数据面优化的主要方向,目前讨论最多的落点就是 DPU。

GPU 等数据的时候,CPU 在算什么

全闪集群的顺序吞吐早就够用,摩擦集中在三处。

一处是小对象与元数据的并发。训练数据往往是海量 KB 到 MB 级文件,4KB 小对象 PUT 的吞吐直接决定 checkpoint 落盘和样本加载的节奏。RustFS 官方仓库的压测章节给过一组数据:4KB 小对象 PUT 吞吐约为 MinIO 的 2.3 倍,工况是 2 核 Xeon 8475B、4GB 内存、15Gbps 网络、4 盘。这是软件层优化拿到的成绩,但同一组数字也说明,这些开销最终都记在 CPU 账上,负载再往上涨,先见顶的是 CPU。

另一处是数据面的搬运开销。传统路径里,对象从网卡进来,拷贝进主机内存,CPU 算完纠删码和加密,再落到盘,每一跳都有内存拷贝和上下文切换。线速越高,CPU 花在搬运和编码上的占比越大,留给业务的算力越少。

第三处容易被漏掉:盘坏了之后的重建与跨节点恢复。存活分片要重算回缺失的分片,这既是重计算也是重网络,一次 12+4 布局下的大批量重建就能把存储节点 CPU 拉起来,白天看不出来的问题全在恢复窗口里发作。

DPU 能接管哪一段

DPU 是带独立算力的网卡,专门替主机 CPU 干网络、存储、安全这几类搬运加计算的活。落到对象存储数据面,它能接的是两段。

第一段是传输。RDMA 让数据从对端内存直达本端,绕过内核协议栈,主机 CPU 几乎不碰报文,延迟和抖动都跟着降。RDMA 本身并不依赖 DPU,支持 RoCE 的普通网卡就能跑,DPU 的意义在于把传输卸载和下文的计算卸载收进同一块卡,不用再各配一套。

第二段是计算。纠删码的编码和解码、压缩、加密,这些步骤挪到 DPU 上执行,主机 CPU 留给真正的业务和调度。

边界同样要划清:纠删码布局、一致性校验、持久化这些数据正确性逻辑,仍然归存储进程管,DPU 接的是加速,不接语义。两条路径的分工见下图。

存储和 DPU 之间怎么分工

实现思路分两条。一条以 DPU 为主角:对象流进来后,切片、纠删码编码、解密加密都在 DPU 上完成,落到盘的就是分片,主机 CPU 只管元数据、对象归属这类判断。另一条以存储进程为主角:存储进程维持原有流程,把编码这类重活切给 DPU 的加速引擎,算完再把分片交回主机落盘。差别在于主机 CPU 介入到哪一步,也决定了引擎被替换时存储进程要不要跟着改。

一次写请求在数据面上大致分三段:请求进 DPU,编码与加密在 DPU 侧完成,分片落盘;存储进程更新元数据与对象归属;两者对账分片落盘结果。中间要不要多一次内存拷贝、拷贝发生在主机内存还是 DPU 侧,官方目前没有公开细节。加密这边还有一层要分清:密钥管理通常不在卸载范围内,KMS 里的轮换与访问控制仍在主控侧,DPU 做的是拿密钥执行解密这个动作。把这两件事在选型阶段问清楚,比先看卡的性能指标更重要。

这条路线走到哪一步了

RustFS 在 2026 年 4 月 9 日官宣加入 NVIDIA Inception 计划,官方公布的方向里,RDMA 支持与把纠删码、压缩、加密 offload 到 DPU,是 AI 原生存储数据面这条线上的规划。要分清的是:这是路线图,不是 1.0.0 里已经存在的开关。

2026 年 9 月 16 日 GA 的 1.0.0 里,稳定可用的是软件层那部分:官方多节点多盘(MNMD)部署文档给出的默认布局是 12+4 纠删码,每个对象被拆成 12 个数据分片加 4 个校验分片,分散存进不同服务器的不同磁盘,所以任意一个节点故障或至多 4 块盘损坏都不影响数据安全;上一节示例里 4 节点、每节点 4 盘共 16 个端点,正好对应这套布局。加密走 KMS;multipart、版本化、对象锁都在支持列表里。DPU 卸载是叠加在这一层之上的加速层,什么时候进版本,以 Releases 变更说明和官方文档里的新配置项为准。

评估这条路线还要把现实成本算进去:DPU 卸载落地时会绑定具体硬件,不同厂商的卸载能力与驱动成熟度差异不小,卡本身也是一笔新增采购。官方目前没有给出进版本的时间表,选型时建议把这部分硬件投入和软件层收益放在一起权衡。

什么负载值得上,什么负载不必

值得上的,共同点是数据面持续吃 CPU 且带宽已经接近跑满。AI 训练的高并发样本加载、小文件密集的 checkpoint 落盘、跨机房或上云的大批量迁移都属于这一类,它们的 CPU 常年在高位,卸载掉编码和加密省下的算力能直接换成更多并发。

收益小甚至没必要的也有。离线备份与归档是吞吐低、白天跑不完一半的负载,DPU 卡的钱摊到全年利用率上算不划算;集群还小、单节点带宽没到 25G 的阶段,瓶颈在网络和盘,卸载编码救不回来;冷数据那种写一次读几次的对象,路径上省下的编码开销也不够抵消卡的成本。

自己算一笔账就能定:看高峰时存储节点的 CPU 使用率是多少、编码和加密在其中占几成、网络带宽占用到几成。CPU 已经压到瓶颈而网络还有余量,卸载才有意义;网络和盘先顶到上限的,要扩的是这两样,不是加一张卡。

现在就能落地的部分

加速层没到,底座可以先立起来。官方 MNMD 模式最少 4 个节点,每个节点的配置文件完全一致,密钥用openssl rand -base64 24生成强随机值:

RUSTFS_ACCESS_KEY=<自定义访问密钥>RUSTFS_SECRET_KEY=<openssl rand-base6424的输出>RUSTFS_VOLUMES="http://node{1...4}:9000/data/rustfs{0...3}"RUSTFS_ADDRESS=":9000"RUSTFS_CONSOLE_ENABLE=trueRUSTFS_CONSOLE_ADDRESS=":9001"

RUSTFS_VOLUMES用大括号展开把 4 个节点、每节点 4 块盘共 16 个端点枚举进同一个变量。这套三点式{1...4}展开由 RustFS 自己解析,不是 shell 的花括号语法,原样带引号写进配置文件即可。各节点拿着同一份配置启动,即进入 12+4 纠删码的分布式模式。三件事现在就值得排期:把这套 MNMD 集群跑起来,按 12+4 布局把容量和容错规划做实;有合规要求的接 KMS,把密钥管理立起来;盯 GitHub Releases 的变更说明,RDMA 与 DPU 相关能力进入版本后,先在测试集群实测一轮端到端吞吐,再定生产升级的节奏。

RustFS 1.0.0 已于 2026-09-16 正式 GA,Apache 2.0 协议,仓库在 https://github.com/rustfs/rustfs 。现阶段能做的,就是按官方文档把这套 MNMD 集群和加密链路配到位,等 DPU 卸载进入版本,在同一套底座上实测。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询