CN107329903B - 一种内存垃圾回收方法及*** - Google Patents
一种内存垃圾回收方法及*** Download PDFInfo
- Publication number
- CN107329903B CN107329903B CN201710508964.0A CN201710508964A CN107329903B CN 107329903 B CN107329903 B CN 107329903B CN 201710508964 A CN201710508964 A CN 201710508964A CN 107329903 B CN107329903 B CN 107329903B
- Authority
- CN
- China
- Prior art keywords
- mapping record
- data block
- mapping
- bits
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004064 recycling Methods 0.000 title abstract description 13
- 238000013507 mapping Methods 0.000 claims description 280
- 230000006870 function Effects 0.000 claims description 40
- 238000004364 calculation method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存垃圾回收方法及***,本申请通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种方法,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率,本申请虽然使存储空间开销变大,但带来了操作上的便利性。
Description
技术领域
本发明涉及存储服务器硬件技术领域,特别是涉及一种内存垃圾回收方法及***。
背景技术
随着SSD(Solid State Disk,固态硬盘)技术的发展,其在性能,寿命,可靠性,容量上已经达到了企业级别使用的程度,所以在近几年基于全闪存存储介质的阵列研究如火如荼。由于SSD不能修改写,数据修改写会映射到新的位置,例如:底层的数据块不能直接修改写,需要擦除之后才能写新数据,不能如同传统磁盘似的在原位置直接修改数据,而市面上出售的SSD盘内部由于有FTL(Flash translation layer,闪存转换层),所以大部分闪存阵列为了性能以及可靠性的原因都在上层去实现类似SSD盘中的FTL机制,将修改写进行重定向,这种机制好处是提升了性能,减少SSD盘的垃圾回收,减少了SSD盘块的擦写次数,提升了SSD盘的寿命,但由于在上层实现了重定向写,需要复杂的垃圾回收机制来保证***可用容量不会减少。
在进行垃圾回收时很重要的技术点就是如何判断数据块block的有效性,通用的做法是将所有数据块后面都加上引用计数,然后将这些数据块都管理起来,之后根据计数是否为0来判断是否需要回收,这种处理方法在大数据量时会耗用大量内存来保存这些计数及这个数据块表,内存开销较大。例如,BloomFilter布隆过滤器是一种空间效率很高的随机数据结构,它利用位数据来很简洁地表示一个集合,并能判断一个元素算法属于这个集合,BloomFilter算法的核心思想就是利用多个不同的Hash函数来解决“冲突”,是一种利用空间换时间的技术,Bloom filter采用的是哈希函数的方法,将一个元素映射到一个m长度的阵列上的一个点,当这个点是1时,那么这个元素在集合内,反之则不在集合内。虽然不比再进行重定向写,但其缺点就是当检测的元素很多的时候可能会有冲突,解决方法就是使用k个哈希函数对应k个点,如果所有点都是1的话,那么元素在集合内,如果有0的话,元素则不在集合内。因此,传统的BloomFilter对于静态的数据实现了快速查询,但其缺点是无法删除某个数据的映射关系,确认该位置是否还被其他数据引用,而无法对不用的数据块进行回收再利用。
发明内容
本发明的目的在于提出一种内存垃圾回收方法及***,以解决现有技术中由于无法删除某个数据的映射关系,确认该位置是否还被其他数据引用,而无法对不用的数据块进行回收再利用的问题。
为达到上述目的,本发明提供了以下技术方案:
一种内存垃圾回收方法,应用于全闪存阵列的I0栈数据块的内存垃圾回收,该方法包括:
确定在所述I0栈中占用的数据块;
将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系;
当查询所述数据块时,通过所述布隆过滤器的多个哈希函数计算所述数据块的多个映射记录位;
查询所述多个映射记录位确定所述数据块是否被标记;
当所述多个映射记录位均被标记,则所述数据块处于被引用状态,所述数据块不进行回收;
当所述多个映射记录位至少有一个映射记录位未标记,则所述数据库处于未被引用状态,则所述数据块进行回收。
其中,所述将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系,包括:
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系为初次记录时,则将所述存储单元上相应的所述映射记录位计数标记为1。
其中,所述将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系,包括:
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位无冲突时,则将所述存储单元上相应的所述映射记录位计数标记为1。
其中,所述将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系,包括:
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位有冲突时,则将无冲突的所述映射记录位计数标记为1,有冲突的所述映射记录位的计数标记增加。
优选的,还包括:
当再次接收到所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将所述数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到所述布隆过滤器的存储单元上,相应的所述映射记录位计数清零;
将所述数据块所需要占用的映射记录位有冲突时进行解引用,将所述映射记录位与所述布隆过滤器中当前记录状况进行对比,若所述映射记录位的计数大于1,则将所述映射记录位的计数减一,若所述映射记录位的计数等于1,则将所述映射记录位的计数清零,并存储到所述布隆过滤器的存储单元上。
一种内存垃圾回收***,应用于全闪存阵列的I0栈数据块的内存垃圾回收,该***包括:
确定单元,用于确定在所述I0栈中占用的数据块;
映射单元,用于将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系;
计算单元,用于当查询所述数据块时,通过所述布隆过滤器的多个哈希函数计算所述数据块的多个映射记录位;
查询单元,用于查询所述多个映射记录位确定所述数据块是否被标记;
当所述多个映射记录位均被标记,则所述数据块处于被引用状态,所述数据块不进行回收;
当所述多个映射记录位至少有一个映射记录位未标记,则所述数据库处于未被引用状态,则所述数据块进行回收。
其中,所述映射单元包括:
第一接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第一存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系为初次记录时,则将所述存储单元上相应的所述映射记录位计数标记为1。
其中,所述映射单元包括:
第二接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第二存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位无冲突时,则将所述存储单元上相应的所述映射记录位计数标记为1。
其中,所述映射单元包括:
第三接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第三存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位有冲突时,则将无冲突的所述映射记录位计数标记为1,有冲突的所述映射记录位的计数标记增加。
优选的,还包括:
计算单元,用于当再次接收到所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第一解引用单元,用于将所述数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到所述布隆过滤器的存储单元上,相应的所述映射记录位计数清零;
第二解引用单元,用于将所述数据块所需要占用的映射记录位有冲突时进行解引用,将所述映射记录位与所述布隆过滤器中当前记录状况进行对比,若所述映射记录位的计数大于1,则将所述映射记录位的计数减一,若所述映射记录位的计数等于1,则将所述映射记录位的计数清零,并存储到所述布隆过滤器的存储单元上。
经由上述的技术方案可知,与现有技术相比,本发明公开了一种内存垃圾回收方法及***,本申请通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种方法,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率,本申请虽然使存储空间开销变大,但带来了操作上的便利性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一提供的一种内存垃圾回收方法的流程示意图;
图2为本发明实施例中对于初次记录映射关系的具体示意图;
图3为本发明实施例中对于与之前记录无冲突的映射关系的具体示意图;
图4为本发明实施例中对于与之前记录有冲突的映射关系的具体示意图;
图5为本发明实施例中查询命中的具体示意图;
图6为本发明实施例中查询不命中的具体示意图;
图7为本发明实施例二提供的一种内存垃圾回收方法的流程示意图;
图8为本发明实施例中无冲突解引用的具体示意图;
图9为本发明实施例中有冲突解引用的具体示意图;
图10为本发明实施例三提供的一种内存垃圾回收***的结构示意图;
图11为本发明实施例四提供的一种内存垃圾回收***的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
基于现有技术中的技术问题,本发明提出一种是用布隆过滤器改善版本的垃圾回收方法,将布隆过滤器应用到垃圾回收过程中的元数据组织中,降低这个过程对内存的开销,并在一定程度上改善垃圾回收的效率。具体实施例内容请具体参见以下内容描述。
实施例一
请参阅附图1,图1为本发明实施例一提供的一种内存垃圾回收方法的流程示意图。如图1所示,本实施例提供了一种内存垃圾回收方法,其应用于全闪存阵列的I0栈数据块的内存垃圾回收,该方法具体步骤包括如下:
S101、确定在I0栈中占用的数据块。
本实施例中,需要说明的是,数据块是在读写文件的时候在上层应用是使用偏移和长度来操作文件,但底层存储一般都是以固定的长度来操作数据,比如从一个文件的0位置开始读取9KB的数据,在linux中是会将这个上层的操作转为读取从偏移0开始3个4KB的数据块,最后一个读取上来4KB但只将1KB的数据内容返回给用户。
S102、将数据块映射到布隆过滤器上,记录数据块的映射关系。
本实施例中,需要说明的是,将数据块是否在被其他上层数据块引用映射到布隆过滤器上,如果有多个映射关系,则将相应的bit位计数增加,减少在大规模应用时数据组织对内存的占用,在回收固定块时可以提升回收效率。
在使用布隆过滤器的过程中,可分为映射记录,查询,记录删除和回收数据块四个过程。
S103、当查询数据块时,通过布隆过滤器的多个哈希函数计算数据块的多个映射记录位。
S104、查询多个映射记录位确定数据块是否均被标记,若是,则执行步骤S105,若否,则执行步骤S106。
S105、当多个映射记录位均被标记,则数据块处于被引用状态,数据块不进行回收。
S106、当多个映射记录位至少有一个映射记录位未标记,则数据库处于未被引用状态,则数据块进行回收。
具体的,记录这个数据块的映射关系,这个过程分为三种场景:
将数据块映射到布隆过滤器上,记录数据块的映射关系,包括:
接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系为初次记录时,则将存储单元上相应的映射记录位计数标记为1。
具体场景1,如图2所示,初次记录映射关系:
(1)收到数据块block1的映射记录请求,使用哈希函数H1,H2,H3计算得到其所需要占用的映射记录位;
(2)将流程(1)中计算得到的映射记录位存储到布隆过滤器的存储单元上,相应的记录位计数为1,如图2所示。
将数据块映射到布隆过滤器上,记录数据块的映射关系,包括:
接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系与之前的映射记录位无冲突时,则将存储单元上相应的映射记录位计数标记为1。
具体场景2,如图3所示,与之前记录无冲突的映射关系:
(1)收到数据块block2的映射记录请求,使用哈希函数H1,H2,H3计算得到其所需要占用的映射记录位,这些映射记录位与之前计算的记录位没有冲突;
(2)将流程(1)中计算得到的映射记录位存储到布隆过滤器的存储单元上,相应的记录位计数为1,如图3所示。
将数据块映射到布隆过滤器上,记录数据块的映射关系,包括:
接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系与之前的映射记录位有冲突时,则将无冲突的映射记录位计数标记为1,有冲突的映射记录位的计数标记增加。
具体场景3,如图4所示,与之前记录有冲突的映射关系:
(1)收到数据块block3的映射记录请求,使用哈希函数H1,H2,H3计算得到其所需要占用的映射记录位,这些映射记录位与之前计算的记录位有冲突;
(2)将流程(1)中计算得到的映射记录位存储到布隆过滤器的存储单元上,无冲突记录位计数为1,有冲突的记录位的计数增加,如图4所示。
对于确定的数据块其查询是否占用的方式是通过布隆过滤器的哈希函数计算得到其记录位,去其记录位查询其实否被标记,如果所有记录位都被标记,则表明该数据块正处于引用过程中,如图5中blockm所有记录位都被标记,说明blockm正在被引用;否则则表明该数据块已经不再被引用,如图6中blockn经哈希函数H2和H3计算后得到的记录位没有标记,只有H1计算后得到的记录位有标记,表明该数据块没有再被引用。
本实施例提供的一种内存垃圾回收方法,通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种方法,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率。
实施例二
请参阅附图7,图7为本发明实施例二提供的一种内存垃圾回收方法的流程示意图。具体的,如图7所示,在上述实施例一的基础上,所述的内存垃圾回收方法,还包括如下步骤:
S707、当再次接收到数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
S708、将数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到布隆过滤器的存储单元上,相应的映射记录位计数清零;
S709、将数据块所需要占用的映射记录位有冲突时进行解引用,将映射记录位与布隆过滤器中当前记录状况进行对比,若映射记录位的计数大于1,则将映射记录位的计数减一,若映射记录位的计数等于1,则将映射记录位的计数清零,并存储到布隆过滤器的存储单元上。
本实施例中,步骤S701~步骤S706部分的内容可以参照实施例一中的对应步骤S101~步骤S106部分内容,在此不再进行详细赘述。
在数据块被上层修改写后,由于SSD不可修改写的特性,则相应的数据块需要进行解引用,其共有两个场景,一是映射记录位无冲突的场景,二是映射记录位有冲突的场景。
场景1,映射记录位无冲突的场景:
(1)收到数据块blockk的映射记录请求,使用哈希函数H1,H2,H3计算得到其所需要占用的映射记录位;
(2)将流程(1)中计算得到的映射记录位相应位清零后存储到布隆过滤器的存储单元上,相应的记录位计数也清0,如图8所示。
场景2,映射记录位有冲突的场景:
(1)收到数据块blockk的映射记录请求,使用哈希函数H1,H2,H3计算得到其所需要占用的映射记录位;
(2)将流程(1)中计算得到的映射记录位和布隆过滤器的位置当前记录状况进行对比,如果该位的计数大于1,则将该记录位的计数减一,如果该位的计数等于1,则将该位及其计数清0,之后将相应结果存储到存储单元上,如图9所示。
对于垃圾回收过程来说,其是查询过程的一个应用,查询到被引用,不可以被回收,而如果查询到该数据块没有被引用,则该数据块可以回收,回收的具体过程与全闪阵列具体实现相关。
本实施例提供的一种内存垃圾回收方法,通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种方法,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率。
本发明在上述公开的方法的基础上,还公开了对应的***。
下面对本发明实施例提供的内存垃圾回收***进行介绍,需要说明的是,有关该内存垃圾回收***的说明可参照上文提供的内存垃圾回收方法,以下并不做赘述。
实施例三
请参阅附图10,图10为本发明实施例三提供的一种内存垃圾回收***的结构示意图。如图10所示,本实施例公开了一种内存垃圾回收***,其应用于全闪存阵列的I0栈数据块的内存垃圾回收,该***包括:
确定单元1001,用于确定在I0栈中占用的数据块;
映射单元1002,用于将数据块映射到布隆过滤器上,记录数据块的映射关系;
计算单元1003,用于当查询数据块时,通过布隆过滤器的多个哈希函数计算数据块的多个映射记录位;
查询单元1004,用于查询多个映射记录位确定数据块是否被标记;
当多个映射记录位均被标记,则数据块处于被引用状态,数据块不进行回收;
当多个映射记录位至少有一个映射记录位未标记,则数据库处于未被引用状态,则数据块进行回收。
具体的,映射单元1002包括:
第一接收单元,用于接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
第一存储单元,用于将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系为初次记录时,则将存储单元上相应的映射记录位计数标记为1。
具体的,映射单元1002包括:
第二接收单元,用于接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
第二存储单元,用于将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系与之前的映射记录位无冲突时,则将存储单元上相应的映射记录位计数标记为1。
具体的,映射单元1002包括:
第三接收单元,用于接收数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
第三存储单元,用于将计算得到的映射记录位存储到布隆过滤器的存储单元上;
当映射关系与之前的映射记录位有冲突时,则将无冲突的映射记录位计数标记为1,有冲突的映射记录位的计数标记增加。
本实施例提供的一种内存垃圾回收***,通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种***,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率。
实施例四
请参阅附图11,图11为本发明实施例三提供的一种内存垃圾回收***的结构示意图。如图11所示,本实施例公开了一种内存垃圾回收***,在上述实施例三的基础上,所述的内存垃圾回收方法,还包括如下结构:
计算单元1105,用于当再次接收到数据块的映射记录请求,通过多个哈希函数计算数据块所需要占用的映射记录位;
第一解引用单元1106,用于将数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到布隆过滤器的存储单元上,相应的映射记录位计数清零;
第二解引用单元1107,用于将数据块所需要占用的映射记录位有冲突时进行解引用,将映射记录位与布隆过滤器中当前记录状况进行对比,若映射记录位的计数大于1,则将映射记录位的计数减一,若映射记录位的计数等于1,则将映射记录位的计数清零,并存储到布隆过滤器的存储单元上。
本实施例中,1101~1104部分的内容可以参照实施例三中的对应的1001~1004部分内容,在此不再进行详细赘述。
本实施例提供的一种内存垃圾回收***,通过布隆过滤器来组织数据块的引用关系,在解除引用时将无冲突的位置直接清0,有冲突的位置减少计数,通过较少的内存占用来表示数据块是否被引用,在全闪阵列的垃圾回收过程中,使用布隆过滤器作为其组织元数据的一种***,减少为记录数据块是否引用所带来的内存占用,并提升了数据块是否占用的查询效率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (2)
1.一种内存垃圾回收方法,其特征在于,应用于全闪存阵列的I0栈数据块的内存垃圾回收,该方法包括:
确定在所述I0栈中占用的数据块,所述数据块为在读写文件时,在上层应用使用偏移和长度来操作的文件;
将所述数据块是否在被其他上层数据块引用映射到布隆过滤器上,记录所述数据块的映射关系;
当查询所述数据块时,通过所述布隆过滤器的多个哈希函数计算所述数据块的多个映射记录位;
查询所述多个映射记录位确定所述数据块是否被标记;
当所述多个映射记录位均被标记,则所述数据块处于被引用状态,所述数据块不进行回收;
当所述多个映射记录位至少有一个映射记录位未标记,则所述数据块处于未被引用状态,则所述数据块进行回收;
当再次接收到所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将所述数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到所述布隆过滤器的存储单元上,相应的所述映射记录位计数清零;
将所述数据块所需要占用的映射记录位有冲突时进行解引用,将所述映射记录位与所述布隆过滤器中当前记录状况进行对比,若所述映射记录位的计数大于1,则将所述映射记录位的计数减一,若所述映射记录位的计数等于1,则将所述映射记录位的计数清零,并存储到所述布隆过滤器的存储单元上;
其中:所述将所述数据块映射到布隆过滤器上,记录所述数据块的映射关系,包括:
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系为初次记录时,则将所述存储单元上相应的所述映射记录位计数标记为1;
或;
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位无冲突时,则将所述存储单元上相应的所述映射记录位计数标记为1;
或;
接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位有冲突时,则将无冲突的所述映射记录位计数标记为1,有冲突的所述映射记录位的计数标记增加。
2.一种内存垃圾回收***,其特征在于,应用于全闪存阵列的I0栈数据块的内存垃圾回收,该***包括:
确定单元,用于确定在所述I0栈中占用的数据块,所述数据块为在读写文件时,在上层应用使用偏移和长度来操作的文件;
映射单元,用于将所述数据块是否在被其他上层数据块引用映射到布隆过滤器上,记录所述数据块的映射关系;
计算单元,用于当查询所述数据块时,通过所述布隆过滤器的多个哈希函数计算所述数据块的多个映射记录位;
查询单元,用于查询所述多个映射记录位确定所述数据块是否被标记;
当所述多个映射记录位均被标记,则所述数据块处于被引用状态,所述数据块不进行回收;
当所述多个映射记录位至少有一个映射记录位未标记,则所述数据块处于未被引用状态,则所述数据块进行回收;
计算单元,用于当再次接收到所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第一解引用单元,用于将所述数据块所需要占用的映射记录位无冲突时进行解引用,相应位清零,并存储到所述布隆过滤器的存储单元上,相应的所述映射记录位计数清零;
第二解引用单元,用于将所述数据块所需要占用的映射记录位有冲突时进行解引用,将所述映射记录位与所述布隆过滤器中当前记录状况进行对比,若所述映射记录位的计数大于1,则将所述映射记录位的计数减一,若所述映射记录位的计数等于1,则将所述映射记录位的计数清零,并存储到所述布隆过滤器的存储单元上;
其中,所述映射单元包括:
第一接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第一存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系为初次记录时,则将所述存储单元上相应的所述映射记录位计数标记为1;
或;
所述映射单元包括:
第二接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第二存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位无冲突时,则将所述存储单元上相应的所述映射记录位计数标记为1;
或;
所述映射单元包括:
第三接收单元,用于接收所述数据块的映射记录请求,通过多个哈希函数计算所述数据块所需要占用的映射记录位;
第三存储单元,用于将计算得到的所述映射记录位存储到所述布隆过滤器的存储单元上;
当所述映射关系与之前的所述映射记录位有冲突时,则将无冲突的所述映射记录位计数标记为1,有冲突的所述映射记录位的计数标记增加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508964.0A CN107329903B (zh) | 2017-06-28 | 2017-06-28 | 一种内存垃圾回收方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508964.0A CN107329903B (zh) | 2017-06-28 | 2017-06-28 | 一种内存垃圾回收方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107329903A CN107329903A (zh) | 2017-11-07 |
CN107329903B true CN107329903B (zh) | 2021-03-02 |
Family
ID=60198891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710508964.0A Active CN107329903B (zh) | 2017-06-28 | 2017-06-28 | 一种内存垃圾回收方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329903B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291126B (zh) * | 2020-02-28 | 2023-09-05 | 深信服科技股份有限公司 | 数据回收方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227318A (zh) * | 2007-12-04 | 2008-07-23 | 东南大学 | 高速网络流量的超点实时检测方法 |
CN102508620A (zh) * | 2011-12-01 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种处理raid5坏扇区的方法 |
CN102567218A (zh) * | 2010-12-17 | 2012-07-11 | 微软公司 | 用于数据去重复块存储的垃圾收集和热点释放 |
CN103098015A (zh) * | 2010-09-30 | 2013-05-08 | 日本电气株式会社 | 存储*** |
US8706884B2 (en) * | 2012-06-19 | 2014-04-22 | Canon Kabushiki Kaisha | Method and system for generating and using an augmented bloom filter |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8316064B2 (en) * | 2008-08-25 | 2012-11-20 | Emc Corporation | Method and apparatus for managing data objects of a data storage system |
US8661037B2 (en) * | 2010-04-09 | 2014-02-25 | International Business Machines Corporation | System and method for multithreaded text indexing for next generation multi-core architectures |
WO2013061680A1 (ja) * | 2011-10-26 | 2013-05-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、データ・アクセス方法およびプログラム |
CN105320654B (zh) * | 2014-05-28 | 2018-08-31 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
-
2017
- 2017-06-28 CN CN201710508964.0A patent/CN107329903B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227318A (zh) * | 2007-12-04 | 2008-07-23 | 东南大学 | 高速网络流量的超点实时检测方法 |
CN103098015A (zh) * | 2010-09-30 | 2013-05-08 | 日本电气株式会社 | 存储*** |
CN102567218A (zh) * | 2010-12-17 | 2012-07-11 | 微软公司 | 用于数据去重复块存储的垃圾收集和热点释放 |
CN102508620A (zh) * | 2011-12-01 | 2012-06-20 | 浪潮电子信息产业股份有限公司 | 一种处理raid5坏扇区的方法 |
US8706884B2 (en) * | 2012-06-19 | 2014-04-22 | Canon Kabushiki Kaisha | Method and system for generating and using an augmented bloom filter |
CN106445944A (zh) * | 2015-08-06 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种数据查询请求的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107329903A (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
US11853549B2 (en) | Index storage in shingled magnetic recording (SMR) storage system with non-shingled region | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
US8516219B2 (en) | Index cache tree | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
CN107122131B (zh) | 自动精简配置的方法及装置 | |
US11269783B2 (en) | Operating method for data storage device | |
CN111143285A (zh) | 一种小文件存储文件***以及小文件处理方法 | |
US9286213B2 (en) | Method and apparatus for managing file system | |
CN107273306B (zh) | 一种固态硬盘的数据读取、数据写入方法及固态硬盘 | |
CN106776361B (zh) | 一种面向大规模非易失性存储介质的缓存方法和*** | |
CN107329903B (zh) | 一种内存垃圾回收方法及*** | |
KR100924021B1 (ko) | 플래시 메모리의 사상 관리 방법 | |
CN111190835B (zh) | 一种数据写入方法、装置、设备及介质 | |
CN115576956B (zh) | 一种数据处理方法、***、设备以及存储介质 | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和*** | |
CN109669623B (zh) | 一种文件管理方法、文件管理装置、电子设备及存储介质 | |
CN112395260B (zh) | 一种数据存储方法及介质 | |
CN108614781A (zh) | 基于NANDflash的有效数据查找方法和NANDflash存储设备 | |
CN109840219B (zh) | 大容量固态存储设备的地址转换***与方法 | |
CN109960667B (zh) | 大容量固态存储设备的地址转换方法与装置 | |
CN107329702B (zh) | 一种自精简元数据管理方法及装置 | |
CN112015672A (zh) | 一种存储***中数据处理方法、装置、设备及存储介质 | |
CN118069074B (zh) | 一种数据处理方法及装置、存储介质、计算机程序产品 | |
CN115454357B (zh) | 一种qcow2文件存储方法以及格式转换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210106 Address after: Building 9, No.1, guanpu Road, Guoxiang street, Wuzhong Economic Development Zone, Wuzhong District, Suzhou City, Jiangsu Province Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: Room 1601, floor 16, 278 Xinyi Road, Zhengdong New District, Zhengzhou City, Henan Province Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |