English

 

动态内存(DRAM)一直是用来保证大规模数据访问速率的硬件类型。但是它有几个缺点:价格昂贵,容量有限,而且是非持久性的(为了保存数据,内存需要电源支持,更进一步的问题是,内存需要定期刷新)。英特尔和美光在三年前宣布了 3DXPoint 技术,这将是迈向持久内存的第一步。虽然这项技术的数据访问速度没有内存那么快,但它比闪存存储快得多,而且更具成本效益。看到持久内存的这种潜力,MemVerge公司应运而生,公司的愿景就是将这种潜力变成现实。

 

 

我们看到的第一批 3D XPoint 设备主要针对存储。早期,英特尔利用3D XPoint 持久内存(PMEM)技术来创建更快的 SSD。后来,英特尔发布了一个持久内存模块,该模块可插入DIMM 插槽中,作为 DRAM 的扩展。在这之前我们都认为内存满足低延时数据访问的需求,存储满足大容量的需求,而从PMEM 开始这个界限变得模糊了。MemVerge尝试将存储和内存各自的优势集中在一起,提供一种既有DRAM速度,又有存储的持久性和大容量的新内存介质。

MemVerge 一直在探索持久内存的前景,并开发了软件让 PMEM 充分发挥其潜力,而不是简单地将其用作缓存、速度层或内存扩展器。该公司使用它的大内存计算结合 DRAM和PMEM 将纯 DRAM 的内存环境转换为成本更低同时密度更高的内存环境。它通过将两者虚拟化为软件定义的内存池来实现此目标,该内存池还提供软件定义的服务。除此之外,该软件还提供一个抽象层,允许数据中心的所有应用程序受益于新型内存、内存互连、处理器和内存分配器,以满足现代和新兴应用程序和工作负载的需求。

去年9月,MemVerge正式发布了其Memory Machine软件。该软件提供两种版本:标准版,虚拟化 DRAM 和 PMEM 内存来加速应用程序和降低成本,但没有持久性的数据服务; 而升级版,除了标准版的优点之外更具有了持久性的数据服务,比如基于ZeroIO内存快照的企业级内存服务等。

 

 

ZeroIO 内存快照,顾名思义,快照只发生在DRAM 和 PMEM 中,而无需与存储进行IO。这使得 DRAM(通常是易失性和低可用性)进入了高可用性层。ZeroIO 快照允许按照设定的时间自动进行,允许回滚到以前的快照。还有一个自动保存功能,如果系统发生宕机,可将应用回滚到上一个快照。快照使得轻克隆的生产无需使用更多内存资源。快照还可以迁移到其他服务器,并用于创建新的应用实例。

 

MemVerge Memory Machine的管理

MemVerge Memory Machine具有看起来相当完美的用户界面。仪表盘显示了我们在存储过程中所期望看到的元素。有所区别的是DRAM 和 PMEM 在这里是监控所呈现的主要元素,所以很容易地就可以看到它们的使用情况。界面的顶部是主机、应用实例、快照和警报的选项。

 

 

单击左侧的主页按钮可显示系统的基本信息(IP 地址、操作系统、内核版本、CPU),以及详细了解内存和PMEM的使用情况和性能。

 

 

用户可以通过内存使用报告来查看内存每小时的使用情况。这里也突出显示了PMEM 与 DRAM的使用情况。

 

 

用户还可以查看Memory Machine的 RESTful API 界面并通过这个界面配置或者调用它们。

 

 

内存快照是MemoryMachine的重要组成部分,我们将在性能部分中介绍。

 

 

配置

在我们的实验室中,我们部署MemVerge MemoryMachine在超微 SYS-2029U-TN24R4T 服务器上,具体配置如下:

 

MemVerge Memory Machine性能

 

由于 MemVerge Memory Machine面向的是需要在内存中运行的工作负载和应用程序,因此,我们通常的测试用力在这里没有意义。相反我们将进行一些不同的测试。我们将专门研究诸如纯DRAM对纯PMEM以及对DRAM加PMEM的测试以及每种测试的结果。为了此次的回顾,我们将进行 KDB 性能批量导入和读取测试,以及 Redis用ZeroIO 内存快照快速恢复和 Redis用ZeroIO 内存快照克隆。

 

KDB 性能测试

Kx 的 kdb+ 是一个时间序列内存数据库。它以其速度和效率而广为人知,因此在金融服务行业非常受欢迎。kdb的一大限制是来源于DRAM 容量的限制。MemVerge MemoryMachine非常适合此处,因此kdb可以充分利用PMEM扩展内存空间,其性能与DRAM 类似。对于批量导入测试,我们查看了单个导入,10、100、1000、10000、15000、20000 和 25000 导入,以百万个批量导入/秒为单位进行测量。

使用 KDB 批量导入,我们可以看到一些有趣的结果。在单个导入中,所有三个的结果差不多。在较小的数据量批处理中,我们将纯DRAM视为性能最好的产品。随着批处理量超过 10000,我们看到Memory Machine领先DRAM了。纯PMEM 在任何批量处理的结果都排在最后。

 

 

接下来,我们使用读取测试查看 kdb+。这里的测试设置有点不同。读取测试的整个过程是相同的,但这次我们查看纯DRAM,纯PMEM,分别使用20GB和 40GB的DRAM 缓存的 PMEM。纯DRAM达到4.2GB/s,纯PMEM是 2.9GB/s,使用20GB的DRAM缓存,Memory Machine能以 3.9GB/s的速度与DRAM几乎相同,而使用40GB的DRAM缓存,我们看到了4.8GB/s 的最高性能。更有趣的是,最后两个测试过程中仍然允许大量DRAM用于其他任务。

 

 

Redis内存快照测试

Redis 是一个可用作数据库、缓存和消息代理的开源内存数据存储系统。由于这是一个非常流行和强大的系统,所以用来对MemVerge MemoryMachine进行基准测试非常理想。当Redis在MemVerge Memory Machine上运行时,DRAM和PMEM将分配给 Redis。然后,MemVerge ZeroIO 内存快照在不执行存储IO操作的情况下保存应用程序的内存页。当Redis崩溃时,所有快照到PMem的数据都是持久性的。崩溃恢复只需指向PMEM中保存的数据,而无需从存储中提取和转移数据。

在本节中,我们将测试用于快速恢复的MemVerge ZeroIO内存快照,。

首先,我们将查看使用 ZeroIO内存快照的 Redis的快速恢复。与性能基准不同,我们将在这里展示功能和易用性。当Redis 被安装并开始运行数据库后,我们登录MemoryMachine查看诸如多少PMEM被占用等情况。

 

 

在“Applications”标签页下,我们可以看到 Redis 服务器正在运行。

 

 

在运行时,我们将创建一些快照。显然,如果不创建快照,则无法从快照恢复。

 

 

在完全安全的情况下,再次确认我们已经创建了一些快照。

 

 

在确定了快照创建完成之后,我们故意触发了Redis DB故障。然后选择一个快照并恢复,经过很短暂的停顿,Redis再次启动并运行。

 

 

Redis使用ZeroIO内存快照进行克隆

 

 

这里,我们采取了一些跟上述恢复相同的步骤。创建快照后,我们可以将其恢复为具有新命名空间和新的IP地址的克隆。我们从另一个主机连接克隆,可以看到整个Redis所占用的内存空间与之前大致相同。

 

 

以上所有操作及其他需要的操作都可以通过命令行提示完成。

 

结论

MemVerge MemoryMachine是一种软件定义的存储(SDS),旨在将内存性能与PMEM 的持久性相结合。PMEM 通常用作缓存以加速存储。虽然这是许多存储实例的福音,但内存中的应用程序需要内存性能,而不是缓存。MemVerge 将 DRAM 和 PMEM 虚拟化为软件定义的内存池,并配有软件定义的服务。Memory Machine使用ZeroIO内存快照将DRAM 转换为高可用性层。ZeroIO 允许创建轻克隆,而不占用内存资源。

当我们遇到一种新的技术,我们必须采用新的性能测试和基准。使用常规的基准测试内存中的软件定义存储是没有意义的,因为这不是它的目标。相反,我们利用 KDB 性能进行批量导入和读取测试,以及使用 ZeroIO内存快照进行Redis快速恢复,使用 ZeroIO内存 快照进行Redis克隆。测试是在超微 SYS-2029U-TN24R4T 服务器上进行的,该服务器是支持英特尔 Optane PMEM 模块并经过验证的服务器。

使用KDB批量导入,我们测试了多个数据量的批处理,查看了纯DRAM、纯PMEM 以及两者通过Memory Machine的组合。由于批次开始数据量较小,因此 DRAM 具有最佳性能也就不足为奇了。真正有趣的是,随着测试对资源的占用越来越大,MemVerge的Memory Machine做的越来越好。在KDB的读取测试中,我们看到了类似的趋势。DRAM表现得非常好,这并不奇怪。PMEM做得也还可以,但是比DRAM差点。MemoryMachine只用了20GB的 DRAM缓存,其性能为 3.9GB/s,就已经很接近纯DRAM的4.2GB/s了。如果使用40GB的DRAM用于缓存,我们就可以看到4.8GB/s的整体最佳性能,同时仍能为其他任务留下大量的DRAM空间。

性能测试的第二部分是使用 ZeroIO 内存快照进行Redis 快速恢复,使用 ZeroIO 内存快照进行Redis 克隆。这里更多的是功能与可量化的性能。基本上是,我们快速创建快照,然后触发了故障,系统能够快速重启和运行。

英特尔的PMEM是一项非常有趣的技术,由于轻松使用模块和正确利用模块的方法有限,其被接纳的速度有些缓慢。借助MemVerge的解决方案,用户可以充分利用 PMEM 提供的优势,该解决方案是专为这一技术而构建的。对于那些能够在PMEM 提供的巨大弹性内存中运行应用程序并获得收益的用户来说,MemVerge 绝对具有很高的价值。

 

 

 

本文翻译自2021年1月14日发表于StorageReview网站首页的头条文章。StorageReview.com 是一家世界领先的独立存储研究机构,通过深入的新闻报道、详细评论、SMB/SME 咨询和实验室服务,专业提供包括存储阵列、硬盘驱动器、SSD 以及相关的硬件和软件方面的存储解决方案。本文也是迄今为止由第三方撰写的最全面的一篇介绍MemoryMachine的文章。

StorageReview全面评测Memory Machine