[转载] Optane DCPMM上手体验与实测

原文地址

https://www.bilibili.com/read/cv3981387/

实验室前几天搬来了一台从Intel借的aep服务器做实验,装了Optane DCPMM,即内存型傲腾。趁着别人还没用起来先折腾了一下做了点测试看看DCPMM的效果。不过因为是未正式发布产品,实测数据肯定还是不能直接放出来的,但有的数据真的很惊人。

Optane和3D XPoint是什么

Optane虽然一直有人黑没卵用和不理解,但Optane本身这个概念是挺好的而且理论上很有用的。但的确市场营销上做的极度糟糕。这一节先解释一下Optane和3D XPoint是什么和DCPMM的用途。

计算机内存模型如图,在没有Optane的情况下,内存与硬盘(SSD)间性能隔阂非常大,因此Intel和镁光研发了一种存储材料,称为3D XPoint,作为DRAM内存与SSD的中间性能与价格的产品。Intel由这种材料推出的产品的品牌统称为Optane,品牌下有许多不同类的产品。而镁光分家后现在自己也推出了3D XPoint产品,不过现在只有SSD一种产品,也还没有品牌命名,参考https://www.servethehome.com/micron-x100-3d-xpoint-pcie-x16-nvme-ssd/

有了3D XPoint,Intel就开始到处找应用场景。现今推出的产品形制有:SSD,DCPMM,Optane Memory,Optane Memory + SSD。经常有人问Optane是不是没啥用,就很难回答。Optane产品形制这么多种,谁知道问的是哪个产品。Intel市场这方面做的是真烂。

SSD

最常见普通的形制,也不用多说什么了。纸面顺序读写数据看起来不如别家3、4G+的速度快,但是强在随机读写与延迟,也是更常见的硬盘读写模式。而且Optane SSD存储介质都是3D XPoint,不会存在普通SSD中DRAM或SLC缓存用完就开始掉速的情况。

Optane Memory

可以说是最鸡肋的也是命名最莫名其妙的,叫个Memory却是存储缓存。设想中是用于给硬盘做缓存加速,可以达到SSD的效果,但实际上限制很多且效果不好。效果不好的原因不是东西不行,而是Optane Memory只有16/32G,达不到足够效果。而且完全可以使用软件和Optane SSD来加速机械硬盘,280G的Optane加速2T机械硬盘能够达到顶级2T SSD的效果,更没必要使用这种形制的“Memory”。

后来Intel又推出了H10系列SSD,就是用Optane Memory加速普通SSD,达到高性能SSD但更便宜的效果。实际体验上虽然还行,但是硬件拓扑上,是Optane和NAND闪存分别接PCIe x2,因此必须接在PCH上而且只有新平台才兼容,而因此出货量不大导致DIY性价比也不高,所以基本只有笔记本才见到有用的。

Optane DCPMM

就是内存DIMM形制的Optane产品,插内存槽,可以做内存用也可以做存储用,是DRAM内存与Optane SSD中间定位的产品。延迟在Optane SSD之上在DRAM之下,容价比也在两者之间。这种产品叫NVDIMM(Non Volatile DIMM),是一个通用标准,但现今唯一的产品只有Optane DCPMM(Data Center Persistent Memory Module)。这个就是本文主角。

先介绍一下NVDIMM的使用方法。使用方法是通用标准,虽然现在只有Intel的DCPMM一家产品,但如果有别家产品也是一样用。NVDIMM有两种模式,Memory和App Direct模式。

Memory Mode就是当内存用,类似于DRAM内存当NVDIMM的缓存。比如128G的DRAM内存和512G的NVDIMM做Memory模式,系统就会显示总共512G内存。这个在早期文档中也称为2 Level Memory(2LM),见后图。

作为App Direct模式使用时NVDIMM就是当作一种特殊的存储设备。细节反正没人看有兴趣的自己去看文档吧,这个早期文档中也称为1 Level Memory(1LM),见下图。

还有一种混合模式,就是把多少分给App Direct多少分给Memory模式。

上手


服务器是双路Gold,12*16=196G DDR4-2666 RDIMM内存和12*128G=1.5T Optane DCPMM。别的没啥特别的。插法是每通道插一根DRAM和一根Optane。然后装了Windows Server 2019和Ubuntu 18.04做了测试。NVDIMM的Windows完整支持只有Windows Server 2019和Windows 10 Pro for Workstation版本有。网上有别家公开的详细测试数据,参考https://lenovopress.com/lp1083.pdf和https://arxiv.org/pdf/1903.05714.pdf,有更详细的测试数据。

切换模式

模式是由BIOS设置的。可以在系统中使用Intel软件工具切换,会将目的配置数据写入DCPMM配置中,然后下次启动BIOS会从DCPMM中读取该配置。也可以直接在BIOS中设置。可能是因为是工程机的原因,这台服务器的BIOS中可以切换为1LM、2LM和Auto,并不是Memory Mode和App Direct Mode,也没有混合模式的设置。

值得一提的是BIOS中关于NVDIMM还有设置为带宽优化或延迟优化。现在设置的是带宽优化,还没测试过延迟优化的设置是否真的有区别。

Memory Mode

对于系统来说就是设置为Memory Mode的内存,在Windows下识别为总1.7T内存,剩下真正的192G内存和未配置为Memory模式的DCPMM被识别为为硬件保留。值得一提的是我在Windows下在设置为全部Memory模式开机后,已提交的内存是0.0G,在使用了大量的内存后也仅仅是0.1G,不知道是bug还是特性。在部分Memory模式情况下正常是所有已用内存。

在此模式下NVDIMM为volatile模式,即重启后NVDIMM内数据会丢失。

做了一下AIDA64的测试,看数据性能就是6通道内存数据,应该不是Optane的速度就贴一下,不知道该怎么测大数据量下Optane性能。似乎配置为混合模式性能会弱于完全为内存模式,并没有反复测试不确定。AIDA64将内存错误识别为了12通道DDR4-1746LR的LRDIMM(Optane DCPMM的工作机制类似于LRDIMM,参考https://www.servethehome.com/a-close-look-at-intel-optane-dc-persistent-memory-modules/)。

App Direct Mode

作为该模式时可以格式化成硬盘。针对该模式的硬盘有一套新的机制称为DAX(Direct Access),CPU不必经过传统IO栈就可以使用mmap直接读取NVDIMM中的数据,可以理解为新的设备模型和驱动,使用新的PMDK接口。当然也可以当作普通硬盘来使用,不过这样的效果并不好。

在Windows下设备管理器中可以在“内存设备”中看到12条DCPMM,将其创建为磁盘可以在设备管理器中看到一栏“永久性存储磁盘”。

如果按普通图形方式分配磁盘和格式化则没有DAX模式,测试了一下延迟为3微秒,比p4800x还低得多。用ATTO测试,提示最小IO Size为4KB,测试了4KB-64MB QD4,呈现一个奇妙的双驼峰形,大约在256KB处达到最高性能(这个峰值位置可能与DCPMM型号有关?),随后跌入谷底,然后再提高至平稳,但没有256处高。写入性能很弱,平均读取性能和普通Optane SSD类似。

后来看了下文档发现要用DAX模式的话需要在格式化时用命令行添加一个选项启用DAX:Format-Volume -FileSystem NTFS -IsDax:$true -DriveLetter S。然后查看信息能发现该分区开启了DAX

重新配置了以后测了下数据要好看很多,也平整很多,不过还是有一点微微的双驼峰形,写入略弱于p4800x,读取略强于p4800x。不过Windows上做的测试忘记注意NUMA节点了,不记得这个测试数据是在NUMA上还是非NUMA上做的。

Optane的数据不让放,自己做的内存盘测的数据还是能拿出来对比看看的。在自己电脑(7960X,8x32G DDR4-3000)拿lmdisk和StarWind分别做了50G的内存盘测了下数据,平均延迟4微秒,比DCPMM还高1微秒。下图分别是两者做的内存盘的ATTO测试结果,因为内存64KB一行所以64K的速度最快,也有类似双驼峰的样子。速度上还是吊打DCPMM的。

lmdisk数据
StarWind数据

由于Windows的IO栈相比*nix繁琐低效,之后在Linux下用Intel Memory Latency Checker和iozone测试了一下,结果更惊人,可惜数据并不能放,参考上面提到的两份文档。在Linux上启用DAX是在mount时添加选项-o dax。

Intel mlc测试下来延迟仅比内存(80ns)高一些,为180ns。NUMA节点上DCPMM的延迟也同样仅比NUMA内存(170ns)高这么多(270ns)。

Linux下在64K-128M大小的IO块的测试也同样体现了双驼峰,同样在大约256KB达到最高性能,再大的IO块看起来会越来越低————相比之下的低。为什么说是相比。。。因为再低读取也有接近3GBps的速度,写入低些,已经吊打SSD了。在驼峰上的测试最高达到了22GBps,并没有达到上述文档中的最高40+GBps,而且根据不同的io size速度波动很大,测试难度也很大。没有达到别人的结果有可能是因为只是简单测试没有仔细调节选项,以及iozone并没有对NVDIMM优化,使用block io性能较低。

另外对于NUMA节点上的DCPMM,速度稍低几GB。有意思的是随机读写的性能通常要比顺序读写性能更高不少,有时更低。具体应用可能需要按照该特性进行调优。

总结与应用场景

Optane的广告主要是3点:更大容量,更快重启速度,和更低价格。


关于容量上,以前的E5/E7可以使用SMI缓存和内存板让每通道能最高使用6根内存,使得一颗CPU最高能使用3T内存,但实际上一般并不会插满,而且由于增加的拓扑、性能效率、散热、功耗、体积面积等问题,在Xeon SP开始取消了SMI的设计,所以在6通道的情况下最高内存支持也仅有过去一半1.5T。现在随着DCPMM的引入单块CPU最高内存可以达到4T还能达到更高面积利用率和性能。

R930内存板,4路服务器插8块这个

服务器开机自检中必须的一步就是检查内存错误,我自己的电脑由于内存大设备多开机都需要自检近2分钟,服务器由于需要详细检查内存错误耗时会相当久。而使用DCPMM的服务器则不需要这么久(可能是不需要检查Optane错误?)。实际体验下来确实如此,重启只要2、3分钟就能进系统ssh上了。这一点上对于数据中心来说还是相当有利的。

价格上不用说了,就是内存与SSD的中间产品。

当然作为persistent memory,虽然做内存模式时仍然是会丢失数据,但做App Direct模式时可以使用PMDK保留字节数据。想要不做优化就persistent是不行的

经过测试总的来说性能确实符合价格,但由于不同IO size造成的性能波动影响相对非常大,看来想要利用起这么高的价值需要很大程度的优化。在企业级应用场景大致就是内存数据库、大量虚拟机之类,优化方面也不是问题。而在民用级由于市场对象的关系普通用户大概是没法体验到足够优化和效率的应用了。在民用市场只支持HEDT和Windows 10 Pro for Workstation,而且10代HEDT也还未做支持。作为存储用,普通用户和应用应该能有比普通SSD要好得多的体验,但近年里应该是对不起价格的。作为内存用普通用户大概没必要上这个,如果真的需要128G以上内存但预算有限的话也可以算是个不错的选择(如果有产品了的话)。

Intel与镁光关于3D XPoint分家的一个主要理由就是镁光认为民用市场销售不及Intel预期,3D XPoint应该更注重企业市场。Intel一心推民用市场的原因应该是用老套路通过民用市场铺货摊低生产成本提高企业级市场利润率,但Optane本身面对对象是内存和SSD中间的性价比空间,而民用市场这方面根本不是痛点,加上糟糕的市场命名策略也导致名声毁誉参半。确实是个两难的局面。


posted @ 2020-04-20 15:26  KimBing_Ng  阅读(2470)  评论(0编辑  收藏  举报