0%

intel_summit_state_of_project

intel持久性内存峰会学习篇1

pmdk官方介绍


由于一直没有在网上找到关于pmdk的中文文档,自己近一段时间正好也需要研究持久性内存的编成相关知识,这里决定专门针对intel官网上推出的Persistent Memory Developer Training进行中文文档整理

part1:state of project

  • 项目目标

    1. 如何把可持久性内存提供给应用进行访问
      • 如何命名,如何获取这个介质
      • 如何管理权限
      • 如何备份,如何管理
    2. 决定把可持续性存储设备看成是一个文件
      • 如何把这个文件映射到用户的地址空间中
      • 需要考虑如何对这些存储空间进行分配(类似于C语言的malloc和free函数)
      • 需要能够实现事务性更新
      • 需要拥有一个容器库:比如lists,queues等等数据结构类型
      • 需要解决如何调试编写的程序
        难点举例:intel最初准备直接使用C语言的malloc函数进行改造:
        1
        2
        3
        4
        5
        //非持久性存储
        char *ptr = malloc(size);
        //持久性存储
        char *ptr = pm_malloc(size);
        //这个时候注意到如果在持久性存储中这样使用malloc的过程中,ptr刚刚申请了内存还没有使用,系统就直接发生了中断,将会导致内存泄漏
        为了解决以上的技术难点,作者专门针对malloc函数进行了改造。作者把malloc步骤分解为两步:第一部首先预留好需要使用的内存空间,第二步把数据保存到持久性内存中并且把这些内存设置为activate。如果在两部之间发生了中断,系统会自动把没有activate的内存链接到freelist中之后释放从而避免发生内存泄漏。
  • 项目历史

  • PMDK现状

    • 开源代码,并且有一大批爱好者参与到了开发工作中,libmemobj包含了广阔的功能,并且开发者也接管了libmemkind开发任务,并且大量围绕PMDK展开的工作也在同时进行。
    • JAVA支持
    • C++支持
    • libpmemkv模块
    • libvmemcache模块
    • 一些测试软件的支持,包括VTune,pmemcheck,pmreorder等等
  • PMDK的未来展望

    • 随着更多的应用场景的出现,会有新的lib库完成功能,同时会对C++等等有着更好的支持。

Gitalk 加载中 ...