基于混合持久化内存数据结构的并行优化之一:FPTree

研究目的

现有设计的NVM数据结构下的延迟是更高于DRAM,传统的基于DRAM表现良好的B树但是在NVM上后却表现出了不适,特别在保持数据一致性上。设计一个可以适应NVM特性且可以达到接近DRAM的性能的数据结构是十分必要的。基于混合存储结构,叶子节点在NVM,内部节点在DRAM

研究背景

在FPTree之前,现有的研究大多是基于单一的持久化内存NVM或是基于DRAM仿真NVM的基础上做的设计,仅有的极少部分的基于NVM和DRAM混合内存的数据结构方法却都无法达到现有的基于DRAM的数据结构所能达到的性能。现有的研究设计的数据结构虽然能满足NVM特性,但是却无法达到接近DRAM下数据结构的性能,此外,现有的研究也没能解决或解决好全部的NVM问题,特别是内存泄漏和数据恢复。

研究概述

本文提出了一新的数据结构FPTree,是基于B树的一种变体。

1、FPTree提出了Fingerprints,并结合bitmap来提高树的搜索性能,使得在叶子节点上的每次关键字搜索平均只需要一次。

2、提出了选择性持久化,将叶子节点部分的关键数据存储在NVM上并执行持久化,将内部节点上的数据存储在DRAM并不持久化,当出现程序崩溃或是电源断电就根据叶子节点的关键数据来重建内部节点,从而完成树的重建。

3、提出对于节点上的不需要持久化的数据和需要持久化的数据采用不同的并发机制,FPTree使用Hardware Transactional Memory (HTM)实现对内部节点处理,使用细粒度锁(fine-grained)实现对叶子节点的处理,解决了HTM缓存队列不需要主动使用刷新指令,而持久化到NVM的数据因为要保证数据一致性,在数据修改后需要主动调用刷新指令将数据回刷到NVM上。

4、对于NVM上存在的数据一致性、部分写、数据恢复、内存泄漏的四个问题与挑战,在数据恢复与内存泄漏的挑战上,之前的研究方法都未能良好的解决该挑战,在本文章,提出了使用持久化指针、微日志的方式来记录程序执行过程,当出现崩溃时,可根据持久化的指针和微日志来恢复,从而解决数据恢复和内存泄漏的问题。

关键技术

 叶子节点与内部节点的数据结构如下图所示

内部节点关键字保持有序,叶子节点内关键字无序,通过使用bitmap和fingerprints实现对关键字的快速搜索,并设置lock字段用来实现对叶子数据的并发控制。

采用了如下的结构关键技术实现论文的目的

1、选择性持久化

内部节点数据存储在DRAM,叶子节点数据存储在NVM,即只对叶子节点数据持久化,通过叶子节点的数据恢复内部节点数据,从而降低NVM上写开销。结构如需下图所示

 2、指纹(fingerprints)

指纹是对叶子节点关键字的使用hash得到的一字节大小的值,并存储在叶子节点的首部,与bitmap和Pnext(指向下一叶子节点的指针)组成一个缓存队列的大小。如下图所示

 指纹的主要作用表示起过滤的作用,使搜索通过hash以后可以快速的找到相应的关键字。指纹的计算方式如下:指纹出现的预期数为E[K],m指叶子节点中关键字的个数,n指可能的hash值

 P[K = i] 指关键字出现i次的可能性,且计算如下

 A表示指纹出现i次,B表示指纹出现最少一次。

知道了指纹出现的预期数E[K],便可以确定叶子节点内关键字搜索的预期数E[T]。其计算公式如下

应用二项式定理后:

3、摊销持久化内存分配代价 

内存一次性分配大量的节点存储空间,如下图所示,并将叶子节点分配空间分为两部分,一个为已经占用的叶子节点组,另一个为空闲的叶子空间的叶子节点组。

 4、选择性并发

事务性内存是一种简化并发性的工具,它使用事务使一批写操作原子可见,HTM是一种支持事物内存的硬件。本文研究采用的是Intel的TSX。

因为一方面HTM的使用与另一方面为保持数据一致性需要将数据刷回到内存中存在不兼容,未解决该问题,本文提出了选择性并发,即对于存储到NVM上的关键数据和可通过关键数据恢复的数据采用不同的并发计划。

 如上图所示,需要持久化的数据放在HTM事物外部执行完成,不要持久化的数据放在HTM事物内部执行完成。在对持久化数据进行操作时,首先需要查看该节点数据的lock字段是否为0,即读取该数据是否已被锁,有其他进程正在操控该部分数据。

查询伪代码

 插入伪代码

 节点分裂伪代码

分裂恢复的伪代码

删除伪代码

 删除恢复伪代码

更新伪代码

 

 树重建伪代码

实验环境

本文研究的实验环境基于NVM和DRAM的混合内存。

研究思考

1、一次性分配节点这里,一次应该分配多少节点存储空间合适,当空闲的叶子节点较多时会不会引起内存空间的浪费。

2、在空闲叶子节点组中,当整个叶子组为空时,会释放掉整个空闲的叶子组。这在一些情况下会引起更大的内存分配的开销。

需了解的知识

1、指纹的的计算公式和方法。

2、HTM硬件。

3、事物内存。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值