实验室前几天搬来了一台从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,将其创建为磁盘可以在设备管理器中看到一栏“永久性存储磁盘”。




