当前位置: 首页 > 专利查询>浙江大学专利>正文

基于日志结构的持久性内存元数据管理方法及装置制造方法及图纸

技术编号:33617918 阅读:10 留言:0更新日期:2022-06-02 00:36
本发明专利技术提供了一种基于日志结构的持久性内存的内存块元数据管理方法及装置,本发明专利技术将持久性内存的内存块元数据存入DRAM中,并将内存块元数据的核心数据根据内存块的状态更新以日志条目的形式追加写入到持久性内存的日志文件中;所述日志文件中划分成多个日志组存储日志条目。同时在DRAM中保存日志组元数据,所述日志组元数据为指明日志组分配情况的位图bitmap,通过红黑树对已分配的日志组元数据进行管理,并将被释放的日志组元数据通过链表进行管理。本发明专利技术通过修改元数据的布局模式,使得持久性内存元数据的分布更具有局部性,减少小规模数据的随机写入,提高持久性内存的分配性能。配性能。配性能。

【技术实现步骤摘要】
基于日志结构的持久性内存元数据管理方法及装置


[0001]本专利技术涉及计算机科学内存编程领域,尤其涉及一种基于日志结构的持久性内存元数据管理方法及装置。

技术介绍

[0002]新兴的持久性内存(PM:persistent memory)具有低延迟,高容量以及数据掉电不丢失的特性,已成为学术界的研究热点之一。面向持久性内存的内存分配器也在事务性内存领域、KV存储等领域有广泛应用。传统的持久性内存分配器在进行大块内存分配时,将内存分配元数据放置在每个内存块的头部,在经过一系列的内存分配与释放操作后,元数据将随机分布在内存地址空间中,而持久性内存的一项特性为写入小规模数据时随机写入性能比顺序写入性能下降显著,因此对内存分配元数据的修改操作易成为内存分配的性能热点。

技术实现思路

[0003]为了解决传统元数据布局带来的随机写入问题,本专利技术提出了一种基于日志结构的持久性内存元数据管理方法及装置。
[0004]本专利技术采用的技术方案是:
[0005]一种基于日志结构的持久性内存的内存块元数据管理方法,包括:
[0006]将持久性内存的内存块元数据存入DRAM中,并将内存块元数据的核心数据根据内存块的状态更新以日志条目的形式追加写入到持久性内存的日志文件中;所述日志文件中划分成多个日志组存储日志条目,且日志文件的头部保存着日志文件的元数据:包含一个指向保存已分配日志组的链表指针,一个指向仅在空间回收中使用的链表指针,一个用于指明正在使用的链表的比特位;每个日志组头部保存的日志组元数据包含日志组编号,指明日志组是否可用的标志位,指向下一个已分配日志组的指针。
[0007]同时在DRAM中保存日志组元数据,所述日志组元数据为指明日志组分配情况的位图bitmap,通过红黑树对已分配的日志组元数据进行管理,并将被释放的日志组元数据通过链表进行管理。
[0008]进一步地,在DRAM中采用三个链表(活跃链表、回收链表、留存链表)对持久性内存的内存块元数据进行管理,其中:
[0009]已分配的内存块对应的元数据存入活跃链表中,被用户释放的内存块对应的元数据存入回收链表中,物理内存被释放只保留虚拟地址的内存块对应的元数据保存在留存链表。
[0010]进一步地,将内存块元数据的核心数据根据内存块的状态更新以日志条目的形式追加写入到持久性内存的日志文件中,具体为:
[0011]在分配内存块时追加写入一个普通日志条目到持久性内存的日志文件中,在释放内存块时则追加写入一个墓碑日志条目到持久性内存的日志文件中,墓碑条目指向内存块
对应的普通日志条目。所述普通日志条目包含内存块大小、起始地址、日志类型三项属性。
[0012]进一步地,还包括对日志组元数据占用的空间回收;所述空间回收的方法包括快速空间回收和慢速空间回收,具体如下:
[0013]快速空间回收:扫描红黑树中保存的日志组元数据,如果日志组元数据的bitmap为空,将日志组元数据移入链表。
[0014]慢速空间回收:将日志文件头部的已分配日志组的链表记作list
old
,另一空链表(仅在空间回收中使用的链表)记作list
new
。扫描list
old
,根据日志组元数据中的bitmap,将已分配的日志组添加到list
new
中。在扫描完成后,修改alt比特位指明当前使用的链表,并将list
old
中的日志组释放。
[0015]进一步地,根据日志文件大小选择空间回收的方法,文件大小越大,越适合选择慢速空间回收。
[0016]一种基于日志结构的持久性内存的内存块元数据管理装置,包括一个或多个处理器,用于实现上述的基于日志结构的持久性内存的内存块元数据管理方法。
[0017]本专利技术的有益效果是,通过修改元数据的布局模式,使得持久性内存元数据的分布更具有局部性,减少小规模数据的随机写入,提高持久性内存的分配性能。
附图说明
[0018]图1表示基于日志的内存元数据管理模式图
[0019]图2表示内存元数据布局的两层结构图
[0020]图3表示本专利技术与其他现有内存分配器在两种不同负载下的性能对比图;
[0021]图4是本专利技术基于日志结构的持久性内存的内存块元数据管理装置结构示意图。
具体实施方式
[0022]下面结合附图与具体实例对本专利技术作进一步说明。
[0023]本专利技术提供了一种基于日志结构的持久性内存的内存块元数据管理方法,如图1所示,将持久性内存的内存块元数据(Virtual Extent Header,VEH)存入DRAM中,并将内存块元数据的核心数据根据内存块的状态更新以日志条目(log entry,LE)的形式追加写入到持久性内存的日志文件中;所述日志文件中划分成多个日志组(chunk)存储日志条目。
[0024]同时在DRAM中保存日志组元数据(vchunk),所述日志组元数据为指明日志组分配情况的位图bitmap,通过红黑树对已分配的日志组元数据进行管理,并将被释放的日志组元数据通过链表进行管理。
[0025]在DRAM中采用链表的形式对持久性内存的内存块元数据进行管理,其中:
[0026]已分配的内存块对应的元数据存入活跃链表(Activated list)中,被用户释放的内存块对应的元数据存入回收链表(Reclaimed List)中,物理内存被释放只保留虚拟地址的内存块对应的元数据保存在留存链表(Retained List)。
[0027]如图1所示,VEH1与VEH4是当前已分配内存块对应的VEH,存放于Activated list当中,对应于持久内存日志文件中的LE1与LE4,而其他的链表内的VEH则无日志条目与之对应。LE1与LE4则对应于持久性内存上的内存块1与4,日志文件是顺序写入的,在内存块分配与释放时,修改的元数据只会追加在文件末尾。
[0028]本专利技术的管理方法,内存块的元数据布局根据持久性内存和DRAM设计为两层结构,其结构如图2所示:
[0029]第一层,持久性内存中的内存块元数据的布局:为每个更新的内存块维护一条日志条目(log entry,LE),包含内存块大小、起始地址、日志类型三项属性,大小约为8B。内存分配器在持久性内存中维护一个日志文件,该文件被划分为多个的日志组(chunk),在每个日志组chunk中保存多条日志条目(例如:大小为1KB,对应存放128条日志条目)。日志文件的头部保存着日志文件的元数据,包含一个指向保存已分配日志组chunk的链表指针,一个指向仅在空间回收中使用的链表指针,一个用于指明正在使用的链表的比特位。每个chunk包含chunk头部与日志数据两部分,Chunk头部保存的元数据包含日志组chunk编号,指明日志组chunk是否可用的标志位,指向下一个日志组chunk的指针三个部分。
[0030]第二层,DRAM中元数据的布局:为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于日志结构的持久性内存的内存块元数据管理方法,其特征在于,包括:将持久性内存的内存块元数据存入DRAM中,并将内存块元数据的核心数据根据内存块的状态更新以日志条目的形式追加写入到持久性内存的日志文件中;所述日志文件中划分成多个日志组存储日志条目,且日志文件的头部保存着日志文件的元数据,日志文件的元数据包含一个指向保存已分配日志组的链表指针,一个指向仅在空间回收中使用的链表指针,一个用于指明正在使用的链表的比特位;每个日志组头部保存日志组元数据,日志组元数据包含日志组编号,指明日志组是否可用的标志位,指向下一个已分配日志组的指针。同时在DRAM中保存日志组元数据,所述日志组元数据为指明日志组分配情况的位图bitmap,通过红黑树对已分配的日志组元数据进行管理,并将被释放的日志组元数据通过链表进行管理。2.根据权利要求1所述的方法,其特征在于,在DRAM中采用链表的形式对持久性内存的内存块元数据进行管理,其中:已分配的内存块对应的元数据存入活跃链表中,被用户释放的内存块对应的元数据存入回收链表中,物理内存被释放只保留虚拟地址的内存块对应的元数据保存在留存链表。3.根据权利要求1所述的方法,其特征在于,将内存块元数据的核心数据根据内存块的状态更新以日志条目的形式追加写入到持久性内存的日志文件中,具体为:在分配内存块时追加写入一个普通日志条目到...

【专利技术属性】
技术研发人员:何水兵李振鑫宋浩哲党政洪佩怡
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1