SPDK压缩功能,为提高资源使用提供可能

科技   2024-10-23 12:01   美国  

随着AI 工作负载的盛行,如何提高内存和存储空间的使用量,成为一个需要探索的问题。数据压缩,作为一个长久存在的技术点,很自然地出现在大家的眼前。确实,压缩算法在优化AI 工作负载的内存和存储空间的使用方面起着至关重要的作用,尤其是在大规模深度学习模型中。压缩算法的选择会显著影响AI 工作负载的性能,既影响内存和存储的使用量,又影响着计算的效率。

更重要的是,数据的高效存取以及数据的跨模块和跨节点流转不仅是AI工作负载性能的重要指标,也是常见的分布式存储、分布式计算的基本需求。通过压缩,针对结构化、半结构化、非结构化的各种数据,可以带来相应的压缩效率,既节省了内存和存储空间,又节省了数据在网络上的传输大小。

今天给大家带来的是SPDK通过Compress Bdev块设备,既可以通过QAT硬件加速器来提升数据压缩,也可以通过ISA-L软件指令来高效压缩。

压缩的常见场景:

存算分离的架构,数据压缩既可以在计算侧,在通过网络发送前。也可以在存储服务接收端,在落盘前。

1:典型的存算分离的架构[1]

超融合架构,数据压缩主要在本地落盘前。

图2:典型的超融合的架构[2]

以上两种常见的存储架构中,都是通过SPDK作为存储服务来完成加速的。其中,SPDK的存储服务中的Bdev(用户态通用块设备),既可以对本地存储设备(NVMe SSD)的支持,也可以对网络存储设备(iSCSI LUN, NVMe-oF)的支持。出于对不同存储形态的支持,SPDK对于压缩功能的实现,是在Bdev这个层面上,简单来说,通过适当的配置,给Bdev带上了*压缩*的属性,数据到达*使能*了压缩的Bdev,就会调用硬件QAT或者软件ISA-L来完成在线实时的压缩。

SPDK的压缩支持的主要实现如下图:

图3:SPDK的压缩支持[3]

其中的几个主要部分:

§ISA-L和QAT的压缩能力,不同的压缩算法和压缩层级。ISA-L更多是通过CPU指令的支持来实现高性能的压缩,需要使用到一定量的CPU算力。QAT更多是通过API把压缩卸载到专门的硬件加速器上,支持批量异步压缩。

§元数据管理。在之前的实现中,SPDK压缩Bdev的元数据存储在Persistent Memory之上。当出现了新的持久化内存介质和方案后(CXL 2.0),可以很容易地来支持。对于具备高性能文件系统的场景下,同样可以把元数据放在本地文件系统之上。这块欢迎大家积极参与,有没有更合适的方式来支持元数据的存取。

下图简单概括了下在最新第六代英特尔® 至强® 可扩展处理器上QAT针对存储,尤其压缩在相关场景中的优势。

图4:QAT针对存储带来优势

在最近的SPDK v24.09发布中,感谢我们的合作伙伴新浪微博,主要来自本文的作者Li YankunWang Yalong,提交了诸多关于SPDK Compress Bdev以及Libreduce的代码来完善和加强这个重要模块。主要涉及到稳定性,比如内存不够等异常处理,性能提升像连续IO聚合,以及安全性和易用性包括更多压缩信息的输入输出等等。

在这里,再次感谢合作伙伴的贡献,也期待更多的社区伙伴把SPDK Compress块设备以及QAT压缩的问题和需求反馈给到我们,以便继续优化和完善对应的功能,把压缩的能力落实到具体的业务环境中。

图5:接近80%,对于SPDK通过QAT压缩感兴趣[4]

对于SPDK压缩感兴趣的合作伙伴,可以通过下面参考文献中最后提到的compress.sh脚本以及spdk.io上的文档来尝试评估,有任何问题,欢迎留言联系。同时,从第四代英特尔® 至强® 可扩展处理器开始,已经内置了QAT加速器,提供更多的便利性。

作者简介:

Li, Yankun: 新浪微博软件开发资深工程师

Wang, Yalong: 新浪微博软件开发工程师

Zhang, Min: 英特尔资深存储工程师

Cao, Gang: 英特尔存储架构师,国内SPDK负责人


参考文献:

1.https://discos.sogang.ac.kr/file/2023/intl_conf/MASCOTS_2023_Y_Park.pdf

2.https://spdk.io/doc/vhost.html

3.https://www.snia.org/sites/default/files/SDC/2019/presentations/NVMe/Luse_Paul_Harris_Jim_Squeezing_Compression_into_SPDK.pdf

4.SPDK v24.09最新发布及需求调查
5.https://github.com/spdk/spdk/blob/master/test/compress/compress.sh

6.https://spdk.io/doc/bdev.html(搜索:Compression Virtual Bdev Module)



转载须知

DPDK与SPDK开源社区公众号文章转载声明



推荐阅读

Compressdev  ISA-L PMD介绍

北京峰会系列一|SQUEEZING COMPRESSION AND ENCRYPTION INTO SPDK



往期阅读

SPDK v24.09最新发布及需求调查

使用NTB加速基于NVMe-oF的边缘小规模存储集群的数据传输

SPDK FIO Bdev Plugin支持RPC,让资源管理面更容易

RAID5f: SPDK RAID5实现介绍





DPDK与SPDK开源社区
最权威,最贴近DPDK/SPDK技术专家的社区。
 最新文章