本文主要内容参考自白皮书《NVMe over TCP Storage Disaggregation Accelerated by AMD Alveo U45N SmartNIC》,同时也添加一些我的学习笔记分享给大家。
摘要
在快速发展的数据中心和云计算领域,存储与计算资源的解耦已成为提升扩展性和效率的关键策略。本白皮书探讨了将 AMD AlveoTM U45N 网络加速卡与 FPGA 中的硬件加速引擎相结合的 NVMe over TCP 解决方案,如何通过卸载计算密集型操作实现卓越性能,尤其是相较于传统基于网卡(NIC)的解决方案。借助 AMD FPGA 的算力和经过硬件优化的 NVMe over TCP 解决方案,该方法在性能、扩展性和灵活性方面具有显著优势。
相关内容参考
《NVMe-oF三种协议(FC、RDMA、TCP)对比:成败不只看性能》
《NVMe over TCP:iSCSI的接班人?》
技术概述
NVMe over TCP:存储解耦的关键解决方案
高性能的NVMe协议旨在实现对存储设备的访问,其速度可与闪存相媲美。传统上,NVMe 通过 PCIe(R) 连接运行,这种连接虽能提供出色性能,但受物理距离限制。将 NVMe 扩展到 TCP/IP 之上,可利用标准以太网网络,使存储和计算资源能分布在不同位置,同时保持低延迟和高吞吐量。
存储解耦是现代数据中心的一项关键策略,它能实现存储资源与计算资源的分离。这种分离可提高资源利用率和扩展性,而这对于企业处理日益繁重的工作负载而言至关重要。NVMe over TCP 的一个显著优势是能与现有的数据中心 TCP/IP 网络无缝集成。与 NVMe over RDMA(后者通常需要对特定基础设施进行改造)不同,NVMe over TCP 利用普遍存在的 TCP/IP 协议,最大限度减少了对网络架构进行额外设置或更改的需求。这使其成为那些希望在不对现有基础设施进行重大改造的情况下实现存储解耦的企业的理想解决方案。
FPGA 在加速 NVMe over TCP 中的作用
FPGA 凭借其独特能力,在加速 NVMe over TCP 方面发挥着关键作用。与功能固定的ASIC 不同,FPGA 具有可编程性和灵活性,这使得它们能在制造后针对特定任务进行配置。此外,FPGA 可将定制化加速功能直接集成到存储数据流水线中(内联方式),从而在不偏离数据流路径的情况下,对加密、压缩或重复数据删除等关键操作进行实时处理。这种内联能力可减少延迟、优化带宽利用率,并减轻 CPU 的计算任务负担,同时还能保持对不断发展的标准或新工作负载进行重新编程的灵活性。这些综合优势使 FPGA 特别适合用于加速 NVMe over TCP,并能跟上存储解耦技术的快速发展步伐。
AMD Alveo U45N 网络加速卡充分体现了 FPGA 如何加速 NVMe over TCP。该卡采用先进架构,包含超过 100 万个查找表(LUT),基于 AMD UltraScale+TM架构构建,在实现高吞吐量的同时将延迟降至最低。通过将存储数据处理任务(如 NVMe 命令处理、带数据包处理功能的TCP/IP 协议栈以及数据移动)卸载到硬件,FPGA 大幅降低了软件开销,提高了整体系统效率。此外,Alveo U45N 集成了Arm(R) Cortex(R)-A72 处理器,能够直接在卡上高效处理 NVMe 协议栈,无需主机 CPU 参与存储相关任务,从而确保资源的优化利用。这种基于硬件的加速与集成处理能力相结合,确保了 NVMe 命令和 TCP/IP 协议的高效执行,其性能优于传统的基于软件的解决方案。
U45N 还支持 2×PCIe Gen4 x8 和双 100 GbE 端口网络等高级功能,使其成为高性能存储解耦工作负载的理想选择。它能够同时处理 NVMe over TCP 工作负载的数据路径和控制路径,这一点凸显了 FPGA 在现代存储架构中的价值。
NVMe over TCP Initiator(发起端)解决方案详情
为在 U45N 上支持 NVMe over TCP 加速解决方案,AMD 与领先的网络和存储解决方案合作伙伴之一 Mangoboost 展开了合作。Mangoboost 的 StorageBoostTM NVMe/TCP 发起端(NTI)是一款创新解决方案,旨在显著提升 NVMe over TCP 环境下的效率和性能。作为发起端,NTI 能高效管理主机系统与远程存储设备之间的通信。
NTI 通过将整个 NVMe/TCP 协议栈卸载到 AMD Alveo U45N 智能网卡或网络加速卡上,摆脱了对主机 CPU 资源的依赖,从而实现了极高的效率。这种方式可确保全双工线速性能,同时将 CPU 消耗降至最低。
图 1:NVMe over TCP 软件栈:NTI 与传统 NVMe-oF 发起端对比
NTI 作为标准 NVMe-PCIe 设备无缝集成到发起端服务器中,使现有系统能够使用标准驱动程序,无需任何软件修改,从而促进存储解耦的顺利采用。这对大多数开发者而言是一项关键需求,因为它消除了对专用驱动程序的依赖。
NTI 的架构针对性能进行了优化。U45N 的片上系统(SoC)负责处理计算强度较低的任务,如初始化和管理命令处理。对于对性能要求更高的操作 —— 例如从 NVMe-PCIe 到 NVMe-TCP 的协议转换以及 TCP 数据包处理 —— 则由 FPGA 接管,其配备的高度优化引擎能大幅降低 CPU 负载。
在目标端,NTI 与标准 TCP/IP 网络和以太网交换机的兼容性确保了其能无缝集成到现有存储基础设施中。这种兼容性有助于高效利用存储解耦带来的优势,使其成为适用于多种存储环境的通用解决方案。
此外,NTI 具备 PCIe 带内通信通道,使主机系统能够管理网络配置并从 SoC 检索日志。集成的 NVMe/TCP 代理通过自动化初始化过程简化了操作,从而提高了整体效率。
性能对比:AMD Alveo U45N vs. NVIDIA CX6
为探究两种 NVMe over TCP 工作负载解决方案的性能差异,我们在相同的服务器硬件上进行了分析。这确保了对 AMD Alveo U45N FPGA 搭配 Mangoboost NTI 解决方案,与 NVIDIA ConnectX-6 Dx 上的软件 NVMe over TCP 协议栈之间的对比公平且具有可比性。
图 2:NVMe over TCP 测试设置
NVMe over TCP Initiator and Target Servers Hardware
o 服务器: PowerEdge R7615
o CPU: 9174F 16-core (single socket, SMT = OFF)
o 内存: 192 G (12 x 16 GB) DDR5 4800
NVMe over TCP Initiator Configuration
o AMD Alveo U45N with MangoBoost solution
o Nvidia ConnectX-6 Dx
NVMe over TCP Target Configuration
o Nvidia ConnectX-6
o NULL block device used in testing(在目标端使用内存模拟块设备)
软件环境
o OS: Ubuntu 22.04.5 LTS
o Kernel: 5.15.0-94-generic
o GRUB parameters: amd_iommu=on iommu=pt irqpoll
o SPDK version: 24.01
o MangoBoost solution: MangoBoost-nvme-tcp-2025-03-21
o Nvidia drivers and firmware
- ConnectXTM driver version: 24.10-2.1.8
- ConnectX 6-DX firmware version: 22.39.1002
编者注:在配合本次测试的NVMe/TCP存储目标端,使用的网卡硬件也是ConnectX-6。通过SPDK加上底层用内存来模拟NVMe后端块设备,来尽量达到更高的性能。这样规避了SSD等Target端瓶颈因素,有助于对比Initiator性能。
本次对比使用flexible I/O 测试工具(FIO)进行,这是一款行业标准的开源存储性能基准测试工具。
下图显示,在 32 个并发任务的工作负载配置下,对于所有测试的块大小,搭配 Mangoboost NTI 的 Alveo U45N 相比 CX-6 Dx,在 NVMe over TCP 读取性能方面均表现出显著优势。在 FIO 基准测试中使用 4 KB 块大小时,U45N 实现了537 万 IOPS(175.96 Gb/s)的平均只读吞吐量,几乎是 CX-6 Dx 所实现的 193 万 IOPS(63.23 Gb/s)的三倍,彰显了其高效的数据传输能力。在纯写入基准测试中,U45N 的平均写入吞吐量为 534 万 IOPS(174.96 Gb/s),而 NVIDIA 的为 340 万 IOPS(111.43 Gb/s),性能提升高达 60%。
编者注:在底层基于TCP网络的4KB小块随机I/O操作中,2个100Gb/s网口测得175Gb/s左右性能,应该算是比较理想的水平了。
图3:NVMe over TCP纯读取与纯写入吞吐量基准测试结果
下图对比了 Alveo U45N(搭配 NTI)与 NVIDIA CX-6 Dx 在混合 NVMe over TCP 工作负载下的表现,测试配置为读写比例70:30、32 个并发任务。在 4k 块大小下,U45N 上的 NTI 总吞吐量(读 + 写)约为 535 万 IOPS(175.33 Gb/s),显著优于 CX-6 Dx 的 231 万 IOPS(75.65 Gb/s)。U45N 在混合读写场景中展现出更高性能,凸显了其在高要求的混合工作负载环境中具备更出色的带宽效率和扩展性。
图 4:NVMe over TCP 读写 70:30 比例吞吐量基准测试结果
下图展示了搭载 NTI 的 AMD Alveo U45N 与 NVIDIA CX-6 Dx 在 4 KB 块大小下的随机只读吞吐量性能。结果表明,AMD Alveo U45N 具有显著的性能优势。随着并发任务数量的增加,Alveo U45N 的吞吐量始终达到 NVIDIA CX-6 Dx 的约 3 倍。Alveo U45N 的可扩展性特点使其在高 I/O 并发环境中表现出更卓越的性能。
图 5:不同 FIO 任务配置下的 NVMe-over-TCP 只读吞吐量基准测试结果
补充图一:Alveo U45N使用了一颗UltraScale+ XCU26 FPGA加上一颗16核Arm Cortex-A72处理器,从概念上讲,我认为将其归类为DPU比SmartNIC更合适?
补充图二:Alveo U45N加速卡结构图。可以看到XCU26-L2VSVA1365E FPGA搭配了8GB内存,NXP Layerscape LX2162A Arm处理器搭配了4GB内存。注意:在本文的应用场景中,Alveo U45N即FPGA的主机接口配置成2个PCIe Gen4 x8(也支持1个PCIe Gen3 x16模式)。
补充图三:NXP LX2162A ARM处理器布局图
下一代平台
为满足不断增长的网络和存储带宽需求,2×200G的网络速度成为必要。Mangoboost 推出的两款智能网卡可满足这一需求:一款基于 AMD VP1502,具备2×200G网络速度;另一款基于VP1202,支持1×400G网络速度。这种先进的智能网卡提高了数据传输速率,提升了整体系统性能,非常适合数据中心、云环境乃至 GPU 集群环境。以下功能框图分别展示了 2×200G 全高半长(FHHL)和 1×400G 半高半长(HHHL)智能网卡的关键组件和架构。这些解决方案通过提供稳定且可扩展的网络连接,满足了现代数据中心和企业环境日益增长的需求。
图 6:下一代 1×400G 智能网卡半高半长(HHHL)解决方案框图
图 7:下一代 2×200G 智能网卡全高半长(FHHL)解决方案框图
编者注:参考上图,在2 x 200G的SmartNIC网卡上,主控XCVP1502其实也是来自AMD收购的Xilinx,另加了一颗V3C18(RyzenTM Embedded V3000 Series,如下图)——8核x86,典型功耗15W,其作用应该类似于之前Alveo U45N上的16核Arm Cortex-A72处理器。
参考资料
https://docs.amd.com/r/en-US/wp564-u45n-mb-nvmeof/Technology-Overview
注:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)