时间序列数据库(HiTSDB)压缩算法的FPGA加速

简介: 时间序列数据库(HiTSDB)压缩算法的FPGA加速,软件开发人员也可以快速的来开发FPGA应用了,本项目中时间压缩模块就是采用openCL实现。

Gorillas是facebook开源的一款时间序列数据库,用于存储其内部数据中心监控指标,其格式为一个kev-value 对,key表示时间,value表示监控的值;这种数据库在集团内部也有着广泛的使用,尤其是在IoT场景下,数以千万的IoT设备工作的一些指标需要采集并存储。阿里云使用FPGA进行加速时间序列数据库HiTSDB.

高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) 是一种高性能,低成本,稳定可靠的在线时序数据库服务;提供高效读写,高压缩比存储、时序数据插值及聚合计算,广泛应用于物联网(IoT)设备监控系统 ,企业能源管理系统(EMS),生产安全监控系统,电力检测系统等行业场景。 HiTSDB 提供百万级时序数据秒级写入,高压缩比低成本存储、预降精度、插值、多维聚合计算,查询结果可视化功能;解决由于设备采集点数量巨大,数据采集频率高,造成的存储成本高,写入和查询分析效率低的问题。

bb36c86f627618341fc87398f335d370d43aa715

Gorillas是一种内存数据库,新增加的数据会保存在内存中,然后每间隔一段时间,对这些数据进行压缩并写入磁盘,我们第一步所做的就是将这里的压缩功能在fpga上实现;先上个图,看一下阶段性效果:

1. 理论性能和实测性能对比

1342318b653321ddf047c9192a11054b1aefefcd

单路FPGA实现理论性能3.2GB/s,实测峰值性能2.97GB/s,达到峰值性能的约 94%

1. 单路FPGA实现和单线程CPU实现性能对比

 ff062f068bd8e78b54b4a72aa277890cbaa6e0d2

单核CPU压缩的实测性能大概为90M/s;目前FPGA单路实测峰值性能约3GB/s,性能提升约 33倍;

1. 单路FPGA实现占用资源情况

3d62668e061aaf6045a3a8602ac11156044fd25e

这里可以看到整个设计只用了7%的逻辑资源,包括DMA引擎和实现压缩功能的APP模块;另外我们的设计可以快速扩展到多路情况,目前最多支持4路并行,鉴于单路情况已经可以很好的处理目前业务需求,这里暂时没有扩展到多路。

1. 简单成本估算

ca8ee8e20b3eea2de61d8876d35cc60aa7d546e7

做个简单估算;单线程ECS性能为90M/s,使用共享计算型n4实例,1核2G,包月价格为116元;如果选择4核或者更多核时平均每个核价格会更便宜,单显然使用多核时性能也不会完全线性增加;FPGA使用阿里云官网F1实例,官网价格还没有给出来,但是我们内部有一个大致定价,另外其实我们只使用了F1的7%逻辑资源,也就是说这个FPGA实例还可以和其他应用共享一块FPGA。这这种保守估计下,使用FPGA实现成本仅为ECS成本的1/14。如果使用多路同时压缩,这个比例可以做到1/30。

——算法解释——

Gorillas算法主要包括两个部分,一是时间压缩,另一个是值的压缩,总体压缩过程如下:

 3a1293fb9af5c3458d96d888f50d7ca75fa6e95a

——时间压缩——

时间用一个64 bit long long类型表示,压缩采用delta-of-delta算法,主要过程如下:

3b6840c1155f97cc8ac5e97e9231080e542bcb2e

——值压缩——

值采用一个64bit的double类型表示,压缩采用xor编码形式

66cb3df46c3be224130d69ddde1f743ed690ed77

 

——FPGA实现方案——

6500830a73a23d0a37d366763220d28525bbb9c4 

上图是阿里云异构计算设计的四路同时压缩的方案,但是考虑到业务需求,目前实际上只用了一路的压缩单元,剩下的逻辑可以给其他应用使用。当前设计的结构如下:

0e14b30abe65f8ca0f3f444f4f45e5b296f423d9

主要包括从host 内存读写数据的DMA引擎和完成压缩的AFU两部分。

——DMA引擎——

DMA引擎主要是从host内存读写数据,这部分后续会专门绍。

——AFU部分——

NO.1 FIFO

在整个设计中有两个时钟域,分别是DMA引擎使用的400M 时钟和AFU使用的200M 时钟,学过硬件设计的应该都知道对于这种跨时钟域问题最常见的问题就是异步FIFO了,因此本设计中有两个FIFO,分别是从DMA中读取数据和往FIFO中写入数据,这里的FIFO使用altera dcfifo IP。

NO.2 adapter

考虑到DMA数据位宽为512时性能最佳,因此本设计中DMA读写数据位宽为512,同时两个异步FIFO宽度也为512 。但是我们压缩数据时候是一个time和一个value同时压缩,只有128bit,因此在数据进入压缩单元前有一个512转128的adapter;另外time和value压缩后长度是未知的,这里通过另外一个adapter将压缩后的结果拼接成512bit后再写到FIFO中;

NO.3 核心压缩单元

核心压缩单元包括时间压缩(采用delta-of-delta)和值压缩(xored encoded),时间压缩部分使用openCL完成,本设计中只有这一单元采用了openCL,其他单元均采用verilog实现。硬件实现完全兼容软件,因此硬件压缩后的数据使用软件也可以解压!

FPGA在一些特定的场景下还是有比较大的优势的,在本项目中,使用FPGA实现轻松的可以提升30多倍性能。另外现在各家的HLS支持越来越好,通过C/C++,软件开发人员也可以快速的来开发FPGA应用了,本项目中时间压缩模块就是采用openCL实现。

期待和你摩擦出火花

a857a3f616b80d590cb56c50618dbf1c4cabe45d

阿里云飞天八部异构计算组致力于在阿里云上提供完善的FPGA开发环境和IP生态,欢迎有FPGA开发经验的小伙伴加入;同时也欢迎有性能加速需求的效果小伙伴勾搭,阿里云小伙伴期待和大家一起研究这个应用是否适合在FPGA上实现,如果适合,阿里云小伙伴会帮忙把应用移植到FPGA上来实现!

 

目录
相关文章
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
19天前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
3月前
|
存储 算法 数据安全/隐私保护
基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证
本项目基于FPGA实现图像运动模糊算法,包含横向与纵向模糊处理流程。使用Vivado 2019.2与MATLAB 2022A,通过一维卷积模拟点扩散函数,完成图像退化处理,并可在MATLAB中预览效果。
|
8月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
7月前
|
算法 数据安全/隐私保护 异构计算
基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比
本项目展示了一种基于FPGA的音频水印算法,采用LSB(最低有效位)技术实现版权保护与数据追踪功能。使用Vivado2019.2和Matlab2022a开发,完整代码含中文注释及操作视频。算法通过修改音频采样点的最低有效位嵌入水印,人耳难以察觉变化。然而,面对滤波或压缩等攻击时,水印提取可能受影响。该项目运行效果无水印干扰,适合实时应用场景,核心逻辑简单高效,时间复杂度低。
|
10月前
|
存储 人工智能 自然语言处理
Delta-CoMe:清华联合OpenBMB等高校开源的新型增量压缩算法
Delta-CoMe是由清华大学NLP实验室联合OpenBMB开源社区、北京大学和上海财经大学提出的新型增量压缩算法。该算法通过结合低秩分解和低比特量化技术,显著减少了大型语言模型的存储和内存需求,同时保持了模型性能几乎无损。Delta-CoMe特别适用于处理数学、代码和多模态等复杂任务,并在推理速度上有所提升。
266 6
Delta-CoMe:清华联合OpenBMB等高校开源的新型增量压缩算法
|
12月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
11月前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
237 0
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
214 1
|
存储 监控 物联网
时间序列数据库:处理时间数据的利器
【6月更文挑战第16天】时间序列数据库(TSDB)是处理按时间顺序排列数据的专用工具,优化了数据压缩、查询性能和可扩展性,适合高并发写入与实时查询。TSDB在存储成本、查询效率和实时分析上具优势,广泛应用在物联网、金融、能源和制造业等领域,随着技术发展,其重要性日益凸显。

热门文章

最新文章