1. 随着业务场景和硬件技术的不断创新,存储作为数据生命周期的核心系统,值得更广泛的关注和研究,构建高性能、韧性的存储系统面临若干挑战;
2. DPU作为数据密集型场景的加速硬件,在网络和存储侧都具备革命性应用价值;
3. 基于PCIe的数据交互仍存在数据多份复制复制,效率有限,如何进一步优化数据访问堆栈,以提高整体性能?
图示从左至右,诠释当前在大型数据中心中分布式资源架构的构成情况,计算-网络-存储,随着IT架构的不断创新,维持高性能存储系统,存在若干挑战,在于:
Intelligence Processing Unit
DPU在现代基础设施中的核心作用,尤其是在存储和网络处理方面。DPU在存储发起节点和目标节点之间,提供了存储和网络加速能力。存储目标节点的DPU具备额外的专用功能,如纠删编码、复制、重删、压缩和加密,以提升存储效率和安全性。DPU的引入使得网络和存储资源管理更加高效。
Note:对DPU的理解,鹏弟之前认为是一张更高阶的智能网卡,因为有些厂家DPU解决方案,就是用来取代网卡;而图中存储侧对数据多样化处理的计算单元,也被定义成DPU,这些功能在之前计算型存储架构中也介绍过。
图示存储堆栈内CPU/DPU的数据交互过程。这种架构面临的挑战在于如何优化协同处理,以减少由于多次数据移动带来的性能开销,从而实现更高效的存储加速功能。
尽管CPU内存和DPU内存之间通过PCIe连接,但由于是独立的资源池,导致数据需要移动多次。
操作流程
1. 加速器初始化(Accelerator Init)
2. 获取IO通道:PCIe(Get IO Channel: PCIe)
3. 分配内存域:PCIe私有内存(Assign Memory Domain: PCIe private mem)
4. 应用缓冲区:分配和对齐(App Buffer: Allocate & align)
5. 加速器操作序列(Accelerator operation sequence(s))
6. 应用缓冲区:释放(App Buffer: Free)
7. 加速器完成(Accelerator Finish)
SPDK软件栈的spdk_accel_*工作流支持多种数据处理功能,如加密、解压、校验、复制等,通过PCIe连接CPU和DPU内存,借助DMA进行数据传输,主要过程是在操作内存数据。
Note:通过分析SPDK调用栈主要函数,得出效率优化的关键在于减少内存数据移动!
与基于独立内存的方案相比,当CPU和DPU共享CXL内存后,存储操作的调用栈得到优化,不需要通过PCIe传输IO,减少数据复制,同时SPDK的内存数据操作,可以在统一地址空间完成。
Note:前几天鹏弟和DRAM行业朋友聊天,谈及CXL业务市场探索。从国外案例来看,虽然CXL成品是整合好的内存/存储扩展卡,但窃以为这绝不是单纯DRAM硬件生意,CXL涉及场景更偏业务;而软件公司对业务场景理解更靠近客户,从上述优化数据访问效率案例来看,通过观察SPDK工作路径提出基于CXL共享内存来优化,关键是推动SPDK与CXL协议的开发适配,这主要还是软件公司要投入的。
更高的IOPS(每秒输入输出操作)得益于简化的存储数据访问和操作,例如:
保留软件栈/工作流的投入: