MemVerge所说的大内存将如何引爆千亿美金IT新市场

2022中国数据与存储峰会期间,CXL大内存论坛在线上召开,MemVerge 大中华区销售总监陈明发表了题为《基于CXL的大内存软件的规划和场景》的主题演讲,内容介绍了大内存的概念,大内存主要使用场景和实际使用价值,让人对CXL支撑的大内存软件技术的未来发展心生向往。

以下内容根据现场演讲速记整理而来:

什么是大内存?

如今,CXL领域已经聚集了许多硬件IT巨头,CXL有了非常可靠的硬件基础设施,这为上层的应用和应用软件的发展打下了基础。MemVerge公司作为一个平台软件提供商,更多是考虑基于行业用户的技术场景,在软件层面进行规划和演进。

MemVerge成立于2017年,创立之初就提出了“大内存”的技术愿景,随后一直致力于基于这种内存的虚拟化技术,来设计一款面向未来的大内存管理软件。

所谓的大内存愿景,面向的是各种通用的或者异构的内存硬件,通过一种内存虚拟化软件技术对内存硬件进行抽象,从而让上层的应用看到主机中有更大容量的内存资源。

在传统的计算机体系结构里面,主机中有CPU、内存、磁盘等部件。CPU做计算,内存和磁盘保存数据,内存的性能高但容量小,而且缺乏数据持久化能力,所以,大量数据都存放在磁盘上。

磁盘系统本质上是一种主机的外部设备,它离CPU比较远,无法很好地释放CPU的算力,而大内存技术就是要扩展内存,让更多数据的访问和处理发生在内存中,从而来提升应用的效率。

大内存技术的三个内涵

分解来看,大内存技术主要有三个内涵:

第一,让上层的应用能看到更多的内存空间。让应用程序有更多数据能够驻留在内存资源中,使得数据离算力更近,以提高数据的处理性能。

第二,让驻留在大内存里的数据具备一定的可靠性。磁盘具有持久化,磁盘系统也有数据高可靠的方案,如果要让内存中存下更多数据,也需要让数据具备高可靠的特点,以确保数据能正常地恢复和重构。

第三,驻留在大内存里面的数据需要通过软件带来高级的数据功能和特性。基于磁盘的存储系统已经有非常多的软件功能,比如,,快照、克隆、远程复制、多机冗余、容灾等等。

然而,如今的内存通常作为缓存来使用,如果让内存的数据中也具备高级功能,用户才会把数据长期稳定地存放在内存系统里。这需要一个软硬一体的,能存取数据,具备各种高级数据服务的一个内存系统。

在这样一个系统中,软件功能是至关重要的,软件对于大内存的愿景是必不可少的。在这样的内存系统之上,用户就能够在更高效,更高性能,更高可靠性,各种优化的数据能力之上,来存取内存中的数据。

总的来说,大内存技术的愿景就是,未来各行各业的数据中心里,内存作为承载数据的主要方案,作为数据中心的主存储,而磁盘将会跟磁带一样,用来保存冷数据。新的CXL协议就是实现这种愿景重要的契机。

CXL使得这种大内存技术不仅能在单机上实现,还能够跨异构硬件,跨主机节点,跨网络来实现,这极大地促进了内存资源池化发展的步伐。

大内存的技术演进

从2019年发布CXL 1.0开始,MemVerge就在构思如何用CXL来研发大内存的软件产品。

2017年成立之初,MemVerge就跟英特尔合作,基于英特尔傲腾持久内存开发了第一版MemVerge大内存软件Memory Machine,通过内存虚拟化将主机中的DRAM内存和傲腾的持久内存融合,向用户提供一套软硬件配合本地内存扩展方案。

该方案为用户提供大量的具备持久化能力的内存资源,该版本产品目前正在被国内外很多金融、高校、超算、大企业用户使用,帮助大量的用户扩展单机主机内存的容量,提高并发性能,缩短应用任务的运行时间。

从2021年开始到2022年上半年,MemVerge开发了第二代方案——Memory Machine Cloud Edition,这是一种面向云环境的大内存软件版本,在本地内存扩展的基础上增加了本地内存高可靠的特性。

众所周知,上层应用保存在磁盘中的数据,往往是一些需要分析或者处理的原始数据集,或者是数据处理完后得到的结果。而那些在应用程序运行过程中的运行时状态,都是保存在内存空间中的。

对于很多用户而言,只是确保磁盘里的数据不丢已经很难满足对业务可靠性的要求了,因为,用户还有很多需要长时间运行,有状态的任务,对运行时的状态的保护是非常有必要的,对于提高可靠性非常重要。

MemVerge的大内存软件支持持久化能力,可以为每一个应用的运行状态进行保护,在主机发生掉电或者重启,或者是云主机被抢占的时候,运行时状态也不会丢失,在主机正常或者资源恢复后,能进行断点续算。

不仅如此,MemVerge的大内存软件甚至可以支持用户主动地将应用状态调到过去某个时间。总之,它能对应用的CPU缓存和内存中的任何时刻的信息进行保护。

2022年,随着CXL 3.0标准的发布,MemVerge的Memory Machine的能力将得到强化,它将向分布式的内存资源池进行扩展。

它将使得第一个版本中对本地内存扩容的Scale up能力 ,能发展成一种横向扩展的Scale out能力 ,从而构建出一种逻辑上可远端共享的内存资源池。

它将使得第二版本中的内存高可靠的能力,发展为面向分布式计算集群的,集群一致性的高可靠能力,并且通过本地和远端的内存,去开发更多的高级的数据功能,比如内存数据流动或者内存的数据高可用技术等。

CXL 3.0标准的发布,使得这一切成为可能。

基于CXL的大内存系统有哪些典型应用场景?

以下提到的几个具体的技术场景和行业应用场景,都基于MemVerge自己或者同行的实践而来,其中穿插着很多深度调研工作,意在探究大内存技术对用户的真正价值。

第一个场景,动态内存扩展

该场景主要是消除孤置的内存,所谓孤置的内存(Stranded Memory),这个概念源于微软的一篇论文。

论文里调研了微软公有云数据中心里上百万台服务器上的内存使用状况,调查发现,有50%以上的服务器中,实际使用的内存不到一半,有一多半是被浪费了。

根本原因在于,内存是在主机内部与主机是绑定,通常服务器都会配置足够多的内存来满足最高峰值业务时的需求,这就使得每个机器的内存配置都比偏高。然而,大多数时间里,服务器并不是处于高峰状态,也就不可避免地造成了浪费。

如上图,第一个机器里正在使用的内存大约只有一半,第二个机器里有大约70%的内存在使用,第三个利用率只有20%,内存空闲的比例还是非常高的。考虑到一台主机里内存成本的占比比较高,其实浪费的资源还挺多的。

有了CXL架构后,首先,每台服务器配置的内存就少了很多,内存的浪费会大大减少,当内存不够用的时候,可以从外置的CXL内存资源池里调用内存资源,这样一来,既满足负载高峰的内存需求,同时大大减少了内存的浪费。

CXL让多台服务器可以共同使用远端池化的内存逻辑资源池,由管理软件来分配和调整内存的资源。资源池化提高了资源的利用率,CXL的动态内存扩展通过减少孤置的内存来提高内存资源的利用率,可以降低成本支出。

这对于大规模的数据中心,特别是云服务厂商非常有吸引力,对于有大量服务器资源的大型企业,也非常有价值。

第二个场景,内存数据自愈。

这里指的是内存的自动修复,也可以叫内存的自愈。

众所周知,SSD是有写入寿命限制的,很多人不知道的是,其实内存也有寿命限制。当内存的损耗达到一定程度后,内存的器件也会逐渐达到一个容错极限,此时,内存的数据错误率机率就会变大,最后,内存就完全不能再用了。

技术上可以有一种机制来对内存条的健康度进行监控,如果一个内存的错误率上升了,可以用监控来发现问题,当它的错误率达到一定的阈值就触发一系列的管理手段,在远端的内存资源池上找到新的资源来补位。

大内存软件技术可以无缝地把健康程度不好的内存条上的数据,重新分配到新的资源池里,数据迁移完成后,原来不健康的内存部件会被标记为不健康,同时,系统会报警提示数据中心管理员来换成新的内存部件。

整个过程中,从监控状态,到迁移数据,到标记和替换不可用内存,整个过程应用都不需要中断,整个过程可以在应用无感知的情况下完成,这就是所谓的“内存自愈”或者叫“内存自修复”。

在这种场景下,大内存作为一个备用的资源池,相当于磁盘系统里的热备盘一样,它作为热备空间来对健康程度不太好的内存进行更换和修复。

第三个场景,提高大规模数据处理应用的效率。

常见的Spark、Hadoop和机器学习都需要分布式的数据处理框架,框架内的各节点间的数据协作有两种方式,第一种是通过shared storage来共享,通过共享的存储系统来进行数据的共享和协作,这种方式比较常见。

第二种采用的是Share nothing架构,每个机器有自己的本地存储,没有共享的存储空间。但计算过程也是需要数据交互的,需要把中间结果进行交换,交换过程非常耗时,会占用很多运行时间,从而会降低整个系统的性能。

如果能打造一种新的共享内存池,让多台主机访问同一个内存池的话,就可以大大提高数据交换的效率。

以上图里的Spark集群为例,需要交互的数据直接写到共享的内存资源池里,各个节点可以访问其他节点所写下来的数据。由于数据交换就发生在内存资源池里面,完全省去了各个节点之间的数据交换,所以,整个进程的速度便大大提升。

共享的内存资源池的应用场景还有很多。比如,一些大型分布式关系型数据库也可以通过共享的内存资源池来提高大Table的查询速度,总之,一种基于内存资源池的数据交换的区域可以显著提升系统的运行效率。

垂直行业的使用场景

根据过去几年的实践,MemVerge的大内存方案在垂直行业内也有了一些实际使用案例。

行业场景一:金融证券领域用大内存技术来推送行情消息数据。

众所周知,证券行业的IT系统追求极致低时延,消息数据的订阅的技术描述叫Pub/Sub,这是一个非常典型的低时延场景。

如上图所示是三台主机节点,上方的这台主机有Publisher进程,它负责发送证券行情的消息数据。下方两台主机有Subscriber进程,负责接收Publisher发布的消息,每台主机都有负责处理和响应数据的Consumer的进程。

这套系统的关键指标是时延,指的是从发送到处理完数据耗费的时间,时间越短,证券交易系统对于行情变化的反应速度越快,就能抢先一步来进行交易,如果谁能让消息更快地处理,谁就得到更大价值。

通常,时延都不高于10个微秒,都是通过RDMA进行交互,随着CXL大内存系统的出现,它可以用大内存资源池来进一步压缩延迟,让跨节点的消息数据的交互通过CXL协议来完成。

目前,MemVerge已经在跟一些证券公司和交易所进行一些探索,在接触中发现,这些企业经常有非常多的异构硬件,在异构计算环境里,CXL的协议也能发挥很大价值,它能缩小异构计算平台之间的数据交互时延,能发挥较大价值。

第二个场景是在高性能计算领域。

大致原理跟刚才提到的Spark场景原理一样,通过一些共享的内存资源池来支持HPC计算节点的数据交互,替代传统的共享存储解决方案,使得数据处理效率实现指数级的提高

MemVerge了解到,高校、研究所、实验室、生物医药、基因测序的企业都需要大内存资源池:

HPC经常会有一些配置很高的胖节点,胖节点的成本很高,但是内存和CPU的利用率不一定高,因此会造成较大浪费。

CXL技术配合CXL软件能用分布式的手段,用普通节点来替代胖节点,以此来节省集群成本,并提高内存资源的利用率,从而节省成本。

此外,HPC场景还有很多需要单机运行的工作负载,由于是单机运行,所以需要配置较大内存,CXL技术能让服务器使用远端节点的共享内存资源,也能达到降低成本的效果。

在需要大量数据交互的HPC场景中,CXL大内存软件方案支持在内存中进行高效,低时延的数据交互,能为HPC用户带来一些性能和效率的提升。

MemVerge总结了大内存软件所需要的能力,其中,最基础的就是内存共享,通过大内存软件,能够让每个主机在应用层面,能够看到其他主机或者其他硬件的内存资源,并能对这些资源进行访问。

大内存软件使得任何应用都能够看到并访问到远端主机内存资源,并且这种本地内存和远端内存在应用层面是完全透明的。这就是所谓的Trasparent Memory Service,透明的内存服务。

值得一提的是,上层应用程序对于大内存软件是没有感知的,应用程序不需要做出任何改变。大内存软件本身会对本地内存和远端内存进行感知和调度管理。

除了基本的管理功能,大内存软件还在增加数据管理软件特性,包括基于内存池的数据保护,高可用、数据安全、数据快照、克隆、内存复制等功能。

在生态方面,MemVerge的大内存软件可以和现有的一些主流的任务调度和编排软件,以及一些资源管理平台兼容,能够更快速地融合到用户的生产线里。

以上提到的多种能力已在MemVerge现有的产品中得以实现,Memory Machine和Memory Viewer这两个产品在单机层面上提供上述场景中的需求,下一阶段,产品将支持更多硬件,将大内存的能力扩展到远端内存池里。

MemVerge的第一个产品叫Memory Machine,早期作为本地大内存软件,支持用DRAM以及英特尔傲腾来构建大内存资源池,支持动态的内存分级服务,也提供应用的内存快照的服务。

第二个产品是Memory Viewer,它也是一个软件,它可以对本地的内存进行监控和管理,比如,可以看到本地有多少内存,通过CXL连接的有哪些内存,内存的健康程度、性能状况如何,还能看到远程的池化内存的容量概况。

CXL的性能表现如何?

目前,MemVerge已经和很多CXL生态内的硬件厂商进行了许多技术对接,上图展示的是CXL版本的Memory Machine的架构图,架构中采用了澜起科技的CXL内存扩展卡,在套系统上跑一些MLC或者Streams测试后,能了解备受关注的性能的情况。

测试系统测试的是大内存软件管理之下的本地DRAM,还有经过澜起CXL扩展卡的远端内存,以及两者混合场景的性能状况。

上图可见,在MLC和Stream这两种测试场景中,传统DDR5内存和使用外置CXL扩展内存的性能表现整体差异不大,甚至部分场景中,CXL扩展内存还有反超前者的现象,这证明了CXL硬件的性能优势。

另外,在混用DDR和CXL大内存的情况下,其性能表现大多明显强于前两者,这展示的是本地和远端内存间的动态调度能力 ,意味着它可以为整体的性能带来更多的优化跟提升。

CXL的生态

MemVerge跟包括澜起科技在内的合作伙伴一起合作开发产品技术,一方面,MemVerge会继续研发Memory Machine和Memory Viewer的功能特性,同时,也会合作开发基于CXL的Pool Manager,Fabric manager等内存管理系统中的关键组件。

CXL正在成为一个非常活跃的生态,多个巨头都陆续加入其中,MemVerge的定位是软件提供商,希望能共同把CXL系统从无到有地打造出来,打造出一种独立的,可以组装的,池化的内存系统,把它变成一个新的百亿级,甚至千亿美金的新市场。