intel持久性内存峰会学习篇1
pmdk官方介绍
由于一直没有在网上找到关于pmdk的中文文档,自己近一段时间正好也需要研究持久性内存的编成相关知识,这里决定专门针对intel官网上推出的Persistent Memory Developer Training进行中文文档整理
part1:state of project
项目目标
- 如何把可持久性内存提供给应用进行访问
- 如何命名,如何获取这个介质
- 如何管理权限
- 如何备份,如何管理
- 决定把可持续性存储设备看成是一个文件
- 如何把这个文件映射到用户的地址空间中
- 需要考虑如何对这些存储空间进行分配(类似于C语言的malloc和free函数)
- 需要能够实现事务性更新
- 需要拥有一个容器库:比如lists,queues等等数据结构类型
- 需要解决如何调试编写的程序
难点举例:intel最初准备直接使用C语言的malloc函数进行改造:为了解决以上的技术难点,作者专门针对malloc函数进行了改造。作者把malloc步骤分解为两步:第一部首先预留好需要使用的内存空间,第二步把数据保存到持久性内存中并且把这些内存设置为activate。如果在两部之间发生了中断,系统会自动把没有activate的内存链接到freelist中之后释放从而避免发生内存泄漏。1
2
3
4
5//非持久性存储
char *ptr = malloc(size);
//持久性存储
char *ptr = pm_malloc(size);
//这个时候注意到如果在持久性存储中这样使用malloc的过程中,ptr刚刚申请了内存还没有使用,系统就直接发生了中断,将会导致内存泄漏
- 如何把可持久性内存提供给应用进行访问
项目历史
PMDK现状
- 开源代码,并且有一大批爱好者参与到了开发工作中,libmemobj包含了广阔的功能,并且开发者也接管了libmemkind开发任务,并且大量围绕PMDK展开的工作也在同时进行。
- JAVA支持
- C++支持
- libpmemkv模块
- libvmemcache模块
- 一些测试软件的支持,包括VTune,pmemcheck,pmreorder等等
PMDK的未来展望
- 随着更多的应用场景的出现,会有新的lib库完成功能,同时会对C++等等有着更好的支持。
Gitalk 加载中 ...