如何发挥Intel傲腾持久内存最大能力?

近期MemVerge中国区研发总监康炜发表了一篇文章,介绍了Intel 傲腾数据中心持久内存的两种主要模式——Memory Mode(内存模式)App Direct Mode(应用模式),及各自的优缺点和适用场景。

MemVerge成立于2017年,是大内存计算的先行者,主要产品是基于3D XPoint的新型存储软件架构,并拥有领英、腾讯云、海康威视等早期客户。大内存计算是一项新兴技术,任何规模的应用程序都可以放弃传统存储,转而使用丰富、持久和高度可用的内存池。MemVerge 的Memory Machine™软件通过虚拟化 DRAM 和持久内存来形成企业级内存数据服务平台,使这一切成为了可能。公司此前已获得英特尔、思科、NetApp 和 SK hynix 等战略投资者,高榕资本、光速创投等投资机构投资。

基础软件领域是耀途资本投资重点。耀途共参与了MemVerge 两轮融资:2019年4月A轮融资与2020年5月 1900 万美元融资。除了MemVerge ,耀途还在中国和以色列投资了Open AI Lab、焱融科技、速石科技、SQream、StorOne 、雾帜智能等多家公司,覆盖云计算、存储、大数据、AI 等领域。以下是原文:

Intel 傲腾数据中心持久内存(本文简称PMEM)是我们认为一种开拓性的新硬件。通过同时提供远超内存的容量,和远超SSD磁盘的性能,弥补了现有数据中心服务器体系架构中DRAM和SSD之间的巨大鸿沟从而为企业不断快速增长的海量实时数据分析和处理需求,提供了全新的解决方案
在这里插入图片描述

硬件特性角度来看,PMEM提供了很多优势

  • 高性能:相比于硬盘,更加接近内存的访问性能,特别是数据访问延迟很低。
  • 持久性:数据在PMEM中掉电不会丢失。
  • Byte Addressable:数据访问的粒度和CPU cache line对齐。

但是,PMEM并不是说完全即插即用的,在“正确”的使用它之前,有必要了解一下,PMEM支持的几种使用模式,以及他们都有哪些优势和不足,从而选择和自身需求最匹配的模式,来发挥出PMEM最大的能力。

Memory Mode(内存模式)
PMEM的内存模式,顾名思义,就是使PMEM也作为一种内存来工作。这种模式最早也被称作2LM(2 Level Memory),在内存模式下,系统的内存被分成两层,PMEM作为容量层,被操作系统识别为系统内存,正常使用。而DRAM则被作为性能加速缓存,用于加速PMEM的性能。
在这里插入图片描述
这种模式的最大优势是兼容,整个的DRAM cache层是在硬件的MMU中实现的,操作系统自身完全不需要知道自己是运行在什么种类的内存之上的,所以所有的应用都不需要任何修改,就可以享受PMEM带来的超大系统容量的好处。

Memory Mode的一个典型应用场景就是Redis内存数据库,因为所有的数据都是驻留在内存中的,所以更大的内存可以使得Redis数据库保存更多的数据,从而对提升Redis cache命中率有很大的帮助。

但是这种模式的缺点也非常明显,就是它完全抛弃了PMEM的持久化特性,所有写入在PMEM的数据,在节点掉电重启后是不可用的。另一个方面,内存模式使用DRAM作为缓存使用,使得整体系统可用的内存只有PMEM的容量,在容量利用率上也是不足的,举一个例子,在一个配置512G DRAM和1.5T PMEM的机型上,使用Memory Mode,操作系统就仅能看到1.5T的内存容量,整个系统的内存容量利用率仅有75%,考虑到内存的价格,这个成本浪费还是偏大的。

所以笔者认为,PMEM的内存模式,在最开始PMEM面世的时候,作为一个过渡方案,提供了百分百的兼容性,使得传统应用可以使用到大内存带来的优势,是很有价值的,但是随着PMEM相关生态的完善,越来越多的应用软件的支持,内存模式的缺点就会越来越明显,从而慢慢的减少使用了。

App Direct Mode(AD模式)
相比于内存模式,APP Direct Mode则可以利用PMEM的持久化特性。但是就需要操作系统和软件的支持了,Linux内核是从4.2版本开始引入了对SNIA NVDIMM的支持,并在后续的版本中不断的进行了完善。在我们目前常用的CentOS 8.x的发行版中,通常来说操作系统可以将PMEM硬件作为两种不同的设备来使用,并且各有优缺点。

一种是fsdax mode,在这种模式下,PMEM被配置成类似一块磁盘设备,用户可以将其格式化成一个文件系统,然后使用。并且如果使用xfs或者ext4文件系统时,还可以在挂载时使用dax参数,激活文件系统的dax mode,使得应用程序可以跳过kernel page cache来直接读写PMEM上的数据。
PMEM作为fsdax
另一种是devdax mode,在这种模式下,PMEM被驱动为一个字符设备,用户如果想使用它,则必须自行编写程序,或者修改自己原有的应用程序,才能访问到PMEM上面的数据。
PMEM用作DEVDAX

综合这两种模式,他们都可以保存写入PMEM的数据,但是在具体的应用场景上还是有区别的。fsdax模式由于提供的是标准的POSIX文件系统接口,所以他的兼容性更好,应用可以在完全不修改的情况下,把PMEM当作一个非常快速的磁盘来使用。但是这样做,在系统层面上也是有所损失的,因为要使用文件系统的dax模式,也有一系列前置条件,而在没有激活dax的模式下,所有的IO仍旧要通过kernel page cache来缓冲,对于系统内存是很大的一个浪费。同时因为是要模拟磁盘行为,IO的粒度也是512个字节,对于PMEM这样在cache line大小的IO中,能提供的超低延迟特性的硬件来说,IO的粒度仍旧太大了。无法真正发挥出PMEM的全部实力。

笔者认为,只有devdax模式,才是真正的可以完全发挥PMEM所有高性能、可持久化、字节寻址能力的最强模式!但是唯一遗憾的就是要想使用devdax模式,必须重写现有的应用程序,和PMEM设备对接。同时,在非易失性内存上编程,也是和传统编程有较大的区别,需要考虑很多以前不需要处理的问题。所以对于很多现有的应用来说,虽然devdax模式“看上去很美”,但是却没办法采用。

正是看到这个问题,MemVerge创新性的设计并开发了Memory MachineTM软件解决方案,底层由MemVerge的软件根据PMEM特性,使用devdax模式进行编程,实现一整套内存虚拟化解决方案,通过对应用提供池化的虚拟内存,使得应用无需修改,就可以运行在PMEM上,享受大内存带来的高性能,并且通过热点数据识别和内存分级技术,为不同应用量身订制最优内存配比,同时使用MemVerge ZeroIO SnapshotTM技术,为应用软件的数据提供持久化保护。

在这里插入图片描述
转载于https://www.sohu.com/a/470231256_120945024

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值