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

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

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

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

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

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

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

 

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

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

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

1. 简单成本估算

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

——算法解释——

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

 

——时间压缩——

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

——值压缩——

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

 

——FPGA实现方案——

 

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

主要包括从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实现。

期待和你摩擦出火花


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

 

时间: 2024-08-01 05:06:36

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

阿里云高性能时序数据库 HiTSDB 启动公测,为物联网而生的数据库!

摘要:2017云栖大会·上海峰会上,阿里云发布了面向物联网场景的高性能时间序列数据库 (High-Performance Time Series Database , 简称 HiTSDB) .HiTSDB 可支持每秒1000万时序数据点写入:具备PB级别的数据存储能力,提供高效压缩算法,整体存储成本降低90%:提供时序数据插值计算,降精度计算,时间纬度聚合计算,空间纬度聚合计算的能力. HiTSDB 是一种高性能.低成本.稳定可靠的在线时序数据库服务:提供高效读写,高压缩比存储.时序数据插值及聚

面向万物互联的时序数据库HiTSDB

现在填写调查问卷,将优先获得公测资格 当前物联网的浪潮席卷全球,甚至于人们还没有真正意识到物联网的存在,但它已经无处不在 .个人智能手环,家庭里使用的智能空调,空气净化器,电饭煲,到社会化共享经济的共享单车,共享汽车,再到汽车制造车间生产线,IT机房的网络设备和服务器,交通监控和信号设备,甚至于全球气候的监测设备等等,这一切都通过物联网进行连接,设备和设备之间,人和设备之间万物互联. 透过现象看本质,物联网的本质是数据的采集和价值利用,而物联网领域最广泛和典型的数据类型就是时间序列数据.时间序列

时间序列数据库武斗大会之 KairosDB 篇

[编者按]刘斌,OneAPM后端研发工程师,拥有10多年编程经验,参与过大型金融.通信以及Android手机操作系的开发,熟悉Linux及后台开发技术.曾参与翻译过<第一本Docker书>.<GitHub入门与实践>.<Web应用安全权威指南>.<WEB+DB PRESS>.<Software Design>等书籍,也是Docker入门与实践课程主讲人.本文所阐述的「时间序列数据库」,系笔者所负责产品 Cloud Insight 对性能指标进行聚

时间序列数据库InfluxDB初探(r12笔记第74天)

  性能监控中的很多数据都是根据时间维度来生成的,就算是很少的几台服务器,如果设置了大量的监控项,每天的数据量也是很客观的,再加上是成千上万的服务器,这个量级就很大了.   时间序列在自动化运维/智能运维的技术会场中经常能听过,而自己在QCon上对于宇辰分享的时间序列相关的主题很感兴趣.里面有非常多的门道和空间,其实等我意识到的时候,外面都不知道火了多久了.   所以今天就抽空看了下这方面的东西,不对的地方还希望多多指正.   时间序列(Time Series)数据库目前的使用情况如何,可以通过

高性能时序数据库 HiTSDB 启动公测,为物联网而生的数据库!

HiTSDB 是一种高性能.低成本.稳定可靠的在线时序数据库服务:提供高效读写,高压缩比存储.时序数据插值及聚合计算.是物联网(IoT)设备监控系统 ,企业能源管理系统(EMS),生产安全监控系统,电力检测系统等行业领域的专业数据库. 查看产品发布详情,申请公测 HiTSDB 打造物联网智慧园区 HiTSDB 已经在阿里巴巴内部孵化多年,在阿里巴巴集团已经支持了20多个核心业务场景,比如阿里智慧园区的物联网(IoT)建设. 智慧园区主要解决办公园区的设备的管理和智能控制.设备管理主要是将设备接入

如何用FPGA加速卷积神经网络(CNN)?

以下主要引用自西安邮电大学李涛老师关于连接智能和符号智能的报告,以及fpl2016上ASU的 Yufei Ma的文章和slide,推荐大家去读下原文. Scalable and Modularized RTL Compilation of Convolutional Neural Network onto FPGA 地址:http://fpl2016.org/slides/S5b_1.pdf 我做过一些计算加速的工作,个人感觉要入手先要想好几个问题: 要加速的是什么应用,应用的瓶颈是什么,再针对

Informix时间序列数据库解决海量数据处理的应用实例

时间序列函数优越的查询速度远超过关系型数据库.此等函数的应用是成就智能电网的基本手段.Informix 时间序列目前广泛应用于股票交易系统,http://www.aliyun.com/zixun/aggregation/14045.html">网络管理系统,智能电表系统,电信计费系统等多个领域中取得了良好的效果. 1. 概述 Informix 时间序列(Informix TimeSeries)是 Informix 数据库解决海量数据处理的一项重要技术.该技术采用特殊数据存储方式,极大提高了

阿里云数据库技术峰会回顾整理:演讲幻灯+直播视频,赶紧下载!

云数据库产品及架构设计背后的考量 嘉宾:萧少聪,阿里云数据库高级产品专家 演讲内容:阿里云数据库产品全体系介绍及数据库产品实现架构分享. 听众收益:通过本次议题,了解阿里云全数据库产品体系能解决哪些实用场景的问题,同时了解其解决的原理. PDF下载:https://yq.aliyun.com/attachment/download/?id=1963 直播视频:https://yq.aliyun.com/edu/lesson/698 整理文章:https://yq.aliyun.com/artic

HiTSDB 时序数据库技术架构和产品解析

8月24日阿里云数据库技术峰会上,来自阿里数据库事业部高级专家钟宇带来HiTSDB 时序数据库方面的演讲.本文主要从时序数据开始介绍,包括时序序列数据的特点,接着介绍了时序数据业务场景,以及OpenTSDB在HBase上的优化,最后分享了HiTSDB的优化和提高.   时序数据介绍 时序数据就是在时间上分布的一系列数值,时间和数值是两个关键字,时序数据一般指指标型数据,比如股票价格.广告数据.气温变化.网站的PV/UV.个人健康数据.工业传感器数据,还有关于应用程序的性能监控,像服务器系统监控数