数据存储产业服务平台

MemVerge范承工:谈基于持续性内存的分布式融合数据平台

8月22日-8月23日,2019全球闪存峰会(Flash Memory World)在杭州召开。在8月23日下午举行的全闪存应用论坛上,MemVerge公司CEO、联合创始人范承工应邀出席并发表了《基于持续性内存的分布式融合数据平台》的演讲,就基于持久性内存和非易失性内存开发新的系统等相关内容进行介绍。

图:MemVerge公司CEO、联合创始人范承工

以下内容根据速记整理, 未经本人审定。

范承工:谢谢谢长生老师。听谢老师的报告,学习到了很多,又让我回忆到研究生时候的生活。华中科技大学存储方面的研究特别强,我们公司也有谢老师、吴非老师的学生在参与新的工作。今天把我们公司做的事,我们在基于持久性内存或者非易失性内存开发新的系统跟大家分享一下。

什么是非易失性内存呢?待会儿会做一个详细的介绍。

我们都知道,在数据时代,数据的量和数据的速度越来越高,这对于我们做基础架构、基础系统的公司来说,要帮助客户解决的主要是两个痛点、两个非常根本的痛点,一个是作为存储来说I/O速度太慢,因为这个量可以靠堆积器来解决,100台机器不够堆1000台机器,1000台机器不够堆1万台机器。但是从速度来说,无论是IOPS每秒钟IO的数量,还是latency完成读、写需要多少毫秒、微妙,甚至纳秒,在过去几年中很难进行提升,因为受到物理介质的影响。

因此,越来越多的软件用越来越多的内存来完成存储工作,无论是大数据分析的软件,或者是机器学习AI的软件,都是越来越以DRAM为核心的软件系统。

在这个时候就给DRAM加了很大的压力,但它也有它的特色,它的速度非常快,速度比起闪存大约要快1000倍,但是密度要低很多,所以量要小很多,价格要贵不少,同时是一个易失性的。所谓易失性就是你断了电数据就不存在了,这时候无法用它做长久保存的工作。

对于普通的用户来说是介于两块石头中间,一块是存储不够快,另外一个是内存不够大,怎么办呢?大家一直在寻找解决方案,能不能给客户带来更大的内存或者更快的存储,或者把两者同时提供给客户。

这个问题一直在困惑着大家。

一个非常重要的转折点——存储级内存(SCM)在今年正式商用化诞生了,这个概念大家说了很久,过去20年在不同的大学不同的研究机构进行研发,但是真的要大规模商用真的非常困难。

今年的第二季度英特尔作为第一家厂商把第一个商用的、作为普通服务器就可以插的、而且是非易失性的持久性内存问世了,这个内存的名字叫做傲腾持久性内存,其实是两年前就发布了介于同样介质的SSD的产品,今年刚刚推出内存型的产品。

基于的技术是3DXpoint,这个技术是SCM的一种,与其竞争的可能还有其他的技术,但这个技术是率先能够问世。它的特点是速度接近于DRAM的速度,DRAM的延迟是20-50纳秒。平时的NVF SSD基本上在快的Flash也是在10到几十微妙的级别,所以两者之间差了1000倍。这种技术大约是100-250纳秒的延迟,它比DRAM慢一些,大约慢五倍左右,但是比NVflash快100倍,作为持久性的存储第一次进入了纳秒的时代。

同时,它的密度比DRAM要高,目前密度比DRAM高十倍,因为现在3D只有两层,随着层数的上升它的密度会比DRAM高出更多。因为密度高,所以价格会比DRAM低,但第一代出来的价格还是相对比较贵的,大约是DRAM一半左右。随着密度的上升,相信它和DRAM价格之间的差异也会越来越大,它最主要的差别是持久性的和非易失性的。速度接近于DRAM,但数据写进去关机再重开机,数据还会在那儿,而且写的次数要高不少,能够有10的6次方到10的8次方的重写。

这是非常有特色的介质,它第一次融合了内存和存储,这两个不同概念的特征在一个物理介质上得到了体现。对于计算机专业写应用程序的人来说,过去内存当内存用,存储当存储用,现在第一次提供了一个可能性,这两个不同的概念有可能融合成一个。这是一个非常革命性的、跨时代的技术。

任何一个新的技术被大众所采用有不少的障碍,这个技术现在大家预估到2023年会成为36亿美元的硬件市场,我们也知道,除了英特尔之外还有一些其他的内存厂商也在研发这个技术,预计在2022年会有4-5家主流的内存厂商会有竞争的技术问世。相信在那时候开始逐渐成为一个主流市场。

随着应用的采用,预估是2025年大约能产生百亿美元的市场。

百亿美元是什么概念呢?现在的内存市场大约是1000亿美元,我们预计在2025年大约至少能够占领现有内存市场的10%,或者说10%的应用能够把这个内存当新内存而取代,这样子就能产生百亿。

我觉得这还是非常保守的预估,上升空间还有可能远远不止于此。

达到这个目标最主要的关键因素是软件如何把这个硬件使用起来,怎么样建立一个很好的软件生态,能够把透明的,甚至对现有的无需改动,就可以把新的介质特点使用出来,这个工作也是我们公司现在专注做的工作。

MemVerge大约两年多前开始的,现在还很小,大概就30来号人,在美国的湾区是我们的总部,但是在上海、北京也有一个非常核心的研发团队。

我们的技术其实主要是有三个组成部分:

第一个SCM的内存虚拟化。如果你是傲腾SCM的硬件,如果没有我们的软件,有几种使用它的方法。第一种是叫做AppDirect直接使用它的方法,有一个新的API。

这个新的API把硬件所有好的功能都向软件展示,它又可以做字节程度的访问,同时又可以把它所有的优点用出来。

但这个缺点是必须要修改已有的APP,如果写一个新的软件没问题,但如果已经有一个软件无法直接在上面跑出来,需要把软件的逻辑重新写。过去是内存当内存用,存储当存储用,现在比如你要写一个数据库,可以直接放在这种内存里面,不需要存到存储,因为这个内存是可以持久保存的。但这样需要重新设计数据库。

当然,我觉得这也是一个很大的机会,但是现有的数据库不是很容易把这个介质使用上去。

第二个用它来做内存,这时候就是一个易失性的内存,好处是不需要改APP,内存同时变大了,一台服务器现在可以6个T的内存。

第三个变成快存储,就像SSD一样,这个时候让它做比较快的SSD,但是不能做字节性的访问,不能直接当内存来用。

这三种模式都有各自的缺陷,或者要改程序,或者不能够内存和存储的功能都用上。我们内存虚拟化就解决这个问题,因为我们这层软件对傲腾内存用AppDirect的模式来访问,我们展示的API还兼容过去的API,这样不需要修改直接在软件上跑起来。

第二个技术和第三个技术等于在内存虚拟化的基础之上,在这两个API之后做了分布式的基于SCM的分布式的文件系统和内存系统,先说文件系统。

分布式文件系统很多,市场上无论是开源的还是闭源的,无论是美国还是中国有很多成熟的分布式文件系统,但没有一个分布式文件系统是专门为SCM设计的,因为SCM的延迟和传统的SSD和HDD延迟有几个数量级的差别,所以过去的分布式文件系统直接拿来跑在memory上软件本身会成为瓶颈,本身不是为了这个速率所设计的。基于新的硬件原生在上设置出了新的分布式文件系统,能够在内存速度来进行内容的复制和管理,其中有了一些新的想法在分布式文件系统里得到实现。

分布式内存系统,除了提供更快的存储接口之外,我们也想提供更大的内存接口,首先SCM本身提供一个更大的内存,本身有6个T,但是现在有的应用6个T内存都不够,需要有更大的内存,在内存里完成主要的工作。

我们通过分布式的方式让第一代产品可以有128个节点,在128个节点内存整个变成一个池子,在里面做成三层的分阶的分布式内存系统,首先是本地DRAM作为第一层,第二层是本地SCM,第三层是旁边节点SCM。

通过这三层智能的管理,我们可以提供高达700个T的内存。

在这个环境之上,我们就能够充分发挥SCM硬件的优势,使得上面不需要改动就可以有以前不可能获得的容量内存、不可能获得的速度存储,同时提供了更大的内存和更快的存储。

这是我们技术大概的介绍。

这三个是我们技术主要的核心模块,我们整个架构把它叫做MCI,我们认为这个是未来数据中心重要的架构前移。

这个是对我们技术稍微更详细模块的解释,主要是给大家展示一下软件在系统里处在什么样的位置。底下是硬件一个一个服务器,把它叫做计算节点,这里面第一步会支持128个节点,中间我们推荐用RDMA这种快速的网络,把这些节点联络在一起。

在每个节点里除了CPU之外有三种介质,为什么有三种介质呢?内存的服务用DRAM+SCM两层的模式来提供内存的服务,就像我刚才说的有DRAM、SCM以及远方的SCM一起来提供大内存的服务。

SCM和SSD两层合在一起提供存储层的服务,SCM是我们第一层存储,SSD是第二层存储。通过SSD可以增大存储服务的容量,而且降低成本。在我们硬件、软件的上面是主要目标应用场景。现在我们对准的是三种场景,都是以数据为中心的应用。

第一种是机器学习、AI,尤其是AI训练的场景;第二种大数据分析常见的应用平台;第三种搜索查询应用。我们现在也将这几个应用与合作伙伴客户进行POC的工作,但产品还没有正式发布,主要在三个工业领域和早期客户合作,第一个是互联网服务的领域,包括云服务商,包括互联网的服务商,第二个领域主要是金融,包括银行、基金、市场。第三个HPC高性能计算,以及AI专门的服务,这三个是主要的客户领域,这些是主要的应用场景在产品上进行部署和尝试。

下面给大家举两个例子,客户如何使用技术提高效率减少成本。

第一个例子是社交网络,是美国非常大的社交网络服务商有几个亿用户,有几百亿互相的连接,在服务平台上非常重要的服务就是向大家推荐认识的人连起来,或者有什么工作想要找去找,这是一个非常重要而核心的推荐引擎。。

这个推荐引擎背后是有机器学习的模型支持的,现在用的是Google 2016年推出的模型,这是非常扁平而大的模型,训练数据又很大,数以亿计的节点,以及百亿计的连接,这些数据要跑1000多次,整个是非常长时间的分布式的训练工作。

现有的瓶颈在哪里呢?一方面用的HDFS的存储系统,还有很多存储是落到本地的SSD盘上。这是一个跑的时间非常长,要跑两个星期,中间如果有节点坏了,需要从头重新跑起来。如果打开Checkpoint,要每次写到盘上,整个工作又慢了。所以非常纠结,到底Checkpoint应该开还是不开,开出来又不能够做的非常高频。我们的解决方案使用我们的产品把所有的SSD全都取代了,无论是训练数据的存放点,还是中间数据的存放点全由我们的分布式文件系统来承受。

这个做的效果使AI速度提成了6倍,原先数据导入来自各个地方,本来非常慢,现在提高了350倍,效率得到很大的提高。这是第一个在机器学习训练场景上对我们场景的应用。

第二个例子在大数据分析,这个是和腾讯云的合作云数仓的服务,背后不是一个传统的数据库。

在这里除了存储上的加速之外,我们还提供内存上的扩展,因为是以内存为核心的平台,通过内存扩展,和存储的加速,不仅提高了各方面的性能,同时,通过中间数据放到我们这个系统上,使得Spark节点更加弹性。这大大帮助云服务厂商可以随着客户需求而任意上升或下降调节资源。

最后再看得比较远一点,给大家分享一下我们的愿景。我们小的公司首先是有客户能够落地这个是很重要的,同样重要的是我们希望站在历史正确的一边,站在历史的技术趋势、业界趋势正确的一边。

我们认为,在将来5-10年持久性内存带来的会是一个架构上的变革。这个变革是什么样的变革呢?我们先看现在的架构,大家可能都很熟悉现在的架构基本上计算和存储是分离的,计算会有服务器的群体,有CPU、DRAM,存储基本上会有两层,第一层是SSD为主体的,高性能存储。还有一层容量型存储,现在更多是HDD为导向的。

我们认为这个架构分层在将来5-10年会有改变。最大的改变在计算那层里基于持久性内存会有一个新架构层的出现,叫做MCI,内存融合架构。内存融合架构扩大可用内存到几十甚至上百个T,同时某种程度上会取代于第一层性能级存储。并不是说性能级存储迁移到MCI那层,因为有持续性内存的存在而使得性存储还会存在,存储本身存在于以容量为导向的一层,这一层将会转向SSD为主流介质。而大量的活跃数据直接在内存MCI层得到解决。

我们公司希望成为催化剂,能够成为第一个吃螃蟹的,能够最早在这个领域搭建MCI的系统,希望这个变革发生时,我们能成为领先者之一。

今年是MCI的元年或者说持久性内存的元年,也许明年这个峰会再来参加可能就有整个的环节关于持久性内存。

今年闪存大会(FMS)与去年闪存大会有很多的区别,有好几个环节都是关于持久性内存的,这个技术现在正好是刚刚发生的节点,我们非常幸运在这个事情发生的初期做这个工作。现在已经开始通过硬件、软件得到过去得不到的性能。比如1微秒级的访问时延,过去是百微秒级的访问时延。单点至少达到1000万IOPS,这是一个非常激动人心的未来,非常高兴和大家分享!

主持人:谢谢范总给我们带来非常新的信息,今年算是这个技术第一次在这个会议上报告,明年一定会有更精彩的工作,现在给大家一个机会提问题。

提问:第一个问题我们了解RDMA虽然挺快,有4K或者6K传输时延会有10微秒左右,但是这个介质已经是300纳秒左右,如果是在这种场景下我们用分布式网络连接是不是划算的行为呢?

第二个问题如果我们做了分级的系统,MemVerge是不是已经考虑到这个问题做了一个冷热分级的预测?

范承工:都是很好的问题,也是我们一直在努力的问题,第一个问题RDMA本身有延迟,比起介质的延迟会长,根据我们的测试大概在个位数微秒,确实慢了一个数量级。不少App当你超过内存容量溢出到SSD之后会慢很多,根据我们的经验用RDMA连接远方持久性内存,比起用SSD还是要快,所以还是有它的价值。

第二个问题你说分层的存储,现在我们是有第一版本有一些智能的上下层数据自动迁移,用户不会看到底下有分层,整个是我们来管理的。当然,这个算法还是有上升的空间,我们也会更加智能完成分层存储的管理。

提问:您刚才文件系统,后面的研究系统,咱们也支持HDFS是吧?

范承工:是的。

提问:咱们有内存的API,还有存储的API,如果现在用户需要把程序改一下,这些API怎么用呢?

范承工:持久性内存API是要改程序的,就是我们把底下的API给用户,那个是需要改的,但你不需要用那个,你可以用存储和内存这两个已有的API,这两个API有多种模式,无论是内存和存储,我们都提供了一个访问模式,使得应用不需要修改就能够使用我们这套系统。

提问:很多大数据计算,一个大的数据级超过1TB跑不动了,咱们是把内存扩大,咱们能扩大多大?您测过没有?

范承工:现在DRAM内存越大价格单价上升很快,理论上是一个CPU支持1.5T,但大家不会做1.5T,也甚至不会做750G,最大做到370G。一般来说服务器的内存300G、500多最大了。持久性内存一个节点最多可以到6个T。

由于多节点,如果100多个节点就可以有700个T,理论上700多个T的数据可以全部放在内存里完成这个工作。

提问:我问一下加密的问题,现在SSD有比较成熟的硬件加密的手段,您这边在数据加密方面有没有什么考量,毕竟是700多个T的数据在缓存里的。

范承工:这个现在我们的思考还不够成熟,如果各位有兴趣还可以开一个公司做这个,我们现在做的技术还没有考虑到加密的事情,我觉得这个新硬件的生态有很多好工作可以产生。

未经允许不得转载:存储在线-存储专业媒体 » MemVerge范承工:谈基于持续性内存的分布式融合数据平台