要点速览
- 强化SSD侧的计算能力,构建计算型存储并不是新话题,本文从存储RAID计算切入,讨论在SSD上实现RAID卸载的xPUs 设计(Fig-2/3);
- NVMe 在计算卸载中发挥重要作用(Fig-4);
- 通过PoC测试比较了卸载前后的CPU/内存资源使用情况(Fig-6)。
KIOXIA:RAID 计算卸载优化数据迁移-Fig-1
存储服务的演化进程
- 存储服务中的数据冗余需要大量计算资源。
- xPUs 正在用于加速存储服务栈的输入和输出。
- xPUs 在未来的性能方面将面临挑战 —— 随着每一代 PCIe 的出现,NVMe™性能持续翻倍。
Note:SSD的生命周期按4-5年估算,这个周期内PCIe可能有1-2次更新,每次更新都是带宽2倍提升,如何规划SSD中xPU的计算能力,需要产业界达成一致。
左侧下图是存储系统服务抽象层,从上往下;
- 面向业务/文件系统的 块设备、文件系统和数据库;
- 存储池/虚拟卷;
- 数据冗余计算层;
- RAID、EC(纠删码)数据放置层。
右侧是整个数据堆栈的示意图,较左侧的软件层抽象,右侧主要关注硬件的网络架构。
- 最下面是磁盘整列,通过PCIe交换机(扩展卡)接入主板上的NVMe协议层;
- 在此之上是RAID/EC等数据放置层算法;
- 核心是存储系统的控制器,负责调度存储阵列。
KIOXIA:RAID 计算卸载优化数据迁移-Fig-2
数据冗余存在哪些挑战?
- 奇偶校验计算需要大量内存带宽和 CPU 资源(后面有PoC数据)。
- 例如,RAID 5 的部分条带写入需要大约 10 倍的 DRAM 吞吐量,一个 4KB 块的 RAID 5 写入将消耗 40KB 的 DRAM 带宽。
- RAID 6 / 纠删码(EC)使问题更加严重。
- 为了满足这些需求,系统资源被过度配置。
KIOXIA:RAID 计算卸载优化数据迁移-Fig-3
左侧示意:存储系统的RAID/EC计算过程调用DRAM资源;
右侧示意:RAID/EC过程使用SSD阵列中自带的CMB(控制器内缓存)。
- 铠侠(KIOXIA)NVMe SSD 特性:
- 控制器内存缓冲(CMB)用于卸载 DRAM。
- 专用或(XOR)引擎可计算多达 8 个奇偶校验。
- 直接内存访问控制器(DMAC)。
- 将数据放置在主机地址空间(包括远程 CMB)。
- RAID 卸载能够实现并行计算和线性扩展。
Note:该技术实现依靠NVMe直接访存技术,与使用直连DRAM内存池相比,CMB除扩展DRAM容量之外还靠近SSD,具备落盘写入时延优势;存在的问题也很明显:是将每块SSD上的CMB单独使用,还是整合成大CMB缓存池?如何克服后者引入的分布式缓存一致性问题?
KIOXIA:RAID 计算卸载优化数据迁移-Fig-4
xPUs 如何利用 RAID - 示例命令流程
图上半部分展示了从 NVMe - oF™虚拟设备,接收新数据,然后将数据移动到 CMB,并涉及 xPU、DRAM 等组件。
Note:从右下角SSDd和SSDp在执行RAID计算的过程来看,对CMB的利用似乎是限制在单块SSD上的,因为需要将旧数据从p读到d上执行,XOR计算主要是在d盘上发生的。
KIOXIA:RAID 计算卸载优化数据迁移-Fig-5
为什么 xPU 应该用于 SSD RAID 卸载?
左侧内容:
xPU 可以利用其自身加速器,但为什么要卸载到 SSD?
- 加速器的性能会受到设计时间的限制。
- 高内存带宽需求会增加 xPU 的成本。
- SSD 卸载可以随着每个 SSD 添加到集群中线性扩展。
通过卸载……
- 节省用于增值存储功能的计算和内存带宽。
- 像数据清理这样的操作可以卸载到 SSD 上;数据清理操作的数据移动减少 99%。
- 开发具有成本效益的数据处理系统和解决方案。
- xPU 可以通过利用其远程直接内存访问(RDMA)功能扩展 RAID 解决方案。
KIOXIA:RAID 计算卸载优化数据迁移-Fig-6
RAID 卸载前后的基准测试数据
左侧是整个NVMe-oF网络拓扑结构,右侧是基准测试数据。
RAID 卸载性能提升:
- CPU 使用率降低 12%,释放了更多计算资源。
- DRAM 带宽减少 91%,显著降低内存带宽占用。
数据清理性能提升:
- 数据清理时间减少 29%。
- DRAM 带宽需求降低 86%。
- CPU 使用率减少 ~30%。
- L3 缓存未命中次数显著减少(从 14.7M 降至 4M)。
- PCIe 写入带宽减少超过 95%,从 3694 MB/s 降至 159 MB/s。