在这种情况下(预算消费者设备),Optane显然是指使用3D XPoint内存(而不是NAND闪存)的小型/快速NVMe连接SSD,从而具有很高的写入耐久性。(因此,如果用作交换空间,它不会磨损)。
对于许多工作负载来说,这仍然很糟糕,因为它仍然需要页面错误和许多微秒的访问时间,而DRAM访问(缓存未命中)则约为70纳秒;它不是直接映射到CPU的内存总线上。同样,无序执行/硬件预取/其他内存并行性可以使每个物理内核在运行中保持约10个高速缓存未命中,但是页面错误正在序列化。当操作系统正在处理页面错误时,无法进行任何有用的工作(在此线程中),因此OoO执行人员没有机会隐藏任何该硬页面错误延迟。(但是,即使70ns也太长了,无论如何也无法完全隐藏。不过,在不同线路上多次失误对于减轻某些工作负载的距离还有很长的路要走。)
使用少量的RAM并依靠快速的SSD交换空间/页面文件并不是这种Optane的唯一用例。(而且可能甚至不是一个好的用例)。如https://www.tweaktown.com/articles/8119/intel-optane-memory-matters/index.html所述,它的主要用例是用作磁性硬盘驱动器的透明缓存。我认为英特尔提供了Windows驱动程序来实现这一目标。您可以购买具有旋转磁存储功能的SATA硬盘驱动器,并内置一些闪存作为磁盘频繁访问部分的缓冲区/缓存。Optane HW +驱动程序可以对任何磁盘执行此操作。
Optane NVMe显然在低队列深度下具有很好的随机读取性能(等待一个读取完成之后再开始另一个读取,不幸的是,当程序必须先读取一个块才能确定下一步要做什么时,这种情况确实发生了,并且软件预取功能很差。没有帮助)。因此,在加快程序启动时间和启动方面应该很棒。
对于大的连续大文件写入而言,这并不是特别令人惊讶。希望驱动程序软件知道绕过Optane高速缓存并直接进入底层磁盘。英特尔的Optane主页链接到https://www.intel.ca/content/www/ca/en/products/memory-storage/optane-memory/optane-16gb-m-2-80mm.html,其中显示了其16GB M .2 Optane具有900MB / s的顺序读取,但只有145MB / s的顺序写入。32GB版本更快,读取速度为1350 MB / s,写入速度为290 MB / s。但是,这并不是Optane最擅长的。它的顺序读取IOPS和随机读取IOPS均为240k IOPS,读取延迟为7 µs。
英特尔有一种叫做IMDT (英特尔内存驱动技术)的东西这是一个虚拟机管理程序,会给操作系统带来更大的主内存地址空间的错觉。有些页面将映射到实际的DRAM主内存,而另一些页面将映射到SSD内存。访问映射到SSD的页面时,将发生IMDT捕获的页面错误,这将导致页面从SSD进入主内存(可能将页面从内存移出到SSD)。IMDT将尝试将页面预取到DRAM中,以减轻SSD的次带宽和延迟。它还将尝试将最热的页面保留在主内存中,以便可以以最小的代价访问它们(唯一的代价可能是由于虚拟化而产生的额外分页层。)OS基本上不考虑此映射,并且可以正常工作。这种内存系统称为软件定义内存(SDM)。不错论文题为“英特尔存储驱动技术表现为科学应用的评价”提供IMDT的性能评估,并确定它有DRAM主内存相同数量的系统。我尚未完全阅读本文,但是IMDT似乎可以在NUMA节点之间迁移页面,以使页面更靠近最需要它们的节点。
就是说,IMDT仅在服务器级Intel处理器上受支持。它旨在创建具有成本效益,高能效的服务器,而对性能的影响可能很小。
http://www.lmdb.tech/bench/optanessd/imdt.html在Optane DC P4800X SSD上具有一些基准。(高端数据中心版本,而不是消费类产品。更高的持续写入能力。)
我没有对此进行研究,所以我不确定它与Windows如何利用消费类Optane SSD完全相关。
Optane品牌名称(有些令人困惑)还用于更有趣的奇特事物:
3D XPoint非易失性DIMM,也称为“ Optane DC持久性内存”。 https://www.anandtech.com/show/12828/intel-launches-optane-dimms-up-to-512gb-apache-pass-is-here。Apache Pass是第一代Optane DC PM的名称。请参阅此以获取有关子孙后代的信息。
英特尔在此处拥有自己的主要营销页面,其中包含一些指向技术细节的链接。显然,“ DC”代表以数据为中心。
这是插入DDR4 DIMM插槽的非易失性存储,显示为实际的物理内存。 显然,只有下一代Xeon(而不是当前的Skylake-X,又名Skylake可扩展处理器系列)才完全支持它。
还有其他类型的NVDIMM,例如电池供电的常规DRAM(可选地具有闪存,用于将数据转储以长期关闭电源,因此它们仅需要超级电容器而不是化学电池)。 https://en.wikipedia.org/wiki/NVDIMM有一些详细信息。
https://www.electronicdesign.com/industrial-automation/why-are-nvdimms-suddenly-hot提供了有关NVDIMM的更多常规信息(以及它们的JEDEC标准化,以及OS +应用程序如何合作以使应用程序直接与之通信)内存映射的NV存储区,以确保提交顺序等)。要点是,它们实际上模糊了RAM和存储之间的界限(从计算机体系结构的角度,而不是严格意义上的欺骗性笔记本电脑广告的严格营销意义上,该广告声称具有4 + 16GB的存储空间。)
操作系统可以让进程将此非易失性物理内存映射到其自己的虚拟地址空间,以便他们可以直接通过用户空间负载访问存储并将其存储到内存地址,而无需任何系统调用,从而使CPU硬件可以继续运行。在有出色的读/写操作时执行订单。(有一些软件库可让开发人员利用此功能,包括flush()
确保数据实际写入持久性存储的能力。
该映射甚至可以写回可缓存,因此数据的使用将充分受益于L3 / L2 / L1d缓存,直到需要将其写回(如果已修改)为止。对于大多数读数据,这种 Optane实际上可以合理地称为4 + 16GB RAM。(当然,目前的数据中心用例为Optane NVDIMMs将使用多少更大的DIMM,如512GB)。
(这mmap
与普通磁盘上的ed文件不同,您只需要在该文件上映射操作系统的页面缓存,操作系统就会在后台执行I / O操作以将脏RAM页面与存储设备同步。)
确保某些数据先到达其他存储才真正到达NV存储(以进行文件系统或数据库日志之类的崩溃恢复)至关重要。对于系统调用,这是您使用POSIX fsync
或的地方fdatasync
。但是,由于应用程序具有真正的内存映射存储,因此可以进行库函数调用。
在x86 asm中,我们正在以正常的加载/存储访问存储,但是我们关心的是何时将数据实际写回到NVDIMM(可以防止掉电),而不是何时对其他内核或缓存一致性DMA可见(一旦它从存储缓冲区提交到L1d缓存),因此x86的常规内存排序规则不能完全解决所有问题。我们需要特殊的指令来从CPU的缓存中清除所选的缓存行。(供NV存储库使用。)
该clflush
汇编指令已经存在了一段时间,但NV存储就是为什么Intel增加的一个重要原因clflushopt
在SKYLAKE微架构(虽然它有其他使用情况,也是如此),并增加clwb
在冰湖(回写不驱逐)。
丹·卢(Dan Luu)前段时间写了一篇有趣的文章,内容涉及使操作系统脱离访问存储的方式的好处,并详细介绍了当时英特尔针对clflush
/ 的计划clwb
及其内存排序语义。它是在Intel仍计划在pcommit
此过程中要求一条称为(持久提交)的指令时编写的,但是Intel后来决定删除该指令:弃用PCOMMIT指令具有一些有趣的信息,说明其原因以及幕后工作方式。
(这不在x86 NV存储低级详细信息中讨论话题了。我应该在其他地方发布本节的大部分内容,但我认为是)
还有Optane DC SSD,如PCIe x4卡或2.5英寸。750GB版本可进行高达2500 MB / s的顺序读取,2200 MB / s的顺序写入和550000 IOPS的随机读取或写入。读取延迟稍差于M.2 NVMe,10 µs。
这是您想要的数据库服务器之类的东西(如果您不能使用NVDIMM),但是这并不能使您的4GB笔记本电脑(对于大多数典型用例)比他们出售的16GB Optane更快。交换空间颠簸通常会产生大量相关读取,因为必须先进入页面并对其进行访问,然后页面错误的代码才能继续执行下一步操作。如果内存确实很紧张,那么操作系统将没有多余的页面可以主动地预取到其中,因此您可以期望队列深度较低,这是消费者Optane进行了优化的。(低延迟。)
英特尔Optane SSD提供了不错的性能-功耗-成本折衷。固态硬盘在不访问时基本上不消耗功率。相反,DRAM芯片中的静态功耗(主要是由于刷新)是很大的。因此,理想情况下,系统中的DRAM数量应与典型工作负载的工作集相匹配。您购买的系统是为典型的工作负载而设计的,该工作负载需要大约4GB或更少的主内存。在这种情况下,如果系统具有8GB的主内存,则将不必要地消耗更多的电量,这会减少电池寿命。但是,通过Optane SSD,您可以偶尔运行需要稍微多些主内存的工作负载,而性能却降到最低(与基于NAND的SSD或HDD相比)。
DRAM内存当前每1GB成本约4.5美元,而英特尔Optane SSD每1GB成本约2美元。因此,16GB Optane SSD比4GB DRAM模块贵,但比8GB DRAM模块便宜。因此,如果您取出Optane SSD并增加4GB内存,您将获得一个更便宜的系统,对于工作量大于4GB的典型工作负载,平均速度也更快。但是硬硬盘故障处理,页面预取和页面交换将比HDD慢。因此,如果典型的工作负载需要少于(或大约)4GB的内存,那么8GB的系统可能会比4GB DRAM + 16GB Optane SSD系统慢。
如果您仅打算将笔记本电脑用于Internet浏览或文本编辑,则它非常棒。Optane SSD有助于启动,可以快速访问最常访问的文件,并且可以用作其他辅助存储。因此,尽管您购买的16GB Optane SSD比4GB的DRAM多,但您将获得一定的独特优势。但是您提到的其他一些应用程序(例如RStudio)至少需要 4GB的内存。如果您通常会同时使用浏览器和RStudio(可能还有其他应用程序),那么您应该拥有至少8GB内存的系统。Optane SSD一直很好。