前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可计算存储: 数据压缩和数据库计算下推

可计算存储: 数据压缩和数据库计算下推

作者头像
老叶茶馆
发布2020-08-06 09:58:35
1.4K0
发布2020-08-06 09:58:35
举报

“摩尔定律失效“指的是什么?

2016年2月9号《自然》杂志的《The chips are down for Moore’s law》写到即将出版的国际半导体技术路线图不再以摩尔定律(Moore’s law)为目标,芯片行业50年的神话终被打破。

Figure. 1

狭义的摩尔定律指每18到24个月,芯片上晶体管集成的密度会翻一番或者价格下降一半,它连接了价格和集成度。但我们普遍所讨论的是摩尔定律其实包含"摩尔定律"、"登纳德缩放"和"波拉克法则"三个重要法则。

登纳德缩放定律(Dennard Scaling)的核心观点是,随着晶体管密度的增加,每个晶体管的功耗会下降,因此,每平方毫米硅的功耗几乎是恒定的。由于硅的计算能力随着每一代新技术的发展而提高,计算机将变得更加节能。

波拉克法则(Pollack's Rule)则指出,同制程工艺下,处理器的性能提升幅度,是芯片面积(晶体管数量)提升的平方根。

登纳德缩放定律(严格说是预测)在2007年开始显著降速,并在2012年几乎消失,如下图所示:

Figure. 2

所以,常说的“摩尔定律失效”指的是基于三个重要法则构建的用户价值三角(价格、集成度和性能)的失效。

异构计算

2017 年图灵奖获得者John L. Hennessy and David A. Patterson在他们的文章《A New Golden Age for Computer Architecture》中指出通过异构处理器优化设计时间和成本。

As the focus of innovation in architecture shifts from the general-purpose CPU to domain-specific and heterogeneous processors, we will need to achieve major breakthroughs in design time and cost.

异构计算指将不同体系架构不同指令集(精简指令集和复杂指令集)的计算单元组合使用,将最合适的任务交给最擅长的计算单元(包括CPU、GPU和FPGA等),最大程度发挥各类计算单元的优势。

可计算存储和数据压缩

可计算存储可简单的理解成在原有的存储介质(比如NVMe SSD)上叠加计算单元(比如FPGA),并由该计算单元加速跟存储直接相关的计算任务,实现CPU计算任务卸载(Offload)。但持久化应用的相对复杂,如果不能洞察面临的重要问题、理解现存方案的取舍(Tradeoff)和提出创新性的设计方案,可计算存储很难发挥真正价值。计算机体系结构泰斗Yale Patt教授曾提出的Look backward(to the past),Look forward(to the future),Look up(to the problem)和Look down(to the device)在存储领域同样适用。

Look up(to the problem),存储实现信息跨越时间的传递,对它的抱怨永远是“不够快,不够大”。SSD的出现极大的提升了存储性能(IOPS和Latency),但是逐年下降的价格依旧跟不上数据爆炸式的增长。SSD的特性决定容量不仅影响成本,也影响性能。SSD不能像内存和机械硬盘直接覆盖旧数据,只能擦除Block后才能写入其中一个“干净”的Page。当SSD剩余空间变少,出现大量数据碎片时,就要读取整个Block数据,将有效数据重新写到已经擦除的Block。这个过程叫Garbage Collection (GC),导致写放大(Write Amplification)。单个擦除操作延迟是写操作延迟的几倍,而写操作的延迟又是读操作的几十倍。在混合读写的场景,GC会引发延时抖动,影响性能。为降低GC频率,SSD不仅会优化GC算法(比如“greedy reclaiming policy”),如下图所示:

同时也会留出空间(也叫OP: Over Provision),企业级SSD的OP通常是28%,消费级SSD内部的OP通常是7%。IBM研究院的相关研究指出剩余空间为10%时写放大在3.5倍和4.5倍之间,剩余空间为30%时写放大可减少为0.2,如下图所示:

所以减少写入的数据量,不仅节省空间,也优化性能。针对不同场景,业界提供了很多压缩算法,比如zstd,zlib,brotli,quicklz,lzo1x,lz4,lzf,snappy...。现有的解决方案可简单归纳成软压缩(基于CPU)和硬压缩(基于加速卡)。

《硅谷》中年轻的计算机天才Richard发明的超越理论极限的压缩算法“middle-out”,并由此组建了Pied Piper公司。

软压缩(基于CPU)

如上图所示,压缩和解压完全由CPU提供算力。“牺牲”CPU资源换取存储空间,存在个突出的问题:

  • CPU抢占:会占用大量CPU资源,同时也会跟应用抢占CPU资源。
  • 数据复制导致的带宽抢占:在主存和CPU之间引入频繁且大量的数据复制(DRAM<-->L3 Cache<-->L2 Cache<--> L1 Cache<-->Registers),抢占服务器PCIe 带宽和内存带宽,同时带来潜在的CPU Cache Miss,进一步影响计算效率。
  • 时延不稳定:因为CPU抢占和带宽抢占,当OS负载较高时,OS中的时钟中断和任务调度增加了延迟的不确定性,这是IO密集型业务很难忍受的。

硬压缩(基于压缩卡)

如上图所示,专有压缩卡提供压缩和解压算力,释放CPU资源,实现CPU-Offload,但是并不彻底。频繁且大量的数据复制依然存在,即便压缩卡使用DMA技术,也无法彻底实现Zero-Copy,DRAM和压缩卡之间依然存在频繁的数据复制,抢占大量的服务器带宽资源。同时,因为数据链路中增加压缩卡,势必增加IO时延,尤其是数据库和高速块存储系统的小数据块(如4KB、8KB、16KB)场景。

可计算存储

针对已经存在的问题,可计算存储的思路如下:

  • CPU-Offload:采用FPGA完成压缩和解压缩计算,实现CPU-Offload。Look down(to the device),FPGA 在低延时上具备天然的优势,非常适合计算密集型任务(比如矩阵运算、压缩和非对称加密)。首先,片上集成缓存和DRAM接口,减少与CPU交互,免于OS的进程调度和进程间干扰,从而提供可预期的时延。同时,FPGA 基于定制流水线 MIMD设计,同时拥有流水线并行和数据并行,进一步降低时延。下图(Figure. 5和Figure. 6)是FPGA应用于Bing搜索排名中的查询加速,可以观察到更低的平均延时;

Figure. 5 Figure. 6

  • Zero-Copy:以内置FPGA的方式,不改变原有的数据路径,完全在盘内进行压缩解压任务(又叫in-situ processing),避免额外的数据复制,这也是为什么可计算存储又叫“近”存储计算的原因;

如下图所示:

可计算存储和数据库计算下推

Look forward(to the future),IDC(International Data Corporation)预计到2025年全球数据将达到175ZB。即便考虑压缩技术,存储介质的容量和数据量的增速剪刀差会越来越明显。

可以做个简单的算术题,读取1PB数据,仅考虑数据从存储介质传输到到主存(DRAM),PCIe 3.0 * 32、PCIe 4.0 * 32 和PCIe 5.0 * 32分别耗时多久?如果数据存放存储阵列上,使用100Gbps存储网络,耗时多久?如下所示:

Look backward(to the past),在现代处理器系统中,CPU高速缓存处于内存系统的顶端,其下是主存(DRAM)和存储介质。在一个现代处理器系统中,CPU高速缓存通常由多层次组成(L1,L2 和 L3 Cache)。基于时间局部性,CPU数据读取时将访问各级Cache直至到达主存(DRAM)。如果需要访问的数据在CPU高速缓存中命中,将不会访问主存(DRAM),以缩短访问延时,访问流程大致如下:

在联机分析(OLAP)的场景中,如果同一作业的运行频率低,不同作业之间数据的关联度低,使得现有缓存体系极为低效甚至失效,比如热数据被换出引发Cache Miss,导致应用性能急剧下降。在数据库领域有不同的解决思路,以 Oracle 为例:

缩短数据量的移动路径:数据库默认总是先将数据读取到自己维护的高速缓冲,Oracle 11g开始采用直接路径读取来扫描大表(默认 2% * buffer cache),从而绕开buffer cache,避免热数据被换出引发缓存命中率下降;

减少移动的数据量:Oracle Exadata Smart Scan,该特性能通过将大部分的SQL操作下推(又叫卸载)到存储节点完成,极大的减少了存储节点和数据库节点之间的数据量;

数据增长永无止境,硬件性能终会遇到天花板,减少移动的数据量似乎更有启发。

当说下推时,到底指的是什么?可以从 MySQL 特性 Index Condition Pushdown(简称ICP)入手,建立更具体的认识。

关闭 ICP

未启用ICP特性时,会按照第一个索引条件列到存储引擎查找数据,并把整行数据提取到数据库实例层,数据库实例层再根据Where后其他的条件过滤数据行。如下图所示:

Figure. 8

启用 ICP

启用ICP特性后,如果Where条件中同时包含检索列和过滤列,且这些列上创建了一个多列索引的情况下,那么数据库实例层会把这些过滤列同时下推到存储引擎层,在存储引擎层过滤掉不满足的数据,只读取并返回需要的数据,减少存储引擎层和数据库实例层之间的数据传输和回表请求,通常情况下可以大幅提升查询效率。如下图所示:

Figure. 9

数据库计算下推

MySQL ICP虽然将MySQL Server层的过滤下推到存储引擎层,但仍需要消耗CPU资源,严格来说,这不是真正意义的下推。如果要更进一步,可以考虑将第4步下推到可计算存储,原因如下:

  • 收益大:关键步骤,由它完成实例层向存储引擎层的下推,符合“近”存储计算原则,实现收益相对大;
  • 成本低:从调用关系看,对数据库实例层影响很小,绝大部分改动可在存储引擎层完成,修改和验证成本相对低;
  • 对FPGA友好:易于并行,对计算密集任务友好(比如压缩,加密,计算,过滤和聚合);

如下图所示:

受篇幅和能力所限,省略了一些细节。比如:

在压缩和解压缩的场景中,追求极致的压缩率或性能都会相对容易,但是对于持久化业务而言,往往是既要(压缩率)又要(时延)。在这些前提要求下,可计算存储在提供稳定IO时延的同时实现了数据压缩,降低了存储成本。当然,要实现并发布商用产品涉及的内容就太多了,比如,FPGA选型(资源和功耗),如何调试压缩算法以对FPGA更友好,面对不同压缩比的数据如何提供可预期的时延,如何提供对应用透明的使用体验,如何实现LBA(逻辑地址)和PBA(物理地址)变长映射等等。

在计算下推的场景中,设计的内容包括如何识别底层的CSD设备以及暴露的Pushdown接口,如何将下推的条件传输给硬件,如果优化设备内部逻辑(流式处理和并行数据过滤),存储数据格式修改以对流式处理更友好,因为bypass文件系统如何修改现有的监控...

Yesterday’s technologies, today’s problem

从曾经的专有计算,再到Intel奠定的通用计算,再到今天的异构计算。历史总是惊人的相似又被赋予新的内涵。计算机领域的创新也未必都是天才们“灵光乍现”, 更多时候是建立在对已有系统(软件和硬件)深刻理解之上,用一个新的角度解决问题。可计算存储将会给持久化应用,尤其是数据库,带来更多深远的影响和变化。

What we have before us are some breathtaking opportunities disguised as insoluble problems.

作者 :熊中哲@ScaleFlux

ScaleFlux 成立于2014年,其领导者被证明可以批量部署复杂的计算和固态存储解决方案。计算存储是现代数据驱动的基础,该架构可为计算和I/O密集型应用提供低延时、易扩展和敏捷的能力。

引用

  • A New Golden Age for Computer Architecture
  • A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services
  • A Cloud-Scale Acceleration Architecture
  • 浅谈 Cache Memory
  • wiki Locality of reference
  • Index Condition Pushdown Optimization
  • Write Amplification Analysis in Flash-Based Solid State Drives
  • Write Amplification

更多视频信息,包括培训、采访和产品介绍,请关注我们的微信公众号-视频资讯频道

ScaleFlux视频资讯官网: http://scaleflux.com/videos.html ScaleFlux优酷频道: https://i.youku.com/scaleflux?spm=a2hzp.8244740.0.0

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老叶茶馆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • “摩尔定律失效“指的是什么?
    • 引用
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档