admin管理员组

文章数量:1649146

持久化内存+傲腾持久化内存

  • 持久化内存
    • 简介
    • SNIA的编程模型
    • 持久化内存对于开发者而言意味着什么?
    • PMDK
  • Intel傲腾技术简介
    • 傲腾持久化内存
      • 英特尔傲腾持久内存和标准 DRAM 有什么区别?
      • 英特尔傲腾持久内存和英特尔傲腾固态盘之间有什么区别?
      • 英特尔 傲腾 持久内存与 NVDIMM 有什么区别?
      • 英特尔 傲腾 持久内存有什么优势?
    • 英特尔Optane DC Persistent Memory操作模式说明
    • 配置英特尔® 傲腾™ 数据中心级持久内存
    • PMEM硬件位置
  • 内容来源
  • 本博客是博主个人学习时的一些记录,不保证是为原创,如有侵权请与我联系。

持久化内存

简介

持久化内存(PMEM),也称为非易失性内存(NVM)或内存级存储器(SCM)在下图所示的存储器存储层次结构中提供了一个新的层级,填补了现有层级性能/容量差距。

SNIA的编程模型

存储网络行业协会(SNIA)和一些技术行业公司衍生了一些标准,包括NVM编程模型,以支持用于持久内存的应用程序开发。
(1)SNIA 是个什么机构
SNIA 的全称是 Storage Networking Industry Association,是一个致力于开发标准和 教育项目以推进存储和信息技术的非盈利性组织。SNIA 的会员总数接近 200 个,包括了 CPU、存储设备、服务器、网络等领域的知名企业和学术机构。SNIA 制定了很 多知名的标准,例如 Cloud Data Management Interface (CDMI)、Linear Tape File System (LTFS)、NVM Programming Model (NPM)、Storage Management Initiative Specification (SMI-S) 等等。SNIA 甚至也实现了一些知名标准的参考实现,例如著名的 NDMP V4、XAM SDK。
(2)SNIA NVM 编程模型
SNIA NVM 编程模型(The NVM Programming Model, NPM)推出的目的就是为了推广 NVM 技术的落地。要将一种新存储设备集成到现有生态中是一个特别大的工程,需要众多软硬件 厂商的持续多年的努力和合作。NPM 定义了用户态和内核态不同组件之间的推荐行为,但是 并没有定义具体的 API。可以看出,标准的目的还是以约定行为为主要目的,而不是定义得很细。这也符合一个新技术产生和发展的进程,不太可能在新出现的时候就比很多细节想清楚,而且定义得过细也会限制了厂商的技术创新。新技术的发展还是要靠整个生态的推动和完善。
NPM 有三个主要的版本,v1 是 2013 年底发布的,v1.1 是 2015 年三月份发布的,最新的 v1.2 是 2017 年六月份发布的[3]。

持久化内存对于开发者而言意味着什么?

持久化内存层提供给了开发者一个放置数据以及数据架构的选择。传统的数据被read和write到易失性内存(DRAM)上,然后被刷回到非易失性存储器(SSD、HDD)上。当一个应用程序启动的时候,数据需要先从非易失性存储器(SSD、HDD)上读到易失性内存(DRAM)才能被访问。简单点说就是,传统的read、write先写内存,然后再刷回磁盘,当应用启动时,数据需要先从磁盘读到内存才能被访问。基于数据集的大小,这个从非易失性存储器(SSD、HDD)上加载到易失性内存(DRAM)的过程可能从秒级、分钟级或者小时级不等,这个时间是非常长的。
巧妙地程序设计,开发者和应用架构师现在可以采用持久化内存这种新技术去提高性能同时减少应用的启动时间。
持久化内存的出现带来了一些不适用于传统易失性内存的新的编程关注点,主要有如下内容:
(1)数据持久性:
不能保证存储在刷新之前是持久的。尽管对于已有几十年历史的内存映射文件api(如Linux上的mmap()和msync())也是如此,但许多程序员并没有处理为内存刷新到持久性的需要。遵循标准API(如将更改刷新为持久性的msync())将按预期工作。但是更优的刷新也是可能的,即应用程序直接刷新来自CPU缓存的存储,而不是调用内核。
CPU有无序的CPU执行和缓存访问/刷新。这意味着,如果应用程序存储了两个值,那么它们成为持久性的顺序可能与应用程序编写它们的顺序不同。
(2)数据一致性:
8字节存储在x86架构上具有掉电原子性 - 如果在对PMEM8字节对齐数据的存储期间发生掉电,重启后,在该位置要么是新的8字节要么是旧的8字节,不会是两者的组合(保持原子性,要么完成,要么没完成)。
x86上大于8字节的任何内容都不具有掉电原子性,因此需要软件来实现一致性来进行所需的任何事务/日志记录/恢复。 请注意,这是特定于x86的 - 其他硬件平台可能具有不同的原子大小(PMDK的设计使得使用它的应用程序不必担心这些细节)。
(3)内存泄漏:
内存泄漏到持久化内存是持久的。重新启动服务器不会更改设备上的内容。在当前的易失性模型(DRAM)中,如果应用程序泄漏内存,则重新启动应用程序或系统会释放该内存。
(4)字节级访问:
应用程序开发人员可以根据应用程序的需求在字节级别进行读写。读/写不再需要对齐或等于存储块边界,例如:512byte,4KiB或8KiB。存储不需要读取整个块来修改几个字节,然后将整个块写回持久存储。应用程序可以根据需要随意读取/写入。 这可以提高性能并减少内存占用开销。
(5)错误处理:
应用程序可能需要直接检测和处理硬件错误。由于应用程序可以直接访问持久性内存介质,因此任何错误都将作为内存错误返回给应用程序。
应用程序开发人员可以使用传统的系统调用,如memcpy()、memmap()等来访问持久内存设备。这是一个具有挑战性的途径,因为它需要深入了解持久内存设备和CPU特性。为一个服务器平台开发的应用程序可能不能移植到另一个平台或CPU生成。为了帮助应用程序开发人员应对这些挑战,可以下载并免费使用开放源码的Persistent Memory Development Kit(持久内存开发工具包)。

PMDK

持久内存开发工具包(PMDK)是一组库和工具的集合,供系统管理员和应用程序开发人员使用,以简化对持久内存设备的管理和访问。在Linux和Windows上都进行了调优和验证,这些库构建在直接访问(DAX)特性上,该特性允许应用程序以内存映射文件的形式直接访问持久内存。这在存储网络行业协会(SNIA)的NVM编程模型中有详细描述。下图所示的模型描述了应用程序如何使用传统的POSIX标准API(如read、write、pread和pwrite)访问持久内存设备(NVDIMMs),或者当数据被内存映射到应用程序时,使用memcpy等加载/存储操作。“持久内存”区域描述了最快的可能的访问,因为应用程序I/O绕过现有的文件系统页缓存和直接到持久存储器。

PMDK是与供应商无关的,由英特尔启动,由Optane DC持久性内存的引入所激发。PMDK将与任何提供SNIA NVM编程模型的持久内存一起工作。它是开源的,欢迎社区的贡献。
链接: https://github/pmem/pmdk/.

Intel傲腾技术简介

傲腾持久化内存

英特尔傲腾持久内存是一项创新的内存技术,它将经济实惠的大容量和对数据持久性的支持进行了独一无二的组合。通过增加的容量和独特的内存模式推动企业创新,在降低总体 TCO(Total Cost of Ownership,即总拥有成本)的同时显著提升虚拟机密度,并通过自动硬件集成的安全特性来提高内存安全性。

英特尔傲腾持久内存和标准 DRAM 有什么区别?

英特尔傲腾持久内存 (PMem) 在以下方面与 DRAM 有一些相似之处:封装在 DIMMS(DIMM全称Dual-Inline-Memory-Modules,中文名叫双列直插式存储模块,是指奔腾CPU推出后出现的新型内存条)中,与 DRAM 驻留在同一总线/通道上,并且可以采取与 DRAM 相同的方式来存储易失性数据。
英特尔傲腾持久内存 (PMem) 与 DRAM 的不同之处在于:前者提供了许多令人兴奋的新功能。英特尔? 傲腾? 持久内存的容量远远高于传统的 DRAM。英特尔傲腾持久内存模块具有 128GB、256GB 和 512GB 多种容量,远远大于通常从 4GB 到 32GB 的 DRAM 模块,尽管后者也存在更大的容量。英特尔傲腾持久内存甚至可以在不通电的情况下以持久模式存储数据,通过增加安全性来保证数据不受损。尽管英特尔傲腾持久内存模块的速度不如 DRAM 模块那么快,但从成本/GB 的角度以及可将容量扩展到超过 DRAM 的能力来看,前者的 TCO(Total Cost of Ownership,即总拥有成本) 情况与 DRAM 相比有了很大的改善。

英特尔傲腾持久内存和英特尔傲腾固态盘之间有什么区别?

英特尔 傲腾 持久内存 (PMem) 和英特尔 傲腾 固态盘都使用了相同的英特尔 傲腾 内存介质,但它们是完全不同的产品。英特尔 傲腾 持久内存位于 DIMM 封装中,在 DRAM 总线上运行,可以是易失性的或持久的,并且能够作为 DRAM 的替代品。而英特尔 傲腾 固态盘严格用于标准 NAND 封装模型(AIC、M.2、U.2、EDSFF 等)中的快速存储,并使用 NVMe* 协议驻留于 PCIe 总线上,出于存储原因可始终保持持久,并且可以作为快速存储的替代品。此外,英特尔 傲腾 固态盘在产品方面与标准英特尔 3D NAND 固态盘有所不同。它在所有队列深度(比 NAND 快 6 倍)上都具有突破性的性能(并在低深度上有所区别),在负载下的持续响应(在写入压力下比 NAND 快 63 倍),高服务质量(比 NAND 快 60 倍),以及非常高的耐用性(总写入字节量比 NAND 多 20 倍)。

英特尔 傲腾 持久内存与 NVDIMM 有什么区别?

NVDIMM(非易失性双列直插式内存模块)是一种混合内存,可在断电期间保存数据。NVDIMM 通常将非易失性 NAND 闪存与 DRAM 集成在一起,并在单个内存子系统上集成专用的备用电源。尽管它确实提供了持久性,但这个系统通常会更昂贵,因为您需要与 DRAM 模块一样多的 NAND 存储以及额外的电池备用子系统。而且发生断电时,保存和还原状态也会有所延迟。此外,如果电池未维护或损坏,则会失去备份功能。借助英特尔? 傲腾? 持久内存,您可以实现即时持久性,而无需其他组件,无需担心更换电池,无需额外的存储设备,从而降低了成本,并且不会影响性能。

英特尔 傲腾 持久内存有什么优势?

本机持久性:即使在断电情况下也可以存储数据。
低于 DRAM 价格的大容量:随着更大的持久内存容量的出现,更大的数据集可以存储于更靠近 CPU 的位置,以进行更快的处理,并带来更出色的洞察。更高容量的英特尔 傲腾 持久内存创建了一种更经济实惠的解决方案,由此加速着这种行业范围的 IMDB 趋势。在第二代英特尔? 至强? 可扩展处理器上交付的内存受限的大型工作负载,性能将会显著提高,以进行快速的数据处理。
操作模式:英特尔 傲腾 持久内存具有两种操作模式:内存模式(内存模式非常适合大容量内存,并且由于内存被视为易失性,因此不需要更改应用程序)和 App Direct 模式(软件和应用程序能够直接与英特尔? 傲腾? 持久内存对话,但需要更改应用程序)。通过不同的操作模式,客户可以在多个工作负载中灵活利用英特尔 傲腾 持久内存的优势。
硬件加密:英特尔 傲腾 持久内存配备 256-AES 硬件加密功能,因此您可以放心地知道自己的数据更安全。加密密钥存储在模块的安全元数据区域中,只能由英特尔 傲腾 持久内存的控制器访问。如果需要重新利用或丢弃模块,则可以利用安全加密擦除和 DIMM 覆写来避免数据被意外访问。

英特尔Optane DC Persistent Memory操作模式说明

前面介绍了Optane DC Persistent Memory有两种模式:
Memory Mode
App Direct Mode
服务器将使用DRAM和英特尔Optan DC Persistent Memory的组合。 DRAM具有最低的内存延迟。 英特尔Optane DC Persistent Memory具有稍高的延迟,但提供了可承受的容量和数据持久性。
(1)Memory Mode: Big and Affordable, but Volatile
当配置为内存模式时,应用程序和操作系统会感知到易失性内存池(由Optane DC Persistent Memory提供)。与仅在DRAM系统上的情况完全不同,在此模式下,应用程序中不需要特定的持久存储器编程,并且在断电时不会保存数据。
在内存模式下,DRAM充当最常访问数据的缓存,英特尔Optane DC Persistent Memory则提供大容量内存。高速缓存管理操作由英特尔至强可扩展处理器的内存控制器处理。当从内存请求数据时,内存控制器首先检查DRAM高速缓存,如果数据在DRAM高速缓存中,则响应等待时间与DRAM相同。如果数据不在DRAM缓存中,则从英特尔Optane DC Persistent MEmory读取数据,此时延迟稍长。
内存控制器可以预测的具有一致数据检索模式的应用程序将具有更高的缓存命中率,并且应该看到接近DRAM的性能,而在宽地址范围内具有高度随机数据访问的工作负载可能会看到一些性能差异仅DRAM。此外,数据在内存模式下是易失性的;在断电时不会保存。在第二种模式下启用持久性,称为App Direct。
内存模式无缝地为传统应用程序提供了可承受成本的大容量内存容量。虚拟化数据库部署和大数据分析应用程序是内存模式的理想选择。
(2)App Direct Mode: Big, Affordable, and Persistent
配置为App Direct Mode时,应用程序和操作系统明确知道平台中有两种类型的直接加载/存储内存,可以指示哪种类型的数据读取或写入适用于DRAM或英特尔Optane DC Persistent Memory。需要最低延迟且不需要永久数据存储的操作可以在DRAM上执行,例如数据库“暂存区”。需要持久化的数据或非常大的结构可以路由到英特尔Optane DC Persistent Memory。 需要明确的是,如果要在内存中保持数据持久性,则必须使用App Direct Mode。内存数据库,内存分析框架和超快存储应用程序是使用App Direct Mode大大受益的工作负载的良好示例。
App Direct模式要求操作系统或虚拟化环境启用持久性内存感知文件系统,包括Microsoft Windows Server 2019 *和VMware ESX v6.7 *的未来更新版本。 I英特尔也与Linux社区密切合作,因此可以联系自己对应版本的Linux经销商,了解他们的发布计划,其中包括对英特尔Optan DC Persistent Memory的支持。
(3)总结
这些模式决定了OS将在平台中注册的内存容量。在App Direct模式下,DRAM和英特尔Optan DC Persistent Memory都计入总平台内存中。在内存模式(Memory Mode)中,DRAM用作高速缓存,并且不作为独立的存储器资源出现,因此它不包括在OS感知的总存储器中。例如,具有1.536 TB的英特尔Optan DC Persistent Memory和192 GB的DRAM的平台将在操作系统中注册为App Direct中的1.728 TB总内存,但在内存模式下仅显示为1.536 TB。
这两种模式都使Optane Persistent Memory具备大容量且每GB的价格比同等的DRAM更实惠。系统管理员可以通过平台的BIOS或内存管理工具配置操作模式,甚至可以对内存池进行分区,以便同时在不同的模式下运行。使用intel VTune Profiler了解您的应用程序如何从大容量持久或易失性内存中获益。

配置英特尔® 傲腾™ 数据中心级持久内存

链接: https://software.intel/content/www/cn/zh/develop/articles/qsg-intro-to-provisioning-pmem.html.

PMEM硬件位置

硬件位置有讲究,每个内存通道,一个PMEM,一个DRAM,PMEM要离cpu更近。尽量插满所有插槽。

内容来源

链接: https://docs.pmem.io/persistent-memory/.
链接: https://www.intel/content/www/cn/zh/architecture-and-technology/optane-dc-persistent-memory.html.

本博客是博主个人学习时的一些记录,不保证是为原创,如有侵权请与我联系。

留言即可,我会立即删除。

本文标签: 持久内存