核心观点与关键数据
什么是计算存储驱动器(CSD)?
计算存储驱动器(CSD)是一种企业级PCIe固态硬盘,通过计算卸载引擎将计算任务从CPU卸载到存储设备,采用数据驱动架构,旨在解决传统架构中CPU与DRAM之间数据移动的瓶颈。
为什么使用CSD?
传统架构中,CPU通过传统控制器访问DRAM,数据需要在CPU和DRAM之间频繁移动,效率低下。CSD通过在存储节点上集成计算能力,减少节点间数据移动,同时无需增加额外的存储节点计算成本。
计算存储分解数据移动挑战
在数据分析场景中,传统方法通过增加存储节点来减少数据移动,但成本较高。CSD通过向下扫描数据,减少节点间数据移动,同时无需额外计算成本。
CSD + 数据分析
在数据分析中,CSD与计算节点和分析引擎结合,通过扫描下推技术,将数据处理任务卸载到CSD,进一步减少数据移动。
扫描下推的挑战与解决方案
使用CSD进行向下扫描时,面临嵌入式ARM或RISC-V内核灵活性不足、扫描性能不足以及成为瓶颈的挑战。解决方案包括:
- 使用嵌入式内核接触每个数据项,减轻其负担。
- 增强列存储文件格式,启用数据跳过。
- 将细粒度元数据嵌入列存储文件,方便数据跳过。
试验结果
- 使用附加元数据的CSD卸载相比仅主机处理将查询延迟减少了5倍。
- 每个ARM核心实现了超过1GB/s的扫描吞吐量。
- 元数据的粒度是关键的性能调优因素。
- CSD内的流水线数据提取、解压缩和扫描,以及流水线处理和主机处理对比,显示CSD在性能上的显著优势。
假设条件
- 8x ARM Cortex A53 @ 1.4 GHz
- 数据集:TPC-H lineitem表
- 分析引擎:ClickHouse