[转帖]PMDK介绍

pmdk,介绍 · 浏览次数 : 0

小编点评

**PMDK 全称是 Persistent Memory Development Kit,它包含了 Intel 开发的一系列旨在 方便非易失性内存的应用开发的函数库和工具。** **PMDK 的版本迭代更新等很多信息都可以公开看到:** * **网站入口[2]** * **Git 仓库的入口[3]** **PMDK 的主要功能包括:** * 可用库:libpmem、libpmemobj、libpmemblk、libpmemlog、libpmemobj、libpmempool、libvmmalloc * 可用的实用程序:pmempool、pmemcheck * 支持 C/C++、Java、Python 等语言的绑定 **PMDK 的主要用途包括:** * 存储应用程序中的数据 * 提供比存储还快得多的性能的存储 * 解决一些较困难的编程问题

正文

PMDK 的全称是 Persistent Memory Development Kit,它包含了 Intel 开发的一系列旨在 方便非易失性内存的应用开发的函数库和工具。PMDK 是一个还在快速发展变化的新鲜事物,不过版本的迭代更新等很多信息都可以公开看到[1]。需要注意的是,PMDK 的网站入口[2] 和 Git 仓库的入口[3]不是严格的一一对应关系。

实际上,PMDK 的 Git 仓库 [3] 中包含了 libpmem、libvmem、libpmemblk、libpmemlog、libpmemobj、libpmempool、libvmmalloc 等很多函数库。还有很多函数库和工具分散在其他的一些 Git 仓库中,例如我们下面要 介绍的 libpmemkind、libvmemcache、libpmemkv 以及支持 C/C++、Java、Python 等语言的绑定。在此前的文章 A Try on PMDK 中,我使用的是 PMDK 中最底层的一个函数库 libpmem。

Intel 把前面提到的很多函数库、工具等统称为 PMDK [2]。可以推测,它在快速发 展过程中会不断的增加新的成员,也可能会删除旧的成员。这些五花八门的函数库、工具、 例子和文档正说明了 NVM 潜在应用范围之广泛,也证明了 Intel 在不遗余力的构建围绕 NVM 的软件生态。 https://zhuanlan.zhihu.com/p/69345874

有了持久性内存,应用程序就有一个可用于数据放置的新层,如图1所示。除了内存和存储层之外,持久性存储层还提供了比DRAM更大的容量,并且比存储还快得多的性能。应用程序可以像访问传统内存一样就地访问持久性内存驻留数据结构,从而无需在内存和存储之间来回分页数据块。

 

图1:具有持久内存层的内存存储层次结构

为了获得这种低延迟的直接访问,需要一种新的软件体系结构,该体系结构允许应用程序访问持久性内存的范围。

持久性存储器开发套件(PMDK)是库和工具,系统管理员和应用程序开发人员简化管理和访问持久性存储设备的集合。这些库在Linux和Windows上进行了调优和验证,它们建立在直接访问(DAX)功能的基础上,该功能使应用程序可以直接访问持久性内存作为内存映射文件。在存储网络行业协会(SNIA)NVM编程模型中对此进行了详细描述。图2显示了模型,该模型描述了当数据映射到应用程序时,应用程序如何使用传统的POSIX标准API(例如读,写,前置和pwrite)或加载/存储操作(例如memcpy)访问持久性存储设备(NVDIMM)。 。“持久性内存”区域描述了最快的访问速度,因为应用程序I / O绕过了现有文件系统页面缓存,并直接与持久性存储介质进行通讯。

 

图2:SNIA编程模型

直接访问物理介质会带来新的编程挑战和范例。PMDK为应用程序开发人员提供了许多下面突出显示的库和功能,以解决一些较困难的编程问题:

可用库:

    • libpmem 提供低级别的持久内存支持
    • libpmemobj 提供了一个事务对象存储,提供内存分配,交易和持久性存储器编程设施一般。
    • libpmemblk PMEM驻留的块,所有具有相同的尺寸,被原子方式更新的支撑件阵列。
    • libvmem(已废弃): 原来的持久存储池到易失性内存池,类似于系统堆,但保持独立,并与自己的malloc风格的API。由于持久性内存支持已集成到libmemkind中,因此对于任何易失性实现,建议选择该库。 Libmemkind将对多种类型的易失性存储器的支持组合到一个便捷的API中。
    • libvmmalloc 库透明地将所有的动态内存分配到永久性的内存分配。
    • librmem 提供了一种用于一种利用能进行RDMA的RNICs持久性存储器的远程访问底层支持。
    • libvmemcache是一个可嵌入和轻质的内存的缓存解决方案。它旨在以有效且可扩展的方式通过内存映射来充分利用大容量内存,例如具有DAX的持久性内存。

可用的实用程序

  • pmempool管理和分析持久内存池这个独立的实用程序

  • pmemcheck使用动态运行分析Valgrind的用于与持久性存储器使用的增强版本。

     

证明文件

配套视频

 

推荐阅读

持久内存开发套件(Persistent Memory Development Kit-PMDK) - pmem.io: PMDK

PMDK介绍

PMDK(NVML)事务实现机制源码分析

 

与[转帖]PMDK介绍相似的内容:

[转帖]PMDK介绍

PMDK 的全称是 Persistent Memory Development Kit,它包含了 Intel 开发的一系列旨在 方便非易失性内存的应用开发的函数库和工具。PMDK 是一个还在快速发展变化的新鲜事物,不过版本的迭代更新等很多信息都可以公开看到[1]。需要注意的是,PMDK 的网站入口[

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /

[转帖]Windows Server 2022 简体中文版、英文版下载 (updated Oct 2022)

https://sysin.org/blog/windows-server-2022/ Windows Server 2022 正式版,2022 年 10 月更新,VLSC Posted by sysin on 2022-10-27 Estimated Reading Time 8 Minutes