近期用于支持持久内存的 Linux 更新

  • Обзор
  • Текст

Linux 操作系统中增加了一些用于支持持久内存 (PMEM) 的功能。本文将对这些功能进行简要介绍,以便您了解它们如何为您的软件开发工作带来优势。

持久内存开发工具包(PMDK)

Dan Williams 在2018 年持久内存峰会上的演示

PMem YouTube 播放列表

我是来自英特尔的 Andy Rudoff。在本视频中,我将为大家简要介绍一下与持久内存 (PMem) 相关的 Linux 特性,以帮助您了解它们如何为您的软件开发工作带来优势。这些信息基于英特尔的 Dan Williams 在 2018 年持久内存峰会上做的详细演示。他在演示过程中介绍了过去几年中为支持持久内存所添加的 Linux 功能。Linux 操作系统添加了许多用于支持 PMem 的功能。

这些功能是通用的,适用于支持它们的任何平台架构上的任何 PMem 产品。在我们频道 PMem 播放列表的先前视频中,我介绍了 SNIA NVM 编程模型。这些视频详细说明了操作系统的指导原则

并指出,持久内存应该作为文件出现在应用中,这些文件可通过已使用多年的标准文件接口进行内存映射。两个文件系统具有持久内存感知功能,因此可以提供 SNIA NVM 编程模型建议的访问权限。这两个文件系统称为 EXT4 和 XFS,它们基本上是 Linux 中最常用的两个文件系统。

当使用称为 DAX(直接访问的缩写)的新选项进行安装时,这些文件系统支持在不使用系统页面缓存的情况下访问文件。如此图所示,内存映射文件的应用可以直接访问 PMem,而无需传统存储中的 DRAM 分页。一旦应用打开 PMem 感知文件系统中的文件,它就会使用 Linux 添加到 MMAP 系统调用的新标记对该文件进行内存映射。

该标记称为 map_sync,如此处所示。它支持应用与文件系统协商,基本上同意使用缓存刷新指令安全地刷新对 PMem 的变更,而不是使用 m_sync 系统调用将其调用到内核。文件系统可能拒绝使用 map_sync,指出以这种方式刷新变更是不安全的。因此,正确编写的应用必须包含在这种情况下调用 m_sync 的逻辑,如此流程图所示。

使用持久内存开发工具包 (PMDK) 的应用通常不必担心这些细节,因为 PMDK 库会自动处理这些细节。Linux 操作系统的另一个组件是 PM 驱动程序,它为持久内存提供传统的存储接口。这允许未修改的应用和文件系统以一种使其看起来像快速存储的方式使用 PMem。

另外,操作系统还提供了一个名为 BTT(块转换表)的特殊模块,这使得存储具有传统的扇区大小,如 512 字节或 4k 字节(电源故障原子)。我们对 Linux 为 PMem 添加的支持功能就简单介绍到这里。Linux 操作系统功能是通用的,且独立于供应商。

它们不仅提供 PMem 作为内存映射文件的 SNIA 编程模型,而且还提供传统存储接口,因此支持未修改的应用。您可以通过下方链接观看 Dan 的完整演示,详细了解 Linux 提供的 PMem 支持功能,包括他的幻灯片和更多 PMem 相关材料。感谢大家观看。不要忘记为本视频点赞并订阅。

Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.