PMDK

PMDK

PMDK(Persistent Memory Development Kit)
持久存储器开发套件(PMDK),以前称为NVML,是一个不断增长的库和工具集合。 这些库在Linux和Windows上都进行了调整和验证,它们建立在这些操作系统的DAX功能(Direct Access的缩写)上,该功能允许应用程序将永久内存作为内存映射文件进行访问,如SNIA NVM编程模型所述。

PMDK的源代码位于此GitHub存储库中。https://github.com/pmem/pmdk/

以下库是PMDK的一部分:

libpmemobj

libpmemobj库提供了一个事务性对象存储,为持久性存储器编程提供了内存分配,事务和常规功能。 永久内存的新手开发人员可能希望从此库开始。
有关文档和示例,请参见libpmemobj页面。

libpmemblk

libpmemblk库支持以原子方式更新的大小相同的pmem驻留块的数组。 例如,在pmem中保留固定大小对象缓存的程序可能会发现此库很有用。
有关文档和示例,请参见libpmemblk页面。

libpmemlog

libpmemlog库提供了一个驻留pmem的日志文件。 这对于频繁附加到日志文件的程序(如数据库)很有用。
有关文档和示例,请参见libpmemlog页面。

libpmem

libpmem库提供了低级别的持久性内存支持。 上面的库是使用libpmem实现的。 希望推出自己的持久性内存算法的开发人员会发现此库很有用,但是大多数开发人员可能会在上面使用libpmemobj,并让该库为他们调用libpmem。
有关文档和示例,请参见libpmem页面。

libvmem

libvmem库将持久性内存池转换为易失性内存池,类似于系统堆,但保持独立并且具有自己的malloc样式的API。
有关文档和示例,请参见libvmem页面。

注意:由于持久性内存支持已集成到libmemkind中,因此对于任何新的volatile用法,建议选择该库,因为该库将对多种类型的易失性内存的支持组合到一个便捷的API中。

libvmmalloc

libvmmalloc库透明地将所有动态内存分配转换为持久性内存分配。 这允许在不修改目标应用程序的情况下将持久性内存用作易失性内存。
有关文档和示例,请参见libvmmalloc页面。

libpmempool

libpmempool提供对离线池管理和诊断的支持。 当前,它仅为pmemlog和pmemblk内存池以及BTT设备提供“检查”和“修复”操作。
有关文档和示例,请参见libpmempool页面。

pmempool

pmempool是用于由PMDK库创建的持久性内存池文件的管理工具。 对于系统管理员以及软件开发人员进行故障排除和调试可能很有用。
请参阅pmempool页面以获取可用的命令和文档。

librpmem

librpmem为使用支持RDMA的RNIC远程访问持久性内存提供了低级支持。 该库可用于通过RDMA协议将本地持久性存储区域的内容复制到远程节点上的持久性存储中。
注意:这仍然是实验性的API,不应在生产环境中使用。
有关文档和示例,请参见librpmem页。

libvmemcache

libvmemcache是一种可嵌入的轻量级内存中缓存解决方案。 它旨在通过有效且可扩展的内存映射来充分利用大容量内存,例如带有DAX的持久性内存。
有关最新文档,请参见libvmemcache。

daxio

daxio是一个实用程序,可在设备DAX设备上执行I / O或将设备DAX设备置零。
有关可用的命令和文档,请参见daxio页面。

pmreorder

pmreorder是用于对持久性程序执行一致性检查的实用程序。
请参阅pmreorder页面以获取可用的命令和文档。

pmdk-convert

pmdk-convert工具执行将指定池从旧布局版本转换为该工具支持的最新版本。
有关最新文档,请参见pmdk-convert。

C++ bindings

C ++绑定旨在提供libpmemobj的易于使用,易于出错的实现。 C ++实现需要兼容C ++ 11的编译器,而一项功能则需要C ++ 17。
有关文档和示例,请参见C ++ bindings page页面。

pmemkv

pmemkv是为持久性存储而优化的本地/嵌入式键值数据存储。 pmemkv不仅限于单一语言或支持实现,还为语言绑定和存储引擎提供了不同的选项。
请参阅pmemkv页面以获取可用的文档。

你可能感兴趣的:(非易失性内存)