暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

干货分享!持久化内存初探及其在天玑数据库一体机中应用

天玑数据 2021-07-13
415




Gartner发布的2020年十大数据与分析技术趋势中,持久化内存赫然位列其中,其预测未来一段时间内,持久化内存将占内存计算消耗的10%以上,与此同时,持久化内存的产品也陆续问世,并持续迭代,技术日趋成熟。


什么是持久化内存?

答:业界有多种命名方式。如:

持久化内存-PMEM(Persistent Memory)

非易性性内存-NVM(Non-Volatile Storage)

内存级存储-SCM(Storage Class Memory)

持久化内存有啥显著特征?

答:顾名思义,我们可以大致地了解到其具备的一些显著特征,即:

性能达到内存级别

物理形态还是内存形态,与传统内存一样安装在内存槽位上

能实现数据持久化,断电后数据不丢失


当然,这只是最初浅的认识,如果想真正使用这个产品,必然需要对其技术细节有所了解,包括了它的工作模式、技术特性,进而挖掘出其合理的业务应用场景。




No.1

持久化内存的工作模式


持久化内存的工作模式主要有两种:

Memory Mode内存扩展模式

这种模式下,持久化内存作为易失性内存来使用,与原有的内存条位于同一Channel上,作为DRAM的下一级缓存使用,即所谓二级内存(2 Level Memory)。这种模式下,操作系统上看到的内存还是传统内存的容量,看不到PMEM内存容量,应用无需进行调整,但实际运行中,内存到达一定水位线就与二级内存进行交换,从而实现内存的扩展。

AppDirect Mode应用直连模式

应用直连模式下,持久化内存作为独立的非易失性内存使用,当然这需要操作系统的内核能够支持,Linux4.2版本开始就引入了对NVDIMM的支持,这种模式下,又分为两种细分模式,Fsdax和Devdax:


Fsdax模式下,持久化内存被认为是一个磁盘设备,并能够格式化一个文件系统,应用程序依托标准的POSIX文件接口规范进行访问,具有很高的兼容性,应用程序采用标准的磁盘IO或文件IO方式进行读写,但这样数据流在到达持久化内存前,还需要进入物理内存的PageCache,不可避免造成内存空间的浪费及由IO读写颗粒差异转换所造成性能损失,如果采用ext4或xfs等持久化内存兼容的文件系统,系统能够激活dax模式,能够绕过操作系统内存PageCache直接读写持久化内存上的数据,但其也是有众多的前置条件的。


Devdax模式下,持久化内存被驱动为一个字符设备,这样就能够更贴近与内存交互的IO模式,当然应用程序不可避免地要按照持久化内存接口规范进行修改,诸如load/store等指令,这种模式无疑性能是优秀的,即减少文件系统的开销,又绕过传统内存的PageCache;如应用程序在改造过程中按合理IO颗粒进行写入,还能够规避IO颗粒度差异转换所造成的性能损失,达到一个性能最优状态,更重要的一点是devdax能够支持RDMA读写。


因此,我们认为,Memory Mode模式实际上是比较尴尬的一种过渡模式,无法实现数据持久化,仅仅是依托PMEM单条内存容量更大的优势点,实现了内存的扩展,以牺牲部分DRAM槽位及容量性能换更大的二级内存空间,对于一些需要大内存的应用而言,有一定的价值。


而Devdax模式则是适合于应用使用的很好的技术路径,尽管这条路径对应用程序有一定的侵入性,但其能够真正意义上发挥持久化内存的性能优势。此外,两种模式实际是可以共存的,部分空间作为内存扩展,部分空间作为持久化内存,这样无疑会使持久化内存有更多的适用场景。




No.2

持久化内存的关键技术指标


在谈持久化内存的应用这前,除了解其工作模式外,还是需要对其技术指标及深入的理解。


时延

单纯从存储器颗粒上来看时延的话,如下表所示:

其中,持久化内存采用的是3D XPoint的颗粒,其读时延是100ns,写入时延是500ns。


但是,真实情况不能偏听偏信,还是实践从真知,我们引用FAST20上《An Empirical Guide to the Behavior and Use of Scalable Persistent Memory》这篇论文的真实测试数据来说明:


测试是针对傲腾持久化内存 8Bit读,64Bit写进行,结果顺序读时延大约是传统内存的两倍,达到169ns,随机读是传统内存的三倍,达到305ns,写采用两种不同的指令集,由于写入时达到WPQ(写队列)就算写入结束,故每条持久化内存与传统内存相当,均在100ns以下。


注:1.ntstore及clwb两种CPU缓存驻留刷新的方式,ntstore能够bypass cpu cache,而clwb则是异步刷新。

2.2021年,Intel推出了200系列持久化内存,指标及频率有所提升。

当然,在真实的业务环境中,超高并发、超高带宽压力下,持久化内存片内WPQ写队列、数据Merge Buffer、iMC控制芯片,以及interleaved持久化内存容量组合方式,都有可能拉低整体性能预期。但总的来说,整体的时延标准还是非常值得赞许的,从下图的存储层次结构图上,持久化内存,填补了存储时延上的一个空白,即使以最大305ns的读性能表现,也比Nvme SSD 60-80us的读速度,存在十倍以上的优势。

 耐磨度及故障率

为什么会关注这两个指标,有两方面考量,一方面从厂商提供的产品指标上来看,持久化内存的功耗明显大于传统内存,达到15-18W,散热比传统内存大很多,因此对产品的故障率有所担心;另一方面,由于如果做为内存或缓存使用的话,其读写频率会相当高,存储颗粒的磨损问题不可避免,而且是以内存插槽模式安装,日常热拔插维护不方便,当然,指标够硬,这此都不是个事。


  1. 从产品官网上查到其指标AFR为<=0.44,换算成平均无故障时间,约为200万小时,这个指标与企业级固态盘是相当的。当然这个指标不差也不能算是高枕无忧,所以后续的解决方案中,还是需要从架构层面去提供更多的保障,诸如提供多副本方式来避免单点故障。


  2. 按256B寻址方式,256G单条最大耐磨度达到指标为363PBW-497PBW,按照读写5年的100%写寿命计算,那每天的擦写次数可以达到777至1063次,(363PBW或497PBW*1000*1000/256G/365天/5年=777至1063次),换算后,大约能够每1-2分钟进行一次持久性内存的全擦写频率,能够保证五年,从耐磨度上来看,应该说毫无问题,实际使用中,也不大可能有如此高的内存擦写频率。

硬件匹配及容量配置

什么样的硬件能够使用持久化内存,这里主要还是针对CPU的限制,从Intel cascade lake第二代至强可扩展处理器开始,均可以支持持久化内存,不论二路、四路及八路机型。


根据CPU代数差异,二路机型可支持6-8T的持久化内存配置,四路机型可支持12T的持久化内存配置。


目前的单条容量具备128G、256G、512G三种类型,每CPU Socket对应的DIMM槽位上可插的数量也根据机型有所差异,但总的来说对内存槽位的占用相对平衡。



No.3

持久化内存在数据库业务上的应用


从上述持久化内存的技术特性,不难想像,其具备众多典型的应用场景,包括:数据库、虚拟化、云桌面、内容分发、图形计算等等。


过去几年内,由于NAND SSD的普及,因此不论是超融合、存储或数据库一体机配置,”All-Flash”已经成为很多用户首选的配置方案,曾经的二级缓存或分级存储的解决方案,应用场景同比下降,主要还是针对具备大数据量的业务场景下性价比考量。但时代车轮在前进,所谓一山更比一山高,持久化内存的出现,使缓存机制又焕发出新的生机。


对于关键业务数据库,不论是OLAP还是OLTP型,大量的IO读写是常态化的表现,DBA恨不得将关键表和索引都Keep到内存中,以提升访问速度,但毕竟僧多粥少,代价不菲且并非无弊端。但PMEM的出现,进一步拉高了传统数据库架构的性能天花板,直接的应用方式包括了:

增加了内存容量

采用Memory Mode,数据库可识别的显性内存并未增加,但PMEM,实现上是给DRAM加了外挂,提供了更快的内存加载速度、应用重启速度、更大的内存空间。

大幅提升整体IO性能

将持久化内存作为数据IO的持久化缓存,是现阶段研发的一个重点,底层存储引擎采用AppDirect Mode的Devdax方式,配合存储引擎缓存模式的数据预读及flush机制,从而保证持久化缓存中的高读写命中率。

保障关键数据的读写性能

以Oracle数据库为例,Redolog就是IO的一个瓶颈所在,可以考虑将日志文件放置于持久化内存空间,提高了整体IO性能。


当然,不仅仅是传统Oracle数据库,持久化内存在分布式数据库、内存数据库上都能够体现出显著的性能提升。换句话说,有了持久化内存,未来大部分数据库都是内存数据库。




No.4

天玑数据库一体机成功实现持久化内存应用


一直以来,天玑科技PBData数据库一体机及分布式存储软件Phegdata,以性能及稳定性受到众多用户的肯定。持久化内存问世以来,天玑科技研发团队积极跟进,现已正式发布基于持久化内存的高性能Oracle数据库一体机。


实现机制


在天玑PBData数据库一体机的存储节点上,基于devdax最优技术路径对于存储引擎进行深入研发优化,从而支持将PMEM持久化内存作为后端存储池的二级数据缓存,拉升整体性能表现,缩短CPU IO等待,进而提升数据库一体机整体业务负载能力。


天玑PBData数据库一体机,具备大规模采用存储混合模式配置案例,在数据预读、缓存刷新等算法机制方面已十分高效智能,此次将持久化内存也纳入混合存储介质范围,为用户提供了更高性价比的选择,满足传统数据库的性能需求。


当然,持久化内存的加入,必然基于RDMA技术机制进行数据交互,而基于PMEM持久化内存实现数据复本保护,保证了最优数据访问路径及最佳时延,进一步提升了副本安全性,并大大缩短数据重构时间,提升数据安全性。

采用持久化内存混合存储的天玑PBData数据库一体机性能实测



下图是天玑数据库一体机采有Nvme+PMEM与仅采用Nvme全闪存一体机的IO性能对比,在8K并发读及并发写模式下,有约十倍的效率提升:

可持久化内存对于数据库读取的提升非常明显,在不开启并行度的前提下,32G数据量的全表扫描及全索引扫描,时间仅为传统Nvme全闪数据库一体机的三分之一。

综上所述,采用PMEM持久化内存混合存储数据库一体机的优势所在:

  1. 采用DEVDAX模式,最大限度发挥持久化内存的性能优势;

  2. 进一步提升了原有ALL-FLASH数据库一体机的IO性能;

  3. 大连接多并发模式下表现出更优IO稳定性;

  4. 具备很高的性价比;

  5. 缩短数据重构时间,提升数据安全性;


往期推荐:

RoCE架构在数据库一体机中的应用前景分析

深挖技术 | 低调而奢华的计算存储互联技术-RDMA




上海天玑数据技术有限公司是以大数据、云计算为核心的高科技创新企业。公司紧扣国家未来信息化战略和行业信息化发展需求,坚持专业化和产业化的发展方向,以“创新推动发展”为用户提供专业化解决方案。


业务联系电话:400-822-5030

网址:http://www.dnt.com.cn

地址:上海市闵行区田林路1016号科技绿洲三期6号楼

文章转载自天玑数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论