CN103927263B - 垃圾回收方法和装置 - Google Patents
垃圾回收方法和装置 Download PDFInfo
- Publication number
- CN103927263B CN103927263B CN201410128648.7A CN201410128648A CN103927263B CN 103927263 B CN103927263 B CN 103927263B CN 201410128648 A CN201410128648 A CN 201410128648A CN 103927263 B CN103927263 B CN 103927263B
- Authority
- CN
- China
- Prior art keywords
- free block
- block group
- gear
- vpc
- free
- 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
Landscapes
- Memory System (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种垃圾回收方法和装置,属于计算机技术领域。该方法包括:获取各个空闲块的VPC;根据各个空闲块的VPC,确定第一空闲块组和第二空闲块组,根据第一档位数范围中的档位数对第一空闲块组进行档位划分,第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中空闲块VPC的增长与第一档位数范围中的档位数的增长速度呈正相关;依划分后的档位,从第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。本发明通过采用非线性分档,精细化GC集中区域的分档,避免了VPC发生变化时,链表的频繁操作,减少了GC的延迟,节省了计算开销。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种垃圾回收方法和装置。
背景技术
随着计算机技术的发展,SSD(Solid State Drive,固态硬盘)存储越来越普遍。SSD由控制器和存储器组成,控制器接收主机下发的IO(Input Output,输入输出)请求,将其拆分成固定大小并分配空闲物理地址,再将请求发送给存储器,存储器处理完请求后返回响应给控制器,控制器对响应进行处理并返回给主机。
在现有技术中,当空闲物理地址不足时,控制器需要对存储器的原有数据进行删除操作,删除的最小单位是块。而当原有数据中部分数据有效时,需要进行GC(GarbageCollection,垃圾回收),即将原有数据中的有效数据复制到其他空白区域,再进行删除操作。为了减少GC过程中复制的数据量,提升GC速度,会尽量选择有效数据少的块进行GC。为此,通常采取分档排序法确定待进行GC的块,以VPC(Valid Page Count,有效页计数)来表示有效数据量,即根据存储器中块的VPC和确定的档位数进行线性分档,从低档位中确定待进行GC的块。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
在应用分档排序法进行GC时,存储器的块VPC都是偏小的,而分档排序法是根据固定的档位进行分档,导致大多数块会集中于某个档位中,不利于GC的进行,而如果增加档位,以减少每个档位的范围,由于分档算法一般是通过链表方式实现的,档位数越多,当VPC发生变化时,就会导致链表操作更加频繁,GC的延迟和计算开销都会大幅提升。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种垃圾回收方法和装置。所述技术方案如下:
第一方面,提供了一种垃圾回收方法,所述方法包括:
获取各个空闲块的有效页计数VPC;
根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块;
根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数随着该第一空闲块组中的空闲块的VPC的增长而增长,且该第一档位数范围中的档位数随该第一空闲块组中的空闲块的VPC增长的增长的增长速度大于第一预设速度;
按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
结合第一方面,在该第一方面的第一种可能实现方式中,所述方法还包括:
根据第二档位数范围中的档位数对所述第二空闲块组进行档位划分,所述第二档位数范围中的档位数随着第二空闲块组中的空闲块的VPC的增长而增长,且第二档位数范围中的档位数随所述第二空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
结合上述任一种可能实现方式,在该第一方面的第二种可能实现方式中,所述方法还包括:
根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,所述第三空闲块组包括所述第二空闲块组中多个VPC属于指定数值范围的空闲块,根据第三档位数范围中的档位数对所述第三空闲块组进行档位划分,所述第三档位数范围中的档位数随着所述第三空闲块组中的空闲块的VPC的增长而增长,且所述第三档位数范围中的档位数随所述第三空闲块组中的空闲块的VPC增长的增长速度大于所述第一预设速度。
结合上述任一种可能实现方式,在该第一方面的第三种可能实现方式中,所述方法还包括:
根据所述第二空闲块组中各个空闲块的VPC,确定第四空闲块组,所述第四空闲块组包括所述第二空闲块组中除所述第三空闲块组以外的空闲块;
根据第四档位数范围中的档位数对所述第四空闲块组进行档位划分,所述第四档位数范围中的档位数随着所述第四空闲块组中的空闲块的VPC的增长而增长,且所述第四档位数范围中的档位数随所述第四空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
第二方面,提供了一种垃圾回收装置,所述装置包括:
获取模块,用于获取各个空闲块的有效页计数VPC;
第一确定模块,用于根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块;
第一档位划分模块,用于根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数随着该第一空闲块组中的空闲块的VPC的增长而增长,且该第一档位数范围中的档位数随该第一空闲块组中的空闲块的VPC增长的增长速度大于第一预设速度;
垃圾回收模块,用于按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
结合第二方面,在该第二方面的第一种可能实现方式中,所述装置还包括:
第二档位划分模块,用于根据第二档位数范围中的档位数对所述第二空闲块组进行档位划分,所述第二档位数范围中的档位数随着所述第二空闲块组中的空闲块的VPC的增长而增长,且所述第二档位数范围中的档位数随所述第二空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
结合上述任一种可能实现方式,在该第二方面的第二种可能实现方式中,所述装置还包括:
第二确定模块,用于根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,所述第三空闲块组包括所述第二空闲块组中多个VPC属于指定数值范围的空闲块,根据第三档位数范围中的档位数对所述第三空闲块组进行档位划分,所述第三档位数范围中的档位数随着所述第三空闲块组中的空闲块的VPC的增长而增长,且所述第三档位数范围中的档位数随所述第三空闲块组中的空闲块的VPC增长的增长速度大于所述第一预设速度。
结合上述任一种可能实现方式,在该第二方面的第三种可能实现方式中,所述装置还包括:
第三确定模块,用于根据所述第二空闲块组中各个空闲块的VPC,确定第四空闲块组,所述第四空闲块组包括所述第二空闲块组中除所述第三空闲块组以外的空闲块;根据第四档位数范围中的档位数对所述第四空闲块组进行档位划分,所述第四档位数范围中的档位数随着所述第四空闲块组中的空闲块的VPC的增长而增长,且所述第四档位数范围中的档位数随所述第四空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
本发明实施例提供了一种垃圾回收方法和装置,通过获取各个空闲块的有效页计数VPC;根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块;根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与该第一档位数范围中的档位数的增长速度呈正相关关系;按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。采用本发明实施例提供的方案,对空闲块进行非线性分档,避免了线性分档的大多数块集中于某一个档位所导致的GC进行困难的问题,同时避免了当VPC发生变化时所导致的频繁链表操作,在不增加计算开销的情况下,减小了GC的延迟,降低了计算开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种垃圾回收方法流程图;
图2是本发明实施例提供的一种垃圾回收方法流程图;
图3是本发明实施例提供的基于主机顺序写场景的档位划分方法示意图;
图4是本发明实施例提供的一种垃圾回收方法流程图;
图5是本发明实施例提供的基于主机随机写场景的档位划分方法示意图;
图6是本发明实施例提供的一种垃圾回收装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种垃圾回收方法流程图。参见图1,该方法具体包括:
101、获取各个空闲块的有效页计数VPC。
102、根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块。
103、根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与该第一档位数范围中的档位数的增长速度呈正相关关系。
104、按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
采用本发明实施例提供的方案,对空闲块进行非线性分档,避免了线性分档的大多数块集中于某一个档位所导致的GC进行困难的问题,同时避免了当VPC发生变化时所导致的频繁链表操作,在不增加计算开销的情况下,减小了GC的延迟,降低了计算开销。
图2是本发明实施例提供的一种垃圾回收方法流程图,参见图2,该方法具体包括:
201、获取各个空闲块的有效页计数VPC。
在本发明实施例中,在每次响应写请求时,根据对写请求的地址分配情况以及写入数据,记录发生变化的块的VPC。每隔预设周期对存储系统中的存储介质上的剩余资源进行检测,当确定剩余资源小于预设阈值时,则触发对记录的VPC的获取。
在本发明实施例中,仅以VPC的值来表示待删除数据的块上有效数据的多少,VPC的值越大,说明该待删除数据的块上的有效数据越多,VPC的值越小,则说明该待删除数据的块上的有效数据越少。事实上,在本发明提供的其他实施例中,还可以通过其他参数(如剩余资源的百分比等)来表示空闲块上有效数据的多少,在此不再赘述。
202、根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于该第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块。
在本发明实施例中,第一阈值可以用来衡量各个空闲块VPC值的大小,该第一阈值可根据经验确定,可选地,该第一阈值可以为1000。当然,该第一阈值还可以根据获取到的VPC值范围确定,如获取到的VPC值分布在2000~10000的范围内,则可以将2500确定为第一阈值。当然,在本发明提供的其他实施例中,还可以通过其他方式对第一阈值进行确定,在此不作限定。
在本发明实施例中,根据各个空闲块的VPC,以第一阈值为界对各个空闲块进行分组,将各个空闲块的VPC的值与第一阈值的大小比较,如果该空闲块的VPC的值小于或等于该第一阈值,则将其确定在第一空闲块组,其余的空闲块则确定在第二空闲块组。
图3是本发明实施例提供的基于主机顺序写场景的档位划分方法示意图。参见图3,该档位划分方法示意图的横轴表示档位数,纵轴表示有效页计数VPC。可选地,在该档位划分方法示意图中,可将第一阈值确定为1000,将各个空闲块的VPC值与1000作比较,如果该空闲块的VPC的值小于或等于1000,则将其确定在第一空闲块组,其余的空闲块则确定在第二空闲块组。
203、根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与该第一档位数范围中的档位数的增长速度呈正相关关系。
其中,第一档位数范围可以根据存储系统的计算能力设置,在此不作限定。第一预设速度用来衡量档位数的增长速度的快慢,该第一预设速度可根据具体情况以及相关经验确定。
随着第一空闲块组中块VPC的递增,以逐步递增的档位数对第一空闲块组进行划分,该第一空闲块组中的空闲块VPC的增长越快,用于划分的档位数的增长速度越快。由于第一空闲块组中的块数相对较少,因此,可以对该较少的块数做较细的划分,使得划分得到的每个档位的块数较少。
依据图3所示的示例中对第一阈值的确定,该第一档位数范围可以为0~23,当然该数值范围还可以取窄于或宽于0~23的数值范围,在此不再赘述。
204、根据第二档位数范围中的档位数对该第二空闲块组进行档位划分,该第二档位数范围中的档位数的增长速度小于该第一预设速度,且第二空闲块组中的空闲块VPC的增长与该第二档位数范围中的档位数的增长速度呈负相关关系。
随着第二空闲块组中块VPC的递增,以逐步递增的档位对第二空闲块组进行划分,该第二空闲块组中空闲块的VPC增长越快,用于划分的档位数的增长速度越慢。由于第二空闲块组中的块数相对较多,因此,可以对该较多的块数做较粗的划分,使得划分得到的每个档位的块数较多。
依据图3所示的示例中对第一阈值的确定,该第二档位数范围可以为23~33,当然该数值范围还可以取窄于或宽于23~33的数值范围,在此不再赘述。
可选地,在本发明提供的另一实施例中,该第二空闲块组进行档位划分还可以依据固定档位进行,即该步骤204可以用以下步骤替换:根据固定档位对第二空闲块组中的空闲块进行档位划分。
在本发明实施例中,在对第一空闲块组和第二空闲块组进行档位划分时,是步骤203和204的一前一后的顺序进行说明的,事实上,在本发明提供的其他实施例中,在对第一空闲块组和第二空闲块组进行档位划分时,可以同时进行,也可以按另一前后顺序进行,本发明对此不作限定。
205、按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
按照步骤201-204对空闲块组的档位划分,从第一空闲块组和第二空闲块组中确定VPC最小的空闲块,将该确定的空闲块上的有效数据复制到其他空白区域并保存,丢弃该VPC最小的空闲块上的废弃数据,从而实现对该空闲块的GC。
本实施例提供的方法,对空闲块进行非线性分档,避免了线性分档的大多数块集中于某一个档位所导致的GC进行困难的问题,同时避免了当VPC发生变化时所导致的频繁链表操作,在不增加计算开销的情况下,减小了GC的延迟,降低了计算开销。进一步地,上述实施例可以应用于存储系统主机顺序写场景下,在该场景中,会出现较多的VPC较小的块,通过把VPC小的部分分档更细致,可以提升GC效率,减少GC出来的数据所占用的空间与IO数据的比例,即写放大系数。
上述图2所示实施例是对主机顺序写场景下进行介绍,而对于主机随机写的场景,VPC会在一个集中的区域正态分布,而VPC较小的块出现的不多,为了提高GC效率,减少写方法系数,可以把VPC小的和VPC集中的这两部分分档更细致。
图4是本发明实施例提供的一种垃圾回收方法流程图,参见图4,该方法具体包括:
401、获取各个空闲块的有效页计数VPC。
402、根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于该第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块。
403、根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与该第一档位数范围中的档位数的增长速度呈正相关关系。
该步骤401-403与步骤201-203同理,在此不再赘述。
需要说明的是,由于该随机写场景下,VPC较小的块较少,因此,步骤403进行档位划分时所使用的第一档位数范围和第一阈值可以与步骤203中的第一档位数范围和第一阈值不同。
404、根据第二档位数范围中的档位数对该第二空闲块组进行档位划分,该第二档位数范围中的档位数的增长速度小于该第一预设速度,且第二空闲块组中的空闲块VPC的增长与该第二档位数范围中的档位数的增长速度呈负相关关系。
该步骤404与步骤204同理,在此不再赘述。
需要说明的是,与步骤403同理,该步骤404进行档位划分所使用的第二档位数范围和第一阈值可以与步骤204中的第二档位数范围和第一阈值不同。
与步骤203和204同理,本发明实施例对第一空闲块组和第二空闲块组的分档顺序不作限定。
405、根据该第二空闲块组中各个空闲块的VPC,确定第三空闲块组,该第三空闲块组包括该第二空闲块组中多个VPC属于指定数值范围的空闲块。
在本发明实施例中,指定数值范围用于将一定数值范围内的VPC的块集中在一组,该指定数值范围可以根据具体情况而确定,可选地,该指定数值范围可以为19000~21000。当然,在本发明提供的其他实施例中,还可以通过其他方式对该指定数值范围进行确定,在此不作限定。
在本发明实施例中,根据指定的VPC数值范围确定第三空闲块组,将第二空闲块组中各个空闲块的VPC的值与该指定数值范围进行对比,如果该空闲块的VPC的值在该指定数值范围内,则将其确定在第三空闲块组。又或者,当确定第二空闲块组中有多个块的VPC值之间差值小于一预设数值时,将该多个块确定为第三空闲块组。
图5是本发明实施例提供的基于主机随机写场景的档位划分方法示意图。参见图5,该档位划分方法示意图的横轴表示档位数,纵轴表示有效页计数VPC。可选地,在该档位划分方法示意图中,可将指定数值范围确定为19000~21000,将各个空闲块的VPC值与19000~21000进行对比,如果该空闲块的VPC的值在19000~21000范围内,则将其确定在第三空闲块组。
406、根据第三档位数范围中的档位数对该第三空闲块组进行档位划分。该第三档位数范围中的档位数的增长速度大于该第一预设速度,且第三空闲块组中的空闲块VPC的增长与该第三档位数范围中的档位数的增长速度呈正相关关系。
其中,第三档位数范围可以根据存储系统的计算能力设置,在此不作限定。第一预设速度用来衡量档位数的增长速度的快慢,该第一预设速度可以与步骤403中的第一预设速度不同。
随着第三空闲块组中块VPC的递增,以逐步递增的档位数对第三空闲块组进行划分,随着该第三空闲块组中的空闲块VPC的增长,用于划分的档位数的增长速度越快。由于第三空闲块组中的块的VPC较为集中,因此,可以对该VPC较集中的块的档位做较细的划分,使得划分得到的每个档位的块数较少。
依据图5所示的示例中对指定数值范围的确定,该第三档位数范围可以为21~29,当然该数值范围还可以取窄于或宽于21~29的数值范围,在此不再赘述。
407、根据该第二空闲块组中各个空闲块的VPC,确定第四空闲块组,该第四空闲块组包括该第二空闲块组中除该第三空闲块组以外的空闲块。
该步骤407与步骤405同理,在此不作赘述。
需要说明的是,该第四空闲块组是步骤405中确定的第三空闲块组以外的空闲块组。
408、根据第四档位数范围中的档位数对该第四空闲块组进行档位划分,该第四档位数范围中的档位数的增长速度小于该第一预设速度,且第四空闲块组中的空闲块VPC的增长与该第四档位数范围中的档位数的增长速度呈负相关关系。
该步骤408与步骤404同理,在此不作赘述。
在本发明实施例中,在对第三空闲块组和第四空闲块组进行档位划分时,是以步骤406-408的前后顺序进行说明的,事实上,在本发明提供的其他实施例中,在对第三空闲块组和第四空闲块组进行档位划分时,可以同时进行,也可以按另一前后顺序进行,本发明对此不作限定。
409、按照划分后的档位,从该第一、第三、第四空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
该步骤409与步骤205同理,这里不再赘述。
本实施例提供的方法,对空闲块进行非线性分档,避免了线性分档的大多数块集中于某一个档位所导致的GC进行困难的问题,同时避免了当VPC发生变化时所导致的频繁链表操作,在不增加计算开销的情况下,减小了GC的延迟,降低了计算开销。进一步地,上述实施例可以应用于存储系统主机随机写场景下,在该场景中,VPC会在一个集中的区域按正态分布,通过把VPC小的和VPC集中的这两部分分档更细致,可以提升GC效率,减少写放大系数。
在本发明所提供的实施例中,根据不同的业务场景,采取不同的分档方法对空闲块组进行分档,调整了GC的分档排序算法,在不增加计算开销。的情况下提升GC效率,减小写放大系数。
图6是本发明实施例提供的一种垃圾回收装置结构示意图,参见图6,该装置具体包括:获取模块601、第一确定模块602、第一档位划分模块603、垃圾回收模块604。
获取模块601用于获取各个空闲块的有效页计数VPC;该获取模块601与第一确定模块602相连,该第一确定模块602用于根据该各个空闲块的VPC,确定第一空闲块组和第二空闲块组,该第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,该第二空闲块组包括该第一空闲块组以外的空闲块;该第一确定模块602与第一档位划分模块603相连,该第一档位划分模块603用于根据第一档位数范围中的档位数对该第一空闲块组进行档位划分,该第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与该第一档位数范围中的档位数的增长速度呈正相关关系;该第一档位划分模块603与垃圾回收模块604相连,该垃圾回收模块604用于按照划分后的档位,从该第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
可选地,所述装置还包括:
第二档位划分模块,用于根据第二档位数范围中的档位数对该第二空闲块组进行档位划分,该第二档位数范围中的档位数的增长速度小于该第一预设速度,且第二空闲块组中的空闲块VPC的增长与该第二档位数范围中的档位数的增长速度呈负相关关系。
可选地,所述装置还包括:
第二确定模块,用于根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,该第三空闲块组包括该第二空闲块组中多个VPC属于指定数值范围的空闲块。
进一步地,所述第二确定模块还包括:
第三档位划分模块,用于根据第三档位数范围中的档位数对该第三空闲块组进行档位划分,该第三档位数范围中的档位数的增长速度大于该第一预设速度,且第三空闲块组中的空闲块VPC的增长与该第三档位数范围中的档位数的增长速度呈正相关关系。
可选地,所述装置还包括:
第三确定模块,用于根据该第二空闲块组中各个空闲块的VPC,确定第四空闲块组,该第四空闲块组包括该第二空闲块组中除该第三空闲块组以外的空闲块。
进一步地,所述第三确定模块还包括:
第四档位划分模块,根据第四档位数范围中的档位数对该第四空闲块组进行档位划分,该第四档位数范围中的档位数的增长速度小于该第一预设速度,且第四空闲块组中的空闲块VPC的增长与该第四档位数范围中的档位数的增长速度呈负相关关系。
可选地,所述垃圾回收模块还用于从该第一、第三、第四空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
需要说明的是:上述实施例提供的垃圾回收装置在垃圾回收时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的垃圾回收方法和装置实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种垃圾回收装置。该垃圾回收装置包括处理器和存储器,其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:
获取各个空闲块的有效页计数VPC;
根据所述各个空闲块的VPC,确定第一空闲块组和第二空闲块组,所述第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,所述第二空闲块组包括所述第一空闲块组以外的空闲块;
根据第一档位数范围中的档位数对所述第一空闲块组进行档位划分,所述第一档位数范围中的档位数的增长速度大于第一预设速度,且第一空闲块组中的空闲块VPC的增长与所述第一档位数范围中的档位数的增长速度呈正相关关系;
按照划分后的档位,从所述第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
该程序代码还用于执行以下操作:
根据第二档位数范围中的档位数对所述第二空闲块组进行档位划分,所述第二档位数范围中的档位数的增长速度小于所述第一预设速度,且第二空闲块组中的空闲块VPC的增长与所述第二档位数范围中的档位数的增长速度呈负相关关系。
该程序代码还用于执行以下操作:
根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,所述第三空闲块组包括所述第二空闲块组中多个VPC属于指定数值范围的空闲块,根据第三档位数范围中的档位数对所述第三空闲块组进行档位划分,所述第三档位数范围中的档位数的增长速度大于所述第一预设速度,且第三空闲块组中的空闲块VPC的增长与所述第三档位数范围中的档位数的增长速度呈正相关关系。
该程序代码还用于执行以下操作:
根据所述第二空闲块组中各个空闲块的VPC,确定第四空闲块组,所述第四空闲块组包括所述第二空闲块组中除所述第三空闲块组以外的空闲块;
根据第四档位数范围中的档位数对所述第四空闲块组进行档位划分,所述第四档位数范围中的档位数的增长速度小于所述第一预设速度,且第四空闲块组中的空闲块VPC的增长与所述第四档位数范围中的档位数的增长速度呈负相关关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种垃圾回收方法,其特征在于,所述方法包括:
获取各个空闲块的有效页计数VPC;
根据所述各个空闲块的VPC,确定第一空闲块组和第二空闲块组,所述第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,所述第二空闲块组包括所述第一空闲块组以外的空闲块;
根据第一档位数范围中的档位数对所述第一空闲块组进行档位划分,所述第一档位数范围中的档位数随着所述第一空闲块组中的空闲块的VPC的增长而增长,且所述第一档位数范围中的档位数随所述第一空闲块组中的空闲块的VPC增长的增长速度大于第一预设速度;
按照划分后的档位,从所述第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据第二档位数范围中的档位数对所述第二空闲块组进行档位划分,所述第二档位数范围中的档位数随着所述第二空闲块组中的空闲块的VPC的增长而增长,且所述第二档位数范围中的档位数随所述第二空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,所述第三空闲块组包括所述第二空闲块组中多个VPC属于指定数值范围的空闲块,根据第三档位数范围中的档位数对所述第三空闲块组进行档位划分,所述第三档位数范围中的档位数随着所述第三空闲块组中的空闲块的VPC的增长而增长,且所述第三档位数范围中的档位数随所述第三空闲块组中的空闲块的VPC增长的增长速度大于所述第一预设速度。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据所述第二空闲块组中各个空闲块的VPC,确定第四空闲块组,所述第四空闲块组包括所述第二空闲块组中除所述第三空闲块组以外的空闲块;
根据第四档位数范围中的档位数对所述第四空闲块组进行档位划分,所述第四档位数范围中的档位数随着所述第四空闲块组中的空闲块的VPC的增长而增长,且所述第四档位数范围中的档位数随所述第四空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
5.一种垃圾回收装置,其特征在于,所述装置包括:
获取模块,用于获取各个空闲块的有效页计数VPC;
第一确定模块,用于根据所述各个空闲块的VPC,确定第一空闲块组和第二空闲块组,所述第一空闲块组包括多个VPC小于或等于第一阈值的空闲块,所述第二空闲块组包括所述第一空闲块组以外的空闲块;
第一档位划分模块,用于根据第一档位数范围中的档位数对所述第一空闲块组进行档位划分,所述第一档位数范围中的档位数随着所述第一空闲块组中的空闲块的VPC的增长而增长,且所述第一档位数范围中的档位数随所述第一空闲块组中的空闲块的VPC增长的增长速度大于第一预设速度;
垃圾回收模块,用于按照划分后的档位,从所述第一空闲块组和第二空闲块组中确定指定空闲块,并对指定空闲块进行垃圾回收。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二档位划分模块,用于根据第二档位数范围中的档位数对所述第二空闲块组进行档位划分,所述第二档位数范围中的档位数随着所述第二空闲块组中的空闲块的VPC的增长而增长,且所述第二档位数范围中的档位数随所述第二空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于根据所述第二空闲块组中各个空闲块的VPC,确定第三空闲块组,所述第三空闲块组包括所述第二空闲块组中多个VPC属于指定数值范围的空闲块,根据第三档位数范围中的档位数对所述第三空闲块组进行档位划分,所述第三档位数范围中的档位数随着所述第三空闲块组中的空闲块的VPC的增长而增长,且所述第三档位数范围中的档位数随所述第三空闲块组中的空闲块的VPC增长的增长速度大于所述第一预设速度。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三确定模块,用于根据所述第二空闲块组中各个空闲块的VPC,确定第四空闲块组,所述第四空闲块组包括所述第二空闲块组中除所述第三空闲块组以外的空闲块;根据第四档位数范围中的档位数对所述第四空闲块组进行档位划分,所述第四档位数范围中的档位数随着所述第四空闲块组中的空闲块的VPC的增长而增长,且所述第四档位数范围中的档位数随所述第四空闲块组中的空闲块的VPC增长的增长速度小于所述第一预设速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410128648.7A CN103927263B (zh) | 2014-04-01 | 2014-04-01 | 垃圾回收方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410128648.7A CN103927263B (zh) | 2014-04-01 | 2014-04-01 | 垃圾回收方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927263A CN103927263A (zh) | 2014-07-16 |
CN103927263B true CN103927263B (zh) | 2017-02-15 |
Family
ID=51145488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410128648.7A Active CN103927263B (zh) | 2014-04-01 | 2014-04-01 | 垃圾回收方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927263B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102333361B1 (ko) * | 2015-11-23 | 2021-12-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN107025063B (zh) * | 2016-01-29 | 2020-04-14 | 深圳大心电子科技有限公司 | 内存管理方法、内存储存装置及内存控制电路单元 |
CN107797934B (zh) * | 2016-09-05 | 2022-07-22 | 北京忆恒创源科技股份有限公司 | 处理去分配命令的方法与存储设备 |
CN107797938B (zh) * | 2016-09-05 | 2022-07-22 | 北京忆恒创源科技股份有限公司 | 加快去分配命令处理的方法与存储设备 |
US10628306B2 (en) * | 2017-02-01 | 2020-04-21 | Microsoft Technology Licensing, Llc | Garbage collector |
CN109086219B (zh) * | 2017-06-14 | 2022-08-05 | 北京忆恒创源科技股份有限公司 | 去分配命令处理方法及其存储设备 |
CN107844432B (zh) * | 2017-11-22 | 2021-01-12 | 深圳忆联信息系统有限公司 | 一种固态硬盘动态垃圾回收的方法及固态硬盘 |
KR102659036B1 (ko) * | 2018-07-11 | 2024-04-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241471A (zh) * | 2006-11-03 | 2008-08-13 | 三星电子株式会社 | 快闪存储器系统及其垃圾收集方法 |
CN102243613A (zh) * | 2010-05-12 | 2011-11-16 | 西部数据技术公司 | 管理固态存储器中垃圾收集的系统和方法 |
CN103226517A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 对Nandflash的物理块按无效页数量进行动态排序的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130076429A (ko) * | 2011-12-28 | 2013-07-08 | 삼성전자주식회사 | 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치 |
-
2014
- 2014-04-01 CN CN201410128648.7A patent/CN103927263B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241471A (zh) * | 2006-11-03 | 2008-08-13 | 三星电子株式会社 | 快闪存储器系统及其垃圾收集方法 |
CN102243613A (zh) * | 2010-05-12 | 2011-11-16 | 西部数据技术公司 | 管理固态存储器中垃圾收集的系统和方法 |
CN103226517A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 对Nandflash的物理块按无效页数量进行动态排序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927263A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103927263B (zh) | 垃圾回收方法和装置 | |
CN105204781B (zh) | 压缩方法、装置和设备 | |
CN104102695B (zh) | 智能设备启动过程的数据处理方法及智能设备 | |
CN111813713B (zh) | 数据加速运算处理方法、装置及计算机可读存储介质 | |
WO2021073510A1 (zh) | 一种数据库的统计方法及装置 | |
KR20190100537A (ko) | 플래시 저장장치의 내부 병렬성을 이용하는 키 값 기반의 데이터 액세스 장치 및 방법 | |
US20120254173A1 (en) | Grouping data | |
CN109086141B (zh) | 内存管理方法和装置以及计算机可读存储介质 | |
CN111797096A (zh) | 基于ElasticSearch的数据索引方法、装置、计算机设备及存储介质 | |
CN102169491B (zh) | 一种多数据集中重复记录动态检测方法 | |
US10120860B2 (en) | Methods and apparatus to identify a count of n-grams appearing in a corpus | |
CN103034591A (zh) | 虚拟机内存共享方法及装置 | |
CN105353987A (zh) | 一种文件处理方法及装置 | |
WO2023143095A1 (en) | Method and system for data query | |
CN108536609B (zh) | 内存碎片管理系统及方法 | |
CN105493080A (zh) | 基于上下文感知的重复数据删除的方法和装置 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN103902592A (zh) | 基于MapReduce实现分析函数的方法及系统 | |
Chai et al. | Adaptive lower-level driven compaction to optimize LSM-tree key-value stores | |
CN106325812A (zh) | 一种针对乘累加运算的处理方法及装置 | |
CN107391508B (zh) | 数据加载方法和系统 | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
WO2021082928A1 (zh) | 数据缩减的方法、装置、计算设备和存储介质 | |
WO2019174206A1 (zh) | 一种存储设备的数据读取方法、装置、终端设备和存储介质 | |
CN106528703A (zh) | 一种重复删除的模式切换方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |