持久内存(PM)技术提供对非易失性媒体的字节级访问,同时显著减少存储和检索数据的延迟。 它在系统的内存和传统存储之间创建新的层。 依赖于或缩放且快速写入到持久性介质的任何程序都可以从 PM 中受益。
本文的目的是概述如何将非易失性内存库(NVML)集成到 Visual Studio 项目中以便于使用。
注意
永久性内存有时也称为存储类内存(SCM)。
PM 和 NVML
Windows Server 2016 和 Windows 10 周年更新(1607)中引入了对永久性内存的第一个支持。 有关快速概述,请查看以下两个 Channel9 视频:
- 使用非易失性内存(NVDIMM-N)作为 Windows Server 2016 中的块存储
- 使用非易失性内存(NVDIMM-N)作为 Windows Server 2016 Byte-Addressable 存储
为了帮助开发人员利用永久性内存产品/服务的优势,Microsoft还有助于将非易失性内存库(NVML)引入 Windows。 此库提供了各种工具,使应用程序能够感知持久内存。 例如,它包含代码,可让你轻松创建 PM 感知键值存储,用于极其快速的查找和存储。 可以在 NVM 库找到有关 NVML 的详细信息,包括示例。
将 NVML 集成到 Visual Studio 项目中
- 下载 NVML 库文件和标头
- NVML 在 GitHub 上维护。 你可以自行编译源,也可以直接从此处下载已编译的二进制文件:NVML 版本 1.2 - Windows Technical Preview。
将库文件和标头分别放置在所选目录中,例如:“C:\NVML\lib”和“C:\NVML\inc”。
按如下所示配置项目:
- 打开 Visual Studio 项目,然后在“解决方案资源管理器”中右键单击项目的名称。
- 打开生成的弹出窗口底部的项目设置窗格。
- 导航到“配置属性 -> C/C++”,并将存储标头(C:\NVML\inc)的文件夹添加到“其他包含目录”字段。
- 接下来,导航到“配置属性 -> 链接器”,并将存储库的文件夹(C:\NVML\lib)添加到“其他库目录”字段
- 接下来,请确保面向 Windows Server 2016 或 Windows 10 周年更新的项目:
- 导航到“配置属性 -> 常规”,并将“目标平台版本”字段设置为“10.0.14393.0”和
- 导航到“配置属性 -> C/C++”,并将“NTDDI_VERSION=NTDDI_WIN10_RS1;”添加到“预处理器”字段。
- 在代码中包含标头并链接到所需的库
- 此时,只需包含想要在代码中使用的头文件,就像任何其他头文件一样。 例如,若要使用 libpmem:
- 添加“#include <libpmem.h>” 和
- 将“libpmem.lib”添加到“配置属性 -> 链接器 -> 输入 -> 其他依赖项”
此时,你已准备好直接在代码中调用库的函数,并利用它们。