CN104090852A - 管理混合缓存的方法及设备 - Google Patents
管理混合缓存的方法及设备 Download PDFInfo
- Publication number
- CN104090852A CN104090852A CN201410315209.7A CN201410315209A CN104090852A CN 104090852 A CN104090852 A CN 104090852A CN 201410315209 A CN201410315209 A CN 201410315209A CN 104090852 A CN104090852 A CN 104090852A
- Authority
- CN
- China
- Prior art keywords
- queue
- data block
- length
- subqueue
- ram
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 230000007774 longterm Effects 0.000 claims abstract description 25
- 239000007787 solid Substances 0.000 claims abstract description 10
- 230000008859 change Effects 0.000 claims description 18
- 206010008190 Cerebrovascular accident Diseases 0.000 claims description 8
- 208000006011 Stroke Diseases 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 8
- 210000000056 organ Anatomy 0.000 claims description 8
- 230000008030 elimination Effects 0.000 abstract description 7
- 238000003379 elimination reaction Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 21
- 238000003860 storage Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000032683 aging Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种管理混合缓存的方法,其中,混合缓存包括随机存储器RAM和固态存储器SSD,方法包括:生成第二队列以及第三队列,其中,第二队列用于管理RAM中热的干净数据块;第三队列用于管理RAM中脏数据块;第二队列和第三队列的长度之和不变;第二队列的淘汰概率高于第三队列的淘汰概率,第二队列的长度随着对第二队列执行的淘汰操作动态变化,第三队列的长度随着对第三队列执行的淘汰操作动态变化;确定从第二队列或第三队列淘汰的数据块的访问次数是否超过访问次数阈值;如果是,即判定该数据块为长期热数据块,利用第五队列管理淘汰的数据块,并将淘汰的数据块写入SSD,第五队列用于管理SSD中的数据块。
Description
技术领域
本发明涉及信息技术领域,并且具体地,涉及管理混合缓存的方法及设备。
背景技术
目前为了改进磁盘***的输入/输出(Input/Output,I/O)性能,如缩短请求响应时间、提高吞吐率等等,在大多数存储***中都在磁盘***的上层采用了缓存技术。
例如,从存储结构上来讲,一种典型结构是“随机存取存储器(RandomAccess Memory,RAM)+廉价冗余磁盘阵列(Redundant Arrays of InexpensiveDisks,RAID)”型,其中只有RAM作为RAID的缓存。这种缓存器件由一种介质构成,称为单质缓存。
最近,由于固态存储器(Solid State Disk,SSD)的普遍应用,人们提出了一种三级存储结构——“RAM+SSD+RAID”,其中RAM和SSD共同作为RAID的缓存。由于RAM和SSD是两种不同的介质,故称为混合缓存。可以根据一定的算法原则,在RAM、SSD、RAID三种存储器件之间调度数据,一般地做法是将RAID中认为有价值的数据副本,缓存在RAM或SSD中,以快速响应应用的请求。
相对于典型的以RAM为缓存的单质缓存结构,为了在混合缓存结构中更好地发挥SSD的作用,出现了考虑SSD特性的新缓存算法。例如,以SSD的随机I/O性能较好为着眼点的算法。比如,基于温度感知的缓存算法(Temperature Aware Caching,TAC)。具体而言,在TAC算法中,按照磁盘地址空间划分成多个区域(region),每个区域含32个4KB的页。每个区域有一个温度。当上层I/O请求到达时,如果该I/O请求涉及的页是随机访问类型的,则给其所属的区域的温度加上一个常量C0;如果该I/O请求涉及的页是顺序访问类型的,则给其所属的区域的温度加上另一常量C1。C0大于C1。如果某个区域的温度超过SSD中所有区域的最低温度,则该区域可以替换SSD中最低温度的区域,从而进入SSD中。对于RAM而言,常采用最近最少使用(Least Recently Used,LRU)算法。因此,从RAM淘汰的干净页和脏页进入SSD的机会是均等的。对于随机访问的脏页,根据TAC算法需要写回SSD中,而写请求会给SSD带来损耗,影响SSD的性能和寿命。而且,SSD响应写请求的速度比响应读请求的速度慢若干个数量级。同时,这样的缓存算法也会导致缓存访问次数较少的数据块,从而使得缓存命中率降低。
发明内容
本发明实施例提供一种管理混合缓存的方法及装置,用于解决现有技术中的缓存命中率低的问题。
第一方面,本发明实施例提供了一种管理混合缓存的方法,所述混合缓存包括随机存储器RAM和固态存储器SSD,所述RAM和所述SSD共同作为由一个或多个磁盘构成的磁盘***的缓存;
所述方法包括:
生成第二队列以及第三队列,其中,所述第二队列用于管理所述RAM中热的干净数据块,所述热的干净数据块通过所述第二队列被找到;所述第三队列用于管理所述RAM中脏数据块,所述脏数据块通过所述第三队列被找到;所述第二队列和所述第三队列的长度之和不变;
当新数据块需要由所述第二队列或所述第三队列管理,并且所述RAM的空闲空间不足以存放所述新数据块时,对所述第二队列或所述第三队列执行淘汰操作,其中所述第二队列的淘汰概率高于所述第三队列的淘汰概率,所述第二队列的长度随着对所述第二队列执行的淘汰操作动态变化,所述第三队列的长度随着对所述第三队列执行的淘汰操作动态变化;
确定从所述第二队列或所述第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
如果所述淘汰的数据块的访问次数超过所述访问次数阈值,即判定该数据块为长期热数据块,利用第五队列管理所述淘汰的数据块,并将所述淘汰的数据块写入所述SSD,所述第五队列用于管理所述SSD中的数据块。
在第一方面的第一种可能的实现方式中,所述磁盘***包括多个磁盘,所述磁盘***为廉价冗余磁盘阵列RAID,所述RAID包括多个条带,一个条带对应一个数据块;
所述第三队列包括(n+1)个子队列,所述第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,所述SF值为条带中已读入所述RAM中的条带单元的大小与所述条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
所述(n+1)子队列中的第n子队列用于管理进入所述RAM的新的脏数据块;所述(n+1)个子队列中除所述第n子队列之外的其它子队列分别用于管理所述RAM中热的脏数据块;
当有读请求或写请求访问到所述第三队列管理的数据块时,根据该请求的特征更新该数据块的SF值,并根据新的SF值将该数据块移动到对应的子队列;
在对所述第三队列执行淘汰操作时,按照SF值从大到小的顺序对所述(n+1)个子队列执行淘汰操作。
结合第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述对所述第二队列或所述第三队列执行淘汰操作包括:
如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作;
如果所述第三队列的长度小于或等于第二长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值且所述第二队列的长度大于或等于第三长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作;
其中,所述第一长度阈值用于表示所述第二队列的最小长度的参考值;
所述第二长度阈值用于表示所述第三队列的最小长度的参考值;
所述第三长度阈值与第一历史队列的命中次数正相关,与所述第二历史队列的命中次数负相关,所述第一历史队列用于管理从所述第二队列淘汰的数据块,所述第二历史队列用于管理从所述第三队列淘汰的数据块;
所述第四长度阈值用于表示所述第n子队列的最大长度的参考值。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,所述如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作,包括:
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第三队列中的第n子队列的长度大于或等于所述第四长度阈值,则对所述第n子队列执行淘汰操作。
结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,所述如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作,包括:
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第三队列中第n子队列的长度大于所述第二长度阈值的情况下,则对所述第n子队列执行淘汰操作;
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第n子队列的长度小于或等于所述第二长度阈值的情况下,则对所述第(n-1)子队列执行淘汰操作。
结合第一方面第一到第四种中任意一种可能的实现方式,在第五种可能的实现方式中,当第一队列、第四队列或所述第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由所述第二队列管理,所述第一队列用于管理进入所述RAM的新的干净数据块,所述第四队列用于管理从所述RAM淘汰到所述RAID的数据块,所述第四队列管理的数据块的访问次数小于或等于所述访问次数阈值;
当所述第一队列、所述第二队列、所述第四队列或所述第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由所述第三队列中的第k子队列管理,k为所述写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
结合第一方面第五种可能的实现方式,在第六种可能的实现方式中,所述第一队列的长度是固定的,所述第一队列的长度是根据以下因素确定的:进入所述RAM的新的干净块在所述RAM中的预热时长,抗读请求扫描缓存。
结合第一方面,或者第一方面第一至第六种任意一种可能的实现方式,在第七种可能的实现方式中,在所述第五队列中,将数据块访问次数作为价值因子之一,来衡量所述第五队列所管理的数据块的价值;所述价值为将所述第五队列所管理的数据块从所述SSD淘汰到所述磁盘***的依据。
第二方面,本发明实施例提供了一种管理混合缓存的设备,所述混合缓存包括随机存储器RAM和固态存储器SSD,所述RAM和所述SSD共同作为由一个或多个磁盘构成的磁盘***的缓存;
所述设备包括:
生成单元,用于生成第二队列、第三队列以及第五队列,其中,所述第二队列用于管理所述RAM中热的干净数据块,所述热的干净数据块通过所述第二队列被找到;所述第三队列用于管理所述RAM中脏数据块,所述脏数据块通过所述第三队列被找到;所述第二队列和所述第三队列的长度之和不变;所述第五队列用于管理所述SSD中的数据块;
淘汰单元,当有新数据块需要由所述第二队列或所述第三队列管理,并且所述RAM的空闲空间不足以存放所述新数据块时,对所述生成单元生成的所述第二队列或所述第三队列执行淘汰操作,其中所述第二队列的淘汰概率高于所述第三队列的淘汰概率,所述第二队列的长度随着对所述第二队列执行的淘汰操作动态变化,所述第三队列的长度随着对所述第三队列执行的淘汰操作动态变化;
确定单元,用于确定所述淘汰单元在对所述第二队列或第二队列进行淘汰操作时,从所述第二队列或所述第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
写入单元,用于当所述确定单元确定淘汰的数据块的访问次数超过所述访问次数阈值,则利用所述第五队列管理所述淘汰的数据块,并将所述淘汰的数据块写入所述SSD,所述第五队列用于管理所述SSD中的数据块。
在第二方面的第一种可能的实现方式中,所述磁盘***包括多个磁盘,所述磁盘***为廉价冗余磁盘阵列RAID,所述RAID包括多个条带,一个条带对应一个数据块;
所述第三队列包括(n+1)个子队列,所述第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,所述SF值为条带中已读入所述RAM中的条带单元的大小与所述条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
所述(n+1)子队列中的第n子队列用于管理进入所述RAM的新的脏数据块;所述(n+1)个子队列中除所述第n子队列之外的其它子队列分别用于管理所述RAM中热的脏数据块;
所述淘汰单元具体用于:当有读请求或写请求访问到所述第三队列管理的数据块时,根据该请求的特征更新该数据块的SF值,并根据新的SF值将该数据块移动到对应的子队列;在对所述第三队列执行淘汰操作时,按照SF值从大到小的顺序对所述(n+1)个子队列执行淘汰操作。
结合第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述淘汰单元具体用于:
如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作;
如果所述第三队列的长度小于或等于第二长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值且所述第二队列的长度大于或等于第三长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作;
其中,所述第一长度阈值用于表示所述第二队列的最小长度的参考值;
所述第二长度阈值用于表示所述第三队列的最小长度的参考值;
所述第三长度阈值与第一历史队列的命中次数正相关,与所述第二历史队列的命中次数负相关,所述第一历史队列用于管理从所述第二队列淘汰的数据块,所述第二历史队列用于管理从所述第三队列淘汰的数据块;
所述第四长度阈值用于表示所述第n子队列的最大长度的参考值。
结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述淘汰单元在用于:
所述如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作时,具体用于:
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第三队列中的第n子队列的长度大于或等于所述第四长度阈值,则对所述第n子队列执行淘汰操作。
结合第二方面第二种可能的实现方式,在第四种可能的实现方式中,所述淘汰单元在用于:
所述如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作时,具体用于:
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第三队列中第n子队列的长度大于所述第二长度阈值的情况下,则对所述第n子队列执行淘汰操作;
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第n子队列的长度小于或等于所述第二长度阈值的情况下,则对所述第(n-1)子队列执行淘汰操作。
结合第二方面第一到第四种中任意一种可能的实现方式,在第五种可能的实现方式中,所述生成单元还用于生成第一队列以及第四队列,所述第一队列用于管理进入所述RAM的新的干净数据块,所述第四队列用于管理从所述RAM淘汰到所述RAID的数据块,所述第四队列管理的数据块的访问次数小于或等于所述访问次数阈值;
当第一队列、第四队列或所述第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由所述第二队列管理;
当所述第一队列、所述第二队列、所述第四队列或所述第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由所述第三队列中的第k子队列管理,k为所述写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
结合第二方面第五种可能的实现方式,在第六种可能的实现方式中,所述第一队列的长度是固定的,所述第一队列的长度是根据以下因素确定的:进入所述RAM的新的干净块在所述RAM中的缓存时长,抗读请求扫描缓存。
结合第二方面,或者第二方面第一至第六种任意一种可能的实现方式,在第七种可能的实现方式中,在所述第五队列中,将数据块访问次数作为价值因子之一,来衡量所述第五队列所管理的数据块的价值;所述价值为将所述第五队列所管理的数据块从所述SSD淘汰到所述磁盘***的依据。
本发明实施例中,在RAM的淘汰策略中,考虑给第三队列中热的脏数据块更多的被缓存下来的机会,尽可能地淘汰第一队列或第二队列管理的干净数据块;其中用于第三队列的根据SF值淘汰的策略,体现了尽可能淘汰“占用缓存空间大、访问次数少”的脏数据块。这样一来,一方面尽可能减少对SSD频繁写操作,另一方面尽可能将较大的数据块写回RAID或SSD,能减少写请求的开销。最后,从整体上来看,RAM只用于缓存较近期的热数据,从RAM淘汰的数据中筛选出访问次数较大的数据,移动到SSD中,而访问次数较小的数据,则回到RAID,即SSD只用于缓存较长期的热数据,RAID用于保存冷数据,这种做法很好地利用了RAM和SSD的容量上差异,使得热数据分布更加合理,从而有利于提高命中率、缩短I/O请求响应时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是可应用本发明实施例的架构的示意图;
图2是本发明实施例一的流程图;
图3是本发明实施例二的管理混合缓存的方法的示意性流程图;
图4是本发明实施例二的多条队列管理数据块的过程的示意图;
图5是本发明实施例二的第一队列的管理过程的示意图;
图6是本发明实施例二的第二队列的管理过程的示意图;
图7是本发明实施例二的第二队列的动态调整过程的示意图;
图8是本发明实施例二的第三队列的管理过程的示意图;
图9是本发明实施例二的第三队列的一个例子的示意图;
图10是本发明实施例二的第三队列的老化策略的例子的示意图;
图11是本发明实施例二的第四队列的管理过程的示意图;
图12是本发明实施例二的第五队列的一个例子的示意图;
图13是本发明实施例二的管理混合缓存的方法中响应读请求过程的示意性流程图;
图14是本发明实施例二的管理混合缓存的方法中响应写请求过程的示意性流程图;
图15是本发明实施例二的第二队列和第三队列的淘汰过程的示意性流程图;
图16为本发明实施例三的结构示意图;
图17为本发明实施例四的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明实施例可以应用于传统块存储***或分布块存储***的混合缓存管理***中。
实施例一
图1是可应用本发明实施例一的架构的示意图。
如图1所示,在该架构中,存储***包括RAM110、SSD120以及磁盘***,其中,磁盘***为了保证性能及可靠性,一般都会组成RAID(当然,如果不考虑上述优点,也可不构建RAID),本实施例在图中用RAID130表示。RAM110和SSD120共同构建成RAID130的混合缓存。
图1中,缓存管理模块140可以对混合缓存和RAID130进行管理。缓存管理模块为在逻辑上进行划分的一个模块,其实现上有多种形式。例如,缓存管理模块可以是运行于主机上的软件模块,用于管理与主机直接相联(Direct Attached)或通过网络(如Storage Attached Network)相联的存储设备,包括图中所示RAM以及SSD、磁盘设备。缓存管理模块还可以是运行于RAID控制器中的基于CPU或FPGA或其他硬件实现的软件模块和/或硬件模块,用于管理与RAID控制器相联的RAM设备、磁盘设备、SSD设备。
可以接收应用层150的I/O请求,基于混合缓存和RAID130,对应用层150的I/O请求进行处理。
本发明实施例提供的一种管理混合缓存的方法包括:
S1、生成第二队列以及第三队列,其中,第二队列用于管理RAM中热的干净数据块,热的干净数据块通过第二队列被找到;第三队列用于管理RAM中脏数据块,脏数据块通过第三队被找到;第二队列和第三队列的长度之和不变;
本步骤中的“队列”中的数据可认为是管理数据块的元数据的队列,用于记录真正的数据块的有关信息,队列的实现及含义都跟缓存管理领域中的“队列”含义保持一致,前面加上“第二”、“第三”等术语仅用于区别不同的队列,这些队列的结构及功能都相同。本步骤中的“热”、“冷”、“干净”、“脏”、等术语都为缓存管理领域技术人员所公知的术语,因此,这里不再详细解释。
此外,本领域技术人员能够理解,第二队列管理的“RAM中热的干净数据块”是短期的,第三队列管理的“RAM中脏数据块”也是短期的。这里的“短期”的概念是相对于“长期”而言的。由于RAM容量较小,它仅拥有较小时间窗口来记录数据块被访问的情况,即只能缓存近期可能被访问的数据块;而SSD容量较大,拥有较长的时间窗口,可用来缓存较远的未来可能被访问的数据块,这种数据分布方法较为合理地利用了RAM和SSD在容量上的差异。为方便表述,本发明称在RAM中的数据块为短期数据块,在SSD中数据块为长期数据块。
S2、当新数据块需要由第二队列或第三队列管理,并且RAM的空闲空间不足以存放新数据块时,对第二队列或第三队列执行淘汰操作,其中第二队列的淘汰概率高于第三队列的淘汰概率,第二队列的长度随着对第二队列执行的淘汰操作动态变化,第三队列的长度随着对第三队列执行的淘汰操作动态变化;
本步骤中的“淘汰”的概念跟现有缓存管理中“淘汰”的概念也相同,即缓存满了的时候,“淘汰”掉一部分缓存中的数据以腾出空间给新的需要缓存的数据。其中,“第二队列的淘汰概率”完整的说法为“对第二队列管理的存储介质中的数据进行淘汰的概率”,但为了方便,本领域技术人员一般都使用“第二队列的淘汰概率”,因此,为了说明方便,本实施例以及以下各实施例中,并不对上述术语进行严格区分,可以认为,对第二队列进行淘汰就是对第二队列管理的存储介质中的数据进行淘汰,即对RAM中的RAM中短期的热的干净数据块进行淘汰。
S3、确定从第二队列或第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
S4、如果淘汰的数据块的访问次数超过访问次数阈值,则利用第五队列管理淘汰的数据块,并将淘汰的数据块写入SSD,第五队列用于管理SSD中的数据块。
本发明实施例中,在RAM的淘汰策略中,优先对用于管理短期的热的干净数据块的第二队列执行淘汰操作(即第二队列的淘汰概率要高于第二队列的淘汰概率),使得给脏数据块更多地被RAM缓存的机会,而不需要频繁地将脏数据块写回SSD,从而能够降低SSD的写损耗,提升SSD的响应速度。同时,从RAM淘汰的且访问次数超过次数阈值的数据块由第五队列管理,也就是说该淘汰数据块进入SSD,使得能够为RAM腾出更多的空间缓存更有价值的数据块,因此能够有效提高缓存命中率。
在一种优选的实施方式中,磁盘***包括多个磁盘,磁盘***为廉价冗余磁盘阵列RAID,RAID包括多个条带,一个条带对应一个数据块;
此时,第三队列可以包括(n+1)个子队列,第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,SF值为条带中已读入RAM中的条带单元的大小与条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
(n+1)子队列中的第n子队列用于管理进入RAM的新的脏数据块;(n+1)个子队列中除第n子队列之外的其它子队列分别用于管理RAM中短期的热的脏数据块;
在对第三队列执行淘汰操作时,按照SF值从大到小的顺序对(n+1)个子队列执行淘汰操作。
采用这种根据SF值淘汰的方法,能尽可能淘汰那些“占用空间较大、访问次数较少”的脏数据块,一方面能为RAM腾出较大块的缓存空间、淘汰那些近期访问次数较少的数据块,使得RAM缓存更近期的、更热的数据块,因而有利于提高命中率;另一方面,由于RAID和SSD在处理较小的写请求方面开销较大,该方法能减少对RAID和SSD频繁地小写,一定程度上能够削减访问RAID和SSD带来的开销。
本实施例中,对第二队列或第三队列执行淘汰操作包括:
如果第二队列的长度小于或等于第一长度阈值,则对第三队列执行淘汰操作;
如果第三队列的长度小于或等于第二长度阈值,则对第二队列执行淘汰操作;
如果第二队列的长度大于第一长度阈值且第二队列的长度大于或等于第三长度阈值,则对第二队列执行淘汰操作;
如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第n子队列的长度大于或等于第四长度阈值,则对第三队列执行淘汰操作;
其中,第一长度阈值用于表示第二队列的最小长度的参考值;
第二长度阈值用于表示第三队列的最小长度的参考值;
第三长度阈值与第一历史队列的命中次数正相关,与第二历史队列的命中次数负相关,第一历史队列用于管理从第二队列淘汰的数据块,第二历史队列用于管理从第三队列淘汰的数据块;
第四长度阈值用于表示第n子队列的最大长度的参考值。
应用上述四条淘汰规则,从整体上来说,使得从RAM淘汰干净块的概率大于脏块,给脏块更多的机会被RAM缓存,减少淘汰脏块的操作频率,有助于削减写RAM和SSD的开销,延长SSD的使用寿命。详见下文。
本实施例中,如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第n子队列的长度大于或等于第四长度阈值,则对第三队列执行淘汰操作,包括:
如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第三队列中的第n子队列的长度大于或等于第四长度阈值,则对第n子队列执行淘汰操作。
这种做法能够使得第三队列的第n子队列抵抗写请求扫描缓存。具体来说,当有大量写请求产生大量的新的脏数据块时,且若此时RAM已满,为了避免这些新的脏数据块挤出RAM中已缓存的热数据块,上述规则通常能够保证这些新块最多不超过第四长度阈值,合理的第四长度阈值使得这种写请求扫描现象不会挤出过多的热数据块,有利于保证在此特殊情况下请求的命中率不会急剧下降。
另外,这种做法相比于传统的自适应淘汰算法(传统做法是当第二队列长度小于第三长度阈值就选择淘汰第三队列),加强了淘汰第三队列的条件。通常情况下,这样做带来的效果是淘汰第二队列的概率大于第三队列。而第三队列管理的都是脏块,因而脏的数据块有更多的机会被保留在RAM,减少写SSD和RAID的操作频率,使得脏数据块有更多的时间去承接应用层的写请求,当第三队列中的脏数据块变得足够大、足够冷时,再根据SF值淘汰规则淘汰之,而SF值淘汰规则又进一步有利于削减被淘汰的数据块写回SSD或RAID的开销。
本实施例中,如果第二队列的长度小于或等于第一长度阈值,则对第三队列执行淘汰操作,包括:
如果第二队列的长度小于或等于第一长度阈值,在第三队列中第n子队列的长度大于第二长度阈值的情况下,则对第n子队列执行淘汰操作;
如果第二队列的长度小于或等于第一长度阈值,在第n子队列的长度小于或等于第二长度阈值的情况下,则对第(n-1)子队列执行淘汰操作。
应用该规则能够避免第二队列长度过小,尽可能保证缓存中留存一定量的热的干净块。由于淘汰规则整体上使得第二队列淘汰的概率更大,在某些极端情况下(如写请求所访问数据集急剧增大的时候),第二队列长度可能被淘汰操作减少到0,此时若没有该规则的约束且根据优先淘汰第二队列的原则,读请求产生的热的干净块会立即被淘汰,其后果就是第二队列的长度长期在0和1之间跳变,即第二队列对访问模式的变化的响应特性很差。因此给第二队列设置一个最小长度阈值(即第一长度阈值),当该队列长度到达该长度阈值,则选择淘汰第三队列,这样至少能保证最低的读请求命中率。
本实施例中,当第一队列、第四队列或第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由第二队列管理,第一队列用于管理进入RAM的新的干净数据块,第四队列用于管理从RAM淘汰到RAID的数据块,第四队列管理的数据块的访问次数小于或等于访问次数阈值;
当第一队列、第二队列、第四队列或第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由第三队列中的第k子队列管理,k为写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
这种做法较好地利用了RAM容量较小但访问速度相对较快的特性,该做法构造了一种让冷数据块及长期热数据块,变成短期热数据块的机制,这样做能提高命中率。由于RAM容量较SSD小,为了规避RAM的这个限制,同时发挥RAM访问速度很快的特性,有必要让RAM缓存那些近期的热数据,即短期的热数据块。根据上述做法,第一队列、第四队列管理的均为冷数据块,第五队列管理的是长期热数据块,当这些数据块被再次访问到,根据程序局部性原理,可以预期它们在短期内还会被访问到,因而需要将它们转移到RAM,并由第二队列或第三队列接管。
本实施例中,第一队列的长度是固定的,第一队列的长度是根据以下因素确定的:进入RAM的新的干净块在RAM中的缓存时长,抗读请求扫描缓存。
这样使得第一队列起到预热干净块的作用,同时还能抵抗读请求扫描缓存。由于新的干净块都是先进入第一队列进行预热,而将该队列长度即成为新块预热的时间窗口,只有被再次访问才可以进一步进入第二或第三队列,这证明该块有可能成为有价值的热数据块;否则,就会其他新块挤出第一队列,从而从RAM中被淘汰,这证明该数据块没有价值。这种预热的作用有利于识别有价值的数据块,帮助提高缓存命中率。另外,当突发的大量读请求产生大量的这种低价值的干净块时,由于第一队列长度固定,这些块能够迅速流出RAM,从而避免过多地挤出其他队列所管理的数据块,即抗读请求扫描,有利于保证在此特殊情况下请求的命中率不会急剧下降。
本实施例中,在第五队列中,将数据块访问次数作为价值因子之一,来衡量第五队列所管理的数据块的价值;价值为将第五队列所管理的数据块从SSD淘汰到磁盘***的依据。
这种做法使得SSD中数据块的价值判定因素与RAM保持一致,即都必须考虑访问次数,避免管理RAM和SSD的算法缺少相关性,避免忽略了访问次数这个价值因子。相比于RAM和SSD分别采用独立的算法(如管理RAM的算法考虑I/O请求的时间局部性,而管理SSD的算法则进数据块的访问次数),采用一致价值因子,能尽量漏选有价值的数据块或误选没有价值的数据块,有利于提高缓存命中率。
实施例二
基于实施例一,本发明实施例通过一个具体的执行流程来对上述方案进行具体描述,具体包括如下步骤:
图3是根据本发明实施例的管理混合缓存的方法的示意性流程图。图3的方法由管理混合缓存的设备执行,例如可以是图1中所示的缓存管理模块140。
混合缓存包括RAM和SSD。RAM和SSD共同作为RAID的缓存。
210,接收应用层的当前I/O请求。
220,确定当前I/O请求的命中结果,命中结果用于指示I/O请求是否命中第一队列、第二队列、第三队列、第四队列和第五队列中之一,其中,第一队列用于记录RAM中的第一部分数据块的信息,第二队列用于记录RAM中的第二部分数据块的信息,第三队列用于记录RAM中第三部分数据块的信息,第四队列用于记录第四部分数据块的信息,第五队列用于记录第五部分数据块的信息,第三部分数据块为RAM中除第一部分数据块和第二部分数据块之外的数据块,第四部分数据块为从RAM淘汰到RAID中的数据块,第五部分数据块为SSD中的数据块并且是从RAM淘汰的。
230,根据命中结果,将当前I/O请求针对的当前数据块的信息***目标队列,目标队列为下列之一:第一队列、第二队列、第三队列。
240,在RAM中处理当前I/O请求。
本发明实施例中,通过确定当前I/O请求的命中结果,根据用于指示是否命中第一队列至第五队列之一的命中结果,将当前I/O请求针对的当前数据块的信息***第一队列、第二队列和第三队列中之一。第一队列、第二队列和第三队列用于管理RAM中的数据块,第四队列用于管理从RAM淘汰到RAID中的数据块,第五队列用于管理SSD中的数据块,而SSD中的数据块是从RAM中淘汰的数据块,可见,对于I/O请求产生的数据块,首先由第一队列、第二队列或第三队列进行管理,然后第一队列、第二队列、第三队列与第四队列和第五队列相互配合,为SSD筛选出准入的数据块,因此通过五条队列的管理模式,将RAM和SSD相结合,而不再是彼此独立,从而能够实现对RAM和SSD的协同管理,提高混合缓存性能。
本发明实施例中,数据块的信息可以包括数据块的元数据和/或数据块的存储地址信息。例如,存储地址信息可以为地址指针。对于第一队列、第二队列和第三队列中记录的数据块的信息可以包括元数据和地址指针,地址指针均指向RAM。第四队列中记录的数据块的信息可以包括元数据。第五队列中记录的数据块的信息可以包括元数据和地址指针,其中地址指针指向SSD。另外,上述元数据可以包括条带或数据块的访问次数、已被缓存的条带单元数、条带在RAID中的地址等。
应理解,本发明实施例中,RAM中的数据块由上述第一部分数据块、上述第二部分数据块和上述第三部分数据块组成。
可选地,作为一个实施例,第一部分数据块和第二部分数据块可以是由读I/O请求产生的,第二部分数据块的访问频率可以高于第一部分数据块的访问频率。第三部分数据块可以是由写I/O请求产生的。
具体而言,按照访问模式来分类,数据块可以分为干净块和脏块。具体地,读I/O请求所产生的数据块属于干净块,写I/O请求所产生的数据块属于脏块。按照数据块的热度来分类,数据块可以分为热数据块和冷数据块块。热度与访问频率相关。本发明实施例中,将访问模式和数据的热度相结合,可以将数据块分为四类:热的干净(Hot Clean,HC)块、热的脏(Hot Dirty,HD)块、冷的干净(Cold Clean,CC)块、冷的脏(Cold Dirty,CD)块四类。
因此,上述第一部分数据块可以为CC块,第二部分数据块可以为HC块。第三部分数据块为脏块,其中可以包括HD块或CD块。
对于热数据块而言,其进一步被分类为短期热数据块、长期热数据块。短期热数据块可以为最近的有限时间窗口内被访问的热数据,长期热数据块可以是距离现在相对较远的有限时间窗口内被访问的热数据。对于RAM和SSD而言,时间窗口长度最终表现为各自容量的大小。
第四部分数据块和第五部分数据块均是从RAM中淘汰的数据块。RAM中保留的一些数据块可以属于短期热数据块。第五部分数据块可以属于长期热数据块,而第四部分数据块可以冷数据块。可以理解的是,第五部分数据块实质上为热块,其中可以包括HC块或HD块。第四部分数据块实质上为冷块,可以包括CC块。
本实施例中,通过五个队列管理不同类型的数据块,对RAM和SSD能够更好地进行协同管理。此外,可以理解的是,通过第一队列、第二队列和第三队列与第四队列和第五队列相互配合,使得RAM可以保留短期热数据块,SSD可以保留长期热数据块,而RAID中存储冷数据块,这样,可以提高命中率。
此外,RAM容量远比SSD容量小,因此RAM中可以保留短期热数据块,SSD中可以保留长期热数据块,这种数据分布考虑到RAM和SSD各自的容量特点,因此可以数据异质性分布。这种数据分布能够有效提升混合缓存性能。
可选地,作为另一实施例,第二队列的长度与应用层的读I/O请求比例正相关,第三队列的长度与应用层的写I/O请求比例正相关。
具体地,第二队列的长度和第三队列的长度可以是变化的。第二队列的长度可以随着读I/O请求比例的增加而增加,第三队列的长度可以随着写I/O请求比例的增加而增加。可见,当过去一段时间读I/O请求较多时,第二队列可以记录更多的HC块的信息,也就是RAM可以保留更多的HC块。当过去一段时间写I/O请求较多时,第三队列可以记录更多的脏块的信息,也就是RAM可以保留更多的脏块。因此,本实施例中,第二队列的长度和第三队列的长度可以动态变化,适应读I/O请求和写I/O请求的比例变化,从而能够进一步提高命中率。
可选地,作为另一实施例,第二队列采用的策略、第三队列采用的策略和第五队列采用的策略可以均与访问频率相关。
如上所述,现有的SSD缓存算法和RAM缓存算法之间是相互独立的。例如,TAC算法考虑数据的温度和随机性,而LRU算法考虑数据块的时间局部性。由于两种算法建立在不同的概念上,从而对SSD和RAM无法协同管理,混合缓存性能低。本实施例中,由于第二队列、第三队列和第五队列三者采用的策略均与访问频率相关,因此通过相同的指标将RAM的缓存算法和SSD的缓存算法融合,能够更好地对SSD和RAM协同管理,提高混合缓存性能。
可选地,作为另一实施例,第二队列采用LRU策略,第五队列采用访问频率和多队列策略,第三队列采用条带频率(Strip Frequency,SF)值和多队列策略,SF值为条带所占空间与访问频率之间的比值。
可见,当第二队列、第三队列和第五队列互相配合时,均考虑了访问频率,因此,三者的算法建立在相同的概念上,从而能够更好地对SSD和RAM进行协同管理。
可选地,作为另一实施例,第三队列可以包括(n+1)个子队列,第三队列中的第i子队列中所记录的所有数据块对应的SF值均为i,第i子队列采用LRU策略,n为正整数且n≥1,i为取值从0至n的整数。
每个数据块都有对应的SF值。如果第三队列采用SF值策略,那么根据SF值将该数据块的信息***第三队列的对应位置,会在寻找位置过程中带来很大的时间开销。因此,第三队列可以包括多个子队列。假设一个条带(Stripe)中的条带单元(Stripe Unit)的数目为n,那么第三队列可以包括(n+1)个子队列。SF值的取值范围可以是[0,n]。每个子队列管理的数据块对应的SF值均是相同的。每个子队列可以采用LRU策略。
这样,对于第三队列而言,会优先淘汰占用空间大且访问频率低的数据块的信息,也就是说,会淘汰RAM中占用空间大且访问频率低的数据块,这样能够更好地合并小写I/O请求,同时访问频率高的数据块可以在RAM中保留更长的时间,从而提高命中率。而且,可以理解的是,第三队列采用的策略特点之一是尽可能缓存“频繁的、小的写I/O请求”,从而避免将这种写I/O请求直接导向SSD或RAID。
可选地,作为另一实施例,第一队列采用FIFO策略。实质上,第一队列可以起到预热的作用。第一队列管理访问频率较低的读I/O请求产生的数据块。当一个数据块被第一次读I/O请求访问时,该数据块的信息可以***第一队列的尾部。如果该数据块一直没有被再次访问,可以将按照FIFO策略被淘汰。
可选地,作为另一实施例,第四队列采用FIFO策略。第四队列的长度可以是固定的。第四队列管理从RAM中淘汰到RAID中的数据块。这样能够在RAM实际容量一定的情况下,等效地扩大其热点统计的时间窗口,从而有利于挖掘IO请求的时间局部性,提高命中率。
可选地,作为另一实施例,第一队列的长度是固定的。
抗缓存扫描是一种衡量缓存算法好坏的指标。大量的冷数据块进入缓存时,会逐个挤出已缓存的、经常访问的热数据,直到这种挤出效应遍历整个缓存空间,这种现象称为“缓存扫描”,它严重影响缓存命中率。
本实施例中,第一队列管理访问频率较低的读I/O请求产生的数据块。第一队列的长度是固定的,因此第一队列可以作为第二队列的屏障,能够防止读请求扫描。
此外,第三队列中的第n子队列管理SF值最高的数据块。也就是说,当某个数据块被第一次写I/O请求访问时,该数据块的信息会被***第n子队列。因此,第n子队列也可以起到预热的作用。同时,第n子队列可以作为第三队列中其它子队列的屏障,能够防止写扫描。因此,本实施例能够有效抵抗缓存扫描带来的影响,从而能够提高命中率。
可选地,作为另一实施例,第五队列可以包括至少一个子队列。具体地,各个子队列可以分别与不同的访问频率范围相对应。也就是说,每个子队列用于记录其对应的访问频率范围内的数据块的信息。每个子队列可以采用LRU策略。此外,各个子队列的活跃级别可以按照对应的访问频率确定。例如,对应的访问频率越小,该子队列的活跃级别越低。当需要对第五队列淘汰时,可以从活跃级别最低的子队列开始淘汰。
下面将描述基于上述描述的五个队列的配置,RAM和SSD各自的准入策略(AP,Admission Policy)和淘汰策略(EP,Eviction Policy)。AP是缓存管理算法的一部分,是针对存储器件而言的,即决定具备何种特征的数据能被准许进入该器件。EP是缓存管理算法的另一部分,也是针对存储器件而言的,即当该存储器已满而又有新的数据要进入时,它决定淘汰具备何种特征的旧数据,来为新数据腾出存储空间。
下面首先描述当前I/O请求为读请求时的混合缓存的管理过程。
可选地,作为另一实施例,当前I/O请求可以为读I/O请求。在步骤230中,如果当前I/O请求命中第一队列、第二队列、第四队列和第五队列中之一,则将当前数据块的信息***第二队列;如果当前I/O请求命中第三队列,则将当前数据块的信息***第三队列;如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列,则将当前数据块的信息***第一队列。
第二队列用于记录读I/O请求产生的访问频率较高的数据块的信息。如果当前I/O请求命中第一队列、第二队列、第四队列或第五队列,可以说明当前I/O请求针对的当前数据块是HC块,那么可以将当前数据块的信息***第二队列中。如果当前I/O请求命中第三队列,可以说明当前数据块曾经是脏块,可以将当前数据块的信息***第三队列。如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列中任何一个队列,可以说明当前数据块是第一次被读访问,可以将当前数据块的信息***第一队列。可见,通过将当前数据块的信息***相应的队列中,完成了对当前数据块的分类。
应理解,本发明实施例中,“***”队列也可以表示在该队列本身中改变该信息的位置。
可选地,作为另一实施例,如果当前I/O请求命中第一队列,可以将当前数据块的信息***第二队列的头部,并从第一队列中删除当前数据块的信息。如果当前I/O请求命中第二队列,可以将当前数据块的信息移动到第二队列的头部。
具体地,由于第二队列采用LRU策略。因此,可以将当前数据块的信息***第二队列的最近最常使用(Most Recently Used,MRU)端。
可选地,作为另一实施例,将当前数据块的信息***第三队列的具体过程可以如下:将当前数据块的信息***第三队列中的第j子队列,j为当前数据块对应的SF值,j为正整数且0≤j≤n-1。
具体地,如果当前I/O请求命中第三队列,可以计算当前数据块对应的SF值,假设当前数据块对应的SF值为j。那么,可以将当前数据块的信息***第j子队列的头部。
实际上,如果当前I/O请求命中第一队列、第二队列或第三队列,说明当前I/O请求命中RAM,说明当前数据块存储在RAM中。因此,可以将当前数据块的信息***相应的队列,而不需要移动数据块。
如果当前I/O请求命中第四队列,说明当前数据块存储在RAID中。如果当前I/O请求命中第五队列,说明当前数据块存储在SSD中。这种情况下,需要判断RAM是否有足够的空闲空间来存储当前数据块。如果RAM有足够的空闲空间,可以直接将当前数据块的信息***RAM对应的队列,并将当前数据块缓存至RAM中。如果RAM中没有足够的空间,就需要对RAM中的数据块进行淘汰,以便RAM有足够的空间来缓存当前数据块。具体而言,可以对第二队列或第三队列执行淘汰操作,并将相应的数据块从RAM中淘汰出去。
可选地,作为另一实施例,在步骤230中,如果当前I/O请求命中第四队列或第五队列,确定RAM中的空闲空间是否大于或等于当前数据块的尺寸。在确定RAM中的空闲空间大于或等于当前数据块的尺寸的情况下,将当前数据块的信息***第二队列。在确定RAM中的空闲空间小于当前数据块的尺寸的情况下,对第二队列或第三队列执行淘汰操作,并将当前数据块的信息***第二队列。
具体地,如果当前I/O请求命中第四队列,可以将当前数据块的信息***第二队列的头部,并从第四队列中删除当前数据块的信息。如果当前I/O请求命中第五队列,可以将当前数据块的信息***第二队列的头部,并从第五队列中删除当前数据块的信息。
可选地,作为另一实施例,如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列,在将当前数据块的信息***第一队列之后,可以将第一数据块的信息***第四队列,其中第一数据块的信息是从第一队列淘汰的。
第一队列可以管理访问频率较低的数据块。因此,从第一队列挤出去的数据块的信息无法进入第五队列,挤出去的数据块并非是长期热数据块,因此第一队列挤出去的数据块的信息可以***第四队列中。
下面将描述当前I/O请求为写I/O请求时的混合缓存的管理过程。
可选地,作为另一实施例,当前I/O请求可以为写I/O请求。在步骤230中,如果当前I/O请求命中第一队列、第三队列、第二队列、第四队列和第五队列中之一,则可以将当前数据块的信息***第三队列中的第k子队列,k为正整数且0≤k≤n-1,k为当前数据块对应的SF值;如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列,则可以将当前数据块的信息***第三队列中的第n子队列。
具体地,如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列,可以说明当前数据块是第一次被写访问,那么可以将当前数据块的信息***第n子队列。
如果当前I/O请求命中第一队列、第二队列、第三队列、第四队列和第五队列中任一个,可以说明当前数据块是HD块,那么可以计算当前数据块对应的SF值。假设计算得到的SF值为k,那么可以将当前数据块的信息***第k子队列。
如果当前I/O请求命中第一队列、第二队列或第三队列,可以说明当前I/O请求要更新的当前数据块存储在RAM中。这样,可以将当前数据块的信息***相应的队列后,直接对RAM中的数据块进行更新。
如果当前I/O请求命中第四队列,可以说明当前I/O请求要更新的当前数据块存储在RAID中。如果当前I/O请求命中第五队列,可以说明当前I/O请求要更新的当前数据块存储在SSD中。如果当前I/O请求没有命中第一队列至第五队列,可以说明当前I/O请求要更新的当前数据块存储在RAID中。这种情况下,为了在减少对SSD和RAID的写操作,可以先将当前数据块写入RAM中。但是,需要判断RAM中是否有空闲的空间。如果RAM中没有空闲的空间,可以对RAM中的数据块进行淘汰。具体地,可以对第二队列或第三队列执行淘汰操作,然后将淘汰的信息所指示的数据块从RAM中淘汰出去。
可选地,作为另一实施例,如果当前I/O请求命中第四队列或第五队列,确定RAM中的空闲空间是否大于或等于当前数据块的尺寸;在确定RAM中的空闲空间大于或等于当前数据块的尺寸的情况下,将当前数据块的信息***第k子队列;在确定RAM中的空闲空间小于当前数据块的尺寸的情况下,对第二队列或第三队列执行淘汰操作,并将当前数据块的信息***第k子队列。
如果当前I/O请求没有命中第一队列、第二队列、第三队列、第四队列和第五队列,确定RAM中的空闲空间是否大于或等于当前数据块的尺寸;在确定RAM中的空闲空间大于或等于当前数据块的尺寸的情况下,将当前数据块的信息***第n子队列;在确定RAM中的空闲空间小于当前数据块的尺寸的情况下,对第二队列或第三队列执行淘汰操作,并将当前数据块的信息***第n子队列。
可选地,作为另一实施例,对第二队列或第三队列执行淘汰操作的具体过程可以如下:如果第二队列的长度小于或等于第一长度阈值,则可以对第三队列执行淘汰操作;如果第三队列的长度小于或等于第二长度阈值,则可以对第二队列执行淘汰操作;如果第二队列的长度大于第一长度阈值且第二队列的长度大于或等于第四长度阈值,则可以对第二队列执行淘汰操作;如果第二队列的长度大于第一长度阈值、第二队列的长度小于第四长度阈值、且第三队列中的第n子队列的长度大于或等于第二长度阈值,则可以对第三队列执行淘汰操作。
具体地,第一长度阈值可以理解为第二队列的长度下限。第二长度阈值可以理解为第三队列的长度下限,具体而言,第二长度阈值可以理解为第三队列的第n子队列的长度下限。第三长度阈值可以理解为第二队列的目标长度。第四长度阈值可以理解为第三队列的第n子队列的长度上限。
应理解,通过为第二队列设置长度下限和目标长度,即上述第一长度阈值和第三长度阈值,可以规范第二队列的长度。在通常情况下,第二队列的长度和第三队列的长度不会为0。在某些极端情况下,比如在只有写请求而没有读请求的情况下,第二队列的长度可能会为0。
还应理解,通过为第三队列的第n子队列设置长度下限,可以给新的脏块更多的在未来被再次命中的机会,不至于新的脏块的信息刚进入第n子队列就被淘汰。此外,通过为第n子队列设置长度上限,可以避免缓存扫描的影响被扩大。在通常情况下,第n子队列的长度不会为0。在某些极端情况下,第n子队列的长度可能会为0。
第一长度阈值、第二长度阈值和第四长度阈值可以是预先设定的。第三长度阈值可以是自适应调整的,下面会具体描述调整方式。
从上述淘汰条件来看,本发明实施例的淘汰策略的主要思想是优先淘汰干净块,脏块有更多的机会保留在RAM中,这样能够减少对SSD的写操作,从而能够减少SSD的写开销和写损耗。例如,第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第三队列中的第n子队列的长度大于或等于第四长度阈值,则对第三队列执行淘汰操作。可见,对第三队列执行淘汰操作的条件较为苛刻,从而能够优先对第二队列执行淘汰操作。
同时,如果第二队列的长度小于或等于第一长度阈值,则对第三队列执行淘汰操作,这样能够保证第二队列不会在0和1之间跳变。
可选地,作为另一实施例,如果第二队列的长度小于或等于第一长度阈值,在第三队列中第n子队列的长度大于第二长度阈值的情况下,则可以对第n子队列执行淘汰操作;如果第二队列的长度小于或等于第一长度阈值,在第三队列中第n子队列的长度小于或等于第二长度阈值的情况下,则可以对第(n-1)子队列执行淘汰操作。
具体地,第三队列中的第n子队列可以有长度下限,即第二长度阈值。当第n子队列已经达到长度下限或小于该下限时,可以对第n子队列的下一级队列执行淘汰操作。这样可以保证第n子队列具有一定的长度,不会被全部淘汰掉。从而能够有效地防止写扫描。
可选地,作为另一实施例,如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第三队列中的第n子队列的长度大于或等于第四长度阈值,则对第n子队列执行淘汰操作。
可见,对第三队列执行淘汰操作的条件较为苛刻,从而能够优先对第二队列执行淘汰操作。也就是说,可以优先淘汰干净块,而脏块有更多的机会保留在RAM中,这样能够减少对SSD的写操作,从而能够减少SSD的写开销和写损耗。
可选地,作为另一实施例,第三长度阈值与第六队列的命中次数正相关,与第七队列的命中次数负相关,第六队列用于记录从第二队列淘汰的数据块的元数据,第七队列用于记录从第三队列淘汰的数据块的元数据。
第三长度阈值可以自适应调整。可以为第三长度阈值设定初始值。随着访问模式的变化,第三长度阈值可以变化。第六队列可以作为第二队列的淘汰历史队列,即可以记录从第二队列淘汰的数据块的信息。第七队列可以作为第三队列的淘汰历史队列,可以记录第三队列淘汰的数据块的信息。当I/O请求每命中一次第六队列,第三长度阈值可以增加,例如,第三长度阈值可以加1。当I/O请求每命中一次第七队列,第三长度阈值可以减小,例如,第三长度阈值可以减1。因此,第三长度阈值可以理解为第二队列的目标长度。
正如前面所提到的,第二队列的长度与应用层的读I/O请求比例正相关,也可以理解为应用层的读I/O请求命中第六队列的次数正相关。
应理解,第二队列可以采用LRU策略。因此对第二队列执行淘汰操作时,可以从第二队列的尾部进行淘汰。第三队列的每个子队列可以采用LRU策略,因此对子队列执行淘汰操作时可以从该子队列的尾部进行淘汰。
可选地,作为另一实施例,如果第二数据块的访问频率大于频率阈值,则可以将第二数据块的信息***第五队列,第二数据块的信息是从第二队列或第三队列淘汰的;如果第二数据块的访问频率小于或等于频域阈值,则可以将第二数据块的信息***第四队列。
可见,从RAM淘汰出的长期热数据块才能进入SSD,能够避免频繁对SSD写操作。而且,RAM的淘汰策略与SSD的准入策略相结合,能够对RAM和SSD进行协同管理。
本发明实施例中,通过上述多个队列,能够对RAM和SSD进行协同管理,算法时间复杂度为O(1),即常量级。可见,本发明实施例的方法具有较低的时间复杂度。
可选地,作为另一实施例,在步骤240中,如果当前I/O请求为读I/O请求,可以向应用层返回从RAM中读取的当前数据块;如果当前I/O请求为写I/O请求,可以先读取对应的数据块,缓存在RAM中,其元信息由第三队列记录,并用写请求所携带的应用层数据更新该数据块。
从上述描述可知,本发明实施例不与任何具体应用程序或文件***耦合,具有一定的通用性。另外,本发明实施例的方法可以利用软件实现,也可以利用硬件实现。
下面将结合具体的例子详细描述本发明实施例。应注意,这些例子仅是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
本发明实施例中,可以将五条队列分别称为第一队列Q1、第二队列Q2、第三队列Q3、第四队列Q4和第五队列Q5。
图4是根据本发明实施例的多条队列管理数据块的过程的示意图。如图4所示,Q1管理RAM中的CC块,Q2管理RAM中的HC块,Q3管理RAM中的CD/HD块。具体而言,Q1可以记录RAM中CC块的信息,Q2可以记录RAM中HC块的信息,Q3可以记录RAM中CD/HD块的信息。应理解,Q1、Q2和Q3三者管理的数据块即为RAM中的全部数据块,也就是说,Q1、Q2和Q3三者管理的数据块占据RAM的全部缓存空间。
Q5管理SSD中的HC/HD块。SSD中的这些数据块属于长期热数据块,随着时间推移,部分数据块会变为冷数据块,从SSD淘汰出去,根据需要写回RAID。RAID与RAM之间存在CC/CD块的请求和淘汰过程。Q4管理从RAM淘汰到RAID中的CC/CD块,具体地Q4可以记录这些数据块的元数据,作为历史记录。此处所述的“管理”可以指记录信息。
图5是根据本发明实施例的第一队列的管理过程的示意图。
Q1是FIFO队列,长度固定,起到预热的作用。Q1的长度可以是预先设定的。如图5所示,当一个数据块被第一次读访问时,可以把该数据块的信息***Q1尾部。如果这个数据块一直没有被再次访问,则最终按照FIFO策略淘汰,并且把它的元数据记录到Q4中。如果该数据块被再次访问,则把它移到Q2或Q3。那种偶发的、大量的只有一次读访问的数据块,只会进入Q1并迅速被淘汰出去,从而能够避免这种数据块污染其它队列。
图6是根据本发明实施例的第二队列的管理过程的示意图。
Q2是LRU队列,长度可自适应调节,设有长度下限,例如长度下限可以为第一长度阈值。
如图6所示,Q2管理的数据块,来自Q1、Q4或Q5中被读I/O请求命中的数据块。这些数据块属于短期热数据块。这些数据块的信息进入Q2后,不会被CC块的信息替换出去,也就是说,这些数据块不会被CC块从RAM中替换出去,从而能够保证高命中率。
由于RAID和SSD处理小写并没有什么优势,所以在选择淘汰时,优先淘汰Q2管理的干净块,使脏块在RAM中缓存更长地时间,从而能够有效地减少对SSD的写操作。
Q2淘汰的数据块的信息可以根据访问频率进入Q4或Q5。具体地,如果访问频率大于频率阈值,则判定该数据块为长期热数据块,该数据块的信息进入Q5队列中;否则进入Q4中。应理解,进入Q4的可以是该数据块的元数据。
上述频率阈值可以是预设的,也可以在运行过程中动态调整。
图7是根据本发明实施例的第二队列的动态调整过程的示意图。
本发明实施例中,还可以定义第六队列和第七队列。此处以Q2′表示第六队列,以Q3′表示第七队列。
针对Q2,可以设置目标长度变量,即前述第三长度阈值。此处以T表示该变量。Q2′是Q2的历史淘汰队列,记录从Q2淘汰的数据块的信息,并保持Q2’的长度与Q3长度相等。Q3′是Q3的历史淘汰队列,可以记录从Q3淘汰的数据块的元数据,并保持Q3’的长度与Q2长度相等。
如图7所示,当I/O请求命中Q2′时,T可以加1;当I/O请求命中Q3′时,T可以减1。
图8是根据本发明实施例的第三队列的管理过程的示意图。
Q3是特殊队列,采用SF策略。针对该队列,考虑了条带所占空间大小和访问频率,以SF值作为排序依据。SF值是条带所在空间大小与访问频率的比值。在Q3的淘汰策略中,优先淘汰SF值高的结点,即那些占用空间多且访问频率少的脏块的信息,这样能更好地合并小写IO,同时访问频率高的块可以缓存更长的时间,保证高命中率。可以根据频率阈值判断从Q3淘汰的数据块的信息写入的队列。具体地,如果该数据块的访问频率大于频域阈值,将该数据块的信息写入Q5,具体地将该数据块的元数据写入Q5,并将该数据块写入SSD;否则,将该数据块的元数据写入Q4,并将该数据块写回RAID。
每个数据块都有对应的SF值,如果根据该值把其***到Q3中的对应位置,会在寻找位置过程中带来很大的时间开销。因此可以将Q3化成多队列形式进行管理。
如图8所示,假设一个条带中的条带单元的数目为n,SF值的范围为[0,n],那么Q3子队列的数目为(n+1),如图8所示的子队列0、子队列1、子队列2、……子队列(n-1)和子队列n。每个子队列中记录的所有数据块对应的SF值是相同的,并且每个队列的编号与SF值相同。即,子队列0中记录的所有数据块对应的SF值均为0,子队列1中记录的所有数据块对应的SF值均为1,以此类推,子队列n中记录的所有数据块对应的SF值均为n。
此处将Q3的各个子队列表示为Q3x,其中x为取值从0至n的正整数。相应地,子队列n可以表示为Q3n。为了避免写I/O请求扫描缓存的问题,那些不在任何队列的脏数据块在进入RAM时,只会进入子队列Q3n,这样不会造成热的脏块被替换出RAM。同时,为了给冷的脏块有预热的机会,Q3n队列可以有长度下限,即前述第二长度阈值。
图9是根据本发明实施例的第三队列的一个例子的示意图。
在图9中,假设n为4,即条带的数目为4,相应地,SF值的范围为[0,4],Q3包括5个子队列,即如图9所示的Q30、Q31、Q32、Q33和Q34。这5个子队列的SF值分别为0、1、2、3和4。
Q30中记录的所有数据块对应的SF值均为0,Q31中记录的所有数据块对应的SF值均为1,Q32中记录的所有数据块对应的SF值均为2,Q33中记录的所有数据块对应的SF值均为3,Q34中记录的所有数据块对应的SF值均为4。
在图9中,为了描述方便,假设需要处理Q3中记录的4个数据块的信息,即数据块40、数据块65、数据块32和数据块5。
假设数据块32占用4个条带,访问次数为1,那么数据块32对应的SF值为4。假设数据块5占用4个条带,访问次数为1,那么数据块5对应的SF值为4。假设数据块40占用2个条带,访问次数为2,那么数据块40对应的SF值为1。存储各个数据块的信息的结点在相应的子队列的位置如图9所示。
假设数据块40被再次访问,并且占用3个条带,那么数据块40对应的SF值仍为1。那么存储数据块40的信息的结点将移动到Q31的头部。
假设数据块32被再次访问,仍占用4个条带,那么数据块32对应的SF值将减小2,即数据块32当前对应的SF值为2,那么存储数据块32的信息的结点将从Q34移动到Q32的头部。
当需要对Q3执行淘汰操作时,数据块5的信息将被优先淘汰。
为了避免过去的热数据长期驻留在RAM中,为Q3定义了老化策略。具体地,当一定时间后,将除了Q3n之外的其它子队列中所有数据块对应的SF值加1,即把所有的数据块升级。图10是根据本发明实施例的第三队列的老化策略的例子的示意图。
在图10中,假设n为4,即条带的数目为4,相应地,SF值的范围为[0,4],Q3包括5个子队列,即如图10所示的Q30、Q31、Q32、Q33和Q34。这5个子队列的SF值分别为0、1、2、3和4。
除了Q34之外,其它子队列的数据块对应的SF值均加1。如图10所示,原来在Q30中的数据块对应的SF值加1后,这些数据块的信息进入了Q31中。原来在Q31中的数据块对应的SF值加1后,这些数据块的信息进入了Q32中。原来在Q32中的数据块对应的SF值加1后,这些数据块的信息进入了Q34中。
还应理解,老化策略并没有对数据块的访问频率进行改变。
从上述可知,Q1的长度是固定的,Q2和Q3二者的长度是变化的,但Q2和Q3二者的长度之和不变,等于总的RAM缓存空间减去Q1的长度。
图11是根据本发明实施例的第四队列的管理过程的示意图。
Q4是FIFO队列,长度固定,其长度可以是预先设定的。
由于RAM空间小,需要存放有效的数据块,还需要存放大量映射表,因此RAM中不可能保存RAID中所有数据块及其元数据。Q4可以记录那些近期被淘汰出RAM、但还不能进入SSD的冷数据块的元数据。当I/O请求命中Q4时,可以认为被命中的数据块为短期热数据,该数据块的信息可以直接进入Q2或Q3。相应地,该数据块可以保存到RAM中。
可见,由于Q4作为淘汰历史队列,因此不需要对RAID中所有的数据块进行精确统计,也能有效地识别热点数据。
Q5管理SSD中的数据块。Q5采用简化的多队列策略。可以根据数据块的访问频率设定Q5中子队列的数目。各个子队列可以分别对应不同的访问频率范围。即每个子队列可以用于记录该访问频率范围内的数据块的信息。因此,子队列的数目可以是自适应调整的。
此外,各个子队列的活跃级别可以按照对应的访问频率确定。例如,对应的访问频率越小,该子队列的活跃级别越低。当需要对Q5进行淘汰时,优先从活跃级别最低的子队列开始淘汰。
图12是根据本发明实施例的第五队列的一个例子的示意图。
在图12中,假设Q5包括3个子队列,即子队列0、子队列1和子队列2。3个子队列可以分别对应不同的访问频率范围。例如,子队列0可以对应访问次数1至10,子队列1可以对应访问次数11至20,子队列2可以对应访问次数21至30。当需要对Q5执行淘汰操作时,可以从子队列0开始淘汰。
此外,从Q2和Q3淘汰的长期热数据块的信息,可以根据访问频率确定进入Q5相应的子队列,同时该数据块可以进入SSD。在SSD的空间满了以后,需要对SSD中的数据块进行淘汰以释放一定的空间。优先从最低活跃级别的子队列中淘汰最久未访问的数据块的信息。当I/O请求命中Q5时,被命中的数据块可以为短期热数据块,该数据块的信息可以***Q2或Q3,相应地将该数据块保存在RAM中。此外,还可以在SSD中继续保留该数据块的副本。
此外,Q5可以采用定时老化策略。具体地,当Q5中的所有数据块的平均访问频率超过某一阈值后,可以将访问频率折半,重新计算活跃级别。
上面详细描述了Q1至Q5的配置。下面将详细描述针对不同的I/O请求管理混合缓存的过程。
图13是根据本发明实施例的管理混合缓存的方法的过程的示意性流程图。在图13中,当前I/O请求为读I/O请求。
1201,从应用层接收读I/O请求。
1202,确定该读I/O请求是否命中RAM。
1203,如果命中RAM,则确定是否命中Q1。
1204,如果命中Q1,则从Q1中删除该读I/O请求针对的当前数据块的信息。
1205,将当前数据块的信息***到Q2的头部。
1206,如果没有命中Q1,则确定是否命中Q2。
如果命中Q2,则执行步骤1205。
1207,如果没有命中Q2,则确定命中Q3,并改变当前数据块的信息在Q3中的位置。
具体地,可以计算当前数据块对应的SF值,根据SF值将当前数据块对应的信息***Q3相应的子队列中。
1208,如果没有命中RAM,则确定是否命中Q4。
1209,如果命中Q4,则从RAID中读取当前数据块,并从Q4中删除当前数据块的信息。
1210,确定RAM中是否有空闲空间来存储当前数据块。
如果RAM中有足够的空闲空间,则执行步骤1205,并将当前数据块存储在RAM中。
1211,如果RAM没有足够的空闲空间来存储当前数据块,则选择Q2或Q3执行淘汰操作。
在对Q2或Q3执行淘汰操作后,执行步骤1205,并将当前数据块存储在RAM中。
1212,确定是否命中Q5。
1213,如果命中Q5,则从SSD中读取当前块。
然后可以执行步骤1210、1211和1205。
1214,如果没有命中Q5,则从RAID读取当前块,并将当前块的信息***Q1的尾部。
同时,将当前块存储在RAM中。
1215,向应用层返回读取的当前数据块。
本发明实施例中,通过根据读I/O请求的命中结果将读I/O请求针对的当前数据块的信息***第一队列、第二队列和第三队列中之一。第一队列、第二队列和第三队列用于管理RAM中的数据块,第四队列用于管理从RAM淘汰到RAID中的数据块,第五队列用于管理SSD中的数据块,而SSD中的数据块是从RAM中淘汰的数据块,可见,对于I/O请求产生的数据块,首先由第一队列、第二队列或第三队列进行管理,然后第一队列、第二队列、第三队列与第四队列和第五队列相互配合,为SSD筛选出准入的数据块,因此通过五条队列的管理模式,将RAM和SSD相结合,而非彼此独立,从而能够实现对RAM和SSD的协同管理,提高混合缓存性能。
图14是根据本发明实施例的管理混合缓存的方法的过程的示意性流程图。在图14中,当前I/O请求为写I/O请求。
1301,从应用层接收写I/O请求。
1302,确定写I/O请求是否命中RAM。
1303,如果命中RAM,确定是否命中Q1。
1304,如果命中Q1,则从Q1中删除写I/O请求针对的当前数据块的信息。
1305,将当前数据块的信息***Q3的相应位置,并将当前数据块写入RAM中。
具体地,可以计算当前数据块对应的SF值,根据SF值将当前数据块的信息***Q3相应的子队列中。
1306,如果没有命中Q1,则确定是否命中Q2。
1307,如果命中Q2,则从Q2中删除当前数据块的信息。
在步骤1307之后,执行步骤1305。
1308,如果没有命中Q2,则确定命中Q3,改变当前数据块的信息在Q3中的位置,并在RAM中写入当前数据块。
具体地,可以计算当前数据块对应的SF值,根据SF值改变当前数据块的信息在Q3中的位置。
1309,如果没有命中RAM,则确定RAM是否有空闲空间来存储当前数据块。
1310,如果RAM中没有足够的空闲空间来存储当前数据块,则选择Q2或Q3执行淘汰操作。
在步骤1310之后可以执行1311。
如果RAM中有足够的空闲空间来存储当前数据块,则可以执行步骤1311。
1311,确定是否命中Q4。
1312,如果命中Q4,则从Q4中删除当前数据块的信息。
在步骤1312之后,可以执行步骤1305。
1313,确定是否命中Q5。
1314,如果命中Q5,从SSD中读取当前数据块。
在步骤1314之后,执行步骤1305。
1315,如果没有命中Q5,则在RAM中写入当前数据块,并将当前数据块的信息***Q3的子队列Q3n。
1316,完成写I/O请求,向应用层返回完成响应。
本发明实施例中,通过根据写I/O请求的命中结果将写I/O请求针对的当前数据块的信息***第一队列、第二队列和第三队列中之一。第一队列、第二队列和第三队列用于管理RAM中的数据块,第四队列用于管理从RAM淘汰到RAID中的数据块,第五队列用于管理SSD中的数据块,而SSD中的数据块是从RAM中淘汰的数据块,可见,对于I/O请求产生的数据块,首先由第一队列、第二队列或第三队列进行管理,然后第一队列、第二队列、第三队列与第四队列和第五队列相互配合,为SSD筛选出准入的数据块,因此通过五条队列的管理模式,将RAM和SSD相结合,而非彼此独立,从而能够实现对RAM和SSD的协同管理,提高混合缓存性能。
下面将详细描述图13中的步骤1211和图14中的步骤1310的具体过程,即对Q2或Q3执行淘汰操作的具体过程。
图15是根据本发明实施例的第二队列和第三队列的淘汰过程的示意性流程图。
在图15中,第一长度阈值可以为Q2的长度下限,以L1表示。第二长度阈值可以为Q3n的长度下限,以L2表示。第三长度阈值可以为Q2的目标长度变量,与上述一致,以T表示。第四长度阈值可以为Q3n的长度上限,以L3表示。此外,以F表示上述频率阈值。
1401,确定Q2长度是否小于或等于L1。
1402,如果Q2长度小于或等于L1,确定Q3n长度是否大于L2。
1403,如果Q3n长度大于L2,则对Q3n执行淘汰操作。
具体地,可以淘汰Q3n尾部的数据块的信息。
1404,确定是否在SSD中存在淘汰的数据块副本。
1405,如果在SSD中不存在淘汰的数据块副本,则确定该淘汰的数据块的访问频率是否大于F。
1406,如果该淘汰的数据块的访问频率不大于F,则将该淘汰的数据块写回RAID中,并将淘汰的数据块的信息***Q4中,并释放淘汰的数据块在RAM中占用的空间。
1407,如果在SSD中存在淘汰的数据块副本,则更新SSD中该数据块的副本,然后释放淘汰的数据块在RAM中占用的空间。
1408,如果该淘汰的数据块的访问频率大于F,则将淘汰的数据块的信息***Q5,并将该淘汰的数据块写入SSD中,并释放淘汰的数据块在RAM中占用的空间。
1409,如果Q3n长度不大于L2,则在Q3(n-1)中执行淘汰操作。
具体地,如果Q3n长度小于或等于L2,可以淘汰Q3(n-1)尾部的数据块的信息。相应地,从RAM中淘汰该信息指示的数据块。
在步骤1409之后,执行步骤1404至1408。
1410,如果Q2长度大于L1,则确定Q2长度是否小于T。
如果Q2长度不小于T,则执行步骤1412。
1411,如果Q2长度小于T,则确定Q3n长度是否大于L3。
如果Q3n长度大于L3,则执行步骤1403至1408。
如果Q3n长度小于或等于L3,则执行步骤1412。
1412,在Q2中执行淘汰操作。
具体地,可以淘汰Q2的尾部的数据块的信息。
1413,确定是否在SSD中存在淘汰的数据块副本。
1414,如果在SSD中不存在淘汰的数据块副本,则确定该淘汰的数据块的访问频率是否大于F。
1415,如果该淘汰的数据块的访问频率不大于F,则将淘汰的数据块的信息***Q4,然后释放淘汰的数据块在RAM中占用的空间。
应理解,对于读I/O请求产生的数据块,无需写回RAID中。
1416,如果在SSD中存在淘汰的数据块副本,则直接释放淘汰的数据块在RAM中占用的空间。
从上述可知,SSD的准入策略与RAM的淘汰策略相关。从RAM淘汰的长期热数据块被SSD准入,而冷数据进入RAID。因此,SSD的准入策略依赖于RAM的淘汰策略,RAM为SSD筛选长期热数据块,为RAID筛选冷数据块。而且考虑到SSD在写性能和写损耗的特点,在RAM的淘汰策略中优先选择干净块进行淘汰,从而能够有效减少对SSD的写操作次数,减少写SSD的开销和损耗。
从上述的实施例可以理解的是,本发明实施例不与任何具体应用程序或文件***耦合,也就是说,适用于任何具体应用程序及文件***,具有一定的通用性。
此外,本发明实施例可以适用于异质混合缓存。
具体而言,队列Q1~Q5构成协同的“预热-筛选”的管理模型,综合考虑了RAM和SSD的特性,能够实现数据异质性分布、协同管理的目标。
Q1、Q2、Q3管理RAM中的数据块,Q4管理从RAM淘汰到RAID中的冷数据块,Q5管理SSD中的数据块。
其中,队列Q1和Q3n,用于管理新进入RAM的、冷的数据块,当后续I/O请求再次命中这些块时,这些数据块成为短期热数据块,其信息相应地被转移到Q2或Q3中除Q3n之外的其它子队列中。而没有被再次命中的数据块即为冷数据,其信息就被从Q1或Q3n中淘汰。具体地,这些数据块的元数据进入Q4,这些数据块进入RAID。
Q2和Q3中除Q3n之外的其它子队列,用于管理短期热数据块。随着时间的推移和后续I/O请求的到达,其中部分数据块变得更加“热”而被继续保留在RAM中,部分数据块则由于Q2、Q3采用的策略被“淘汰出”RAM,其中访问频率超过频率阈值的数据块,被确定为长期热数据块,其信息进入Q5,根据需要将该数据块写入SSD。那些访问频率没有超过频率阈值的数据块,则被确定为冷数据块,其元数据进入Q4,根据需要该数据块写回RAID。
Q5管理长期热数据块,随着时间的推移,部分数据块老化成为冷数据块,从而被淘汰进入RAID。
可以看出,通过多队列协同,所有I/O请求针对的数据块,经过多队列管理形成如下分类:冷数据块、短期热数据块和长期热数据块。
上述规律的核心可以理解为“所有数据块->Q1&Q3n预热->短期热数据块->Q2&Q3中除Q3n之外的其它子队列筛选->长期热数据”。从不同介质缓存器件的角度来看,SSD的准入策略与RAM的淘汰策略紧密相关,这也是协同的体现。
另外,本发明实施例能够有效提高命中率。具体而言,通过多队列协同为RAM和SSD分别筛选出短期、长期热数据块,从而能够提高命中率。
此外,本发明实施例能够抗缓存扫描。具体地,Q1可以作为Q2的屏障,防止读扫描。Q3n可以作为Q3中除Q3n之外的其它子队列的屏障,防止写扫描。
此外,本发明实施例能够自适应读写请求的比例变化。具体地,Q2和Q3长度根据读写比例的变化,从而做出适应性自我调整。
同时,本发明实施例对SSD更为友好。具体而言,SSD的准入策略与RAM的淘汰策略相关,从RAM淘汰的长期热数据块才能被准入SSD。其中脏的长期热数据块由Q3管理,淘汰时由于需要写回SSD,而干净块不必写回SSD。因此为了避免造成频繁地写SSD操作,本发明实施例中对脏数据块特别处理。从上述也可知,主要体现在:
(1)Q3采用了SF策略。该策略倾向于选择“较冷的、较大的数据块”进行淘汰。该策略的特点之一是尽可能缓存“频繁的、小的写请求”,从而能够避免将这种请求直接导向SSD或者RAID。
(2)自适应下的干净块优先淘汰策略。为了满足自适应、保证命中率,同时满足干净块优先淘汰,本发明实施例中“当Q2长度小于T且Q3n长度大于L2时,则对Q3执行淘汰操作”,使得淘汰Q3的条件更为苛刻,进而能够优先对Q2执行淘汰操作。这种干净块优先淘汰策略,能够给脏块更多的被保留在RAM中的机会,从而有利于RAM尽可能缓存写请求。
另外,本发明实施例具有低时间复杂度。具体地而言,本发明实施例中多队列协同过程中,各个队列的操作时间复杂度均为常量级。
实施例三
参见图16,基于上述各实施例,本发明实施例提供了一种管理混合缓存的设备300,其中,混合缓存包括随机存储器RAM和固态存储器SSD,RAM和SSD共同作为由一个或多个磁盘构成的磁盘***的缓存;
该设备包括:
生成单元301,用于生成第二队列、第三队列以及第五队列,其中,第二队列用于管理RAM中热的干净数据块,热的干净数据块通过第二队列被找到;第三队列用于管理RAM中脏数据块,脏数据块通过第三队列被找到;第二队列和第三队列的长度之和不变;第五队列用于管理SSD中的数据块;
淘汰单元302,当有新数据块需要由第二队列或第三队列管理,并且RAM的空闲空间不足以存放新数据块时,对生成单元生成的第二队列或第三队列执行淘汰操作,其中第二队列的淘汰概率高于第三队列的淘汰概率,第二队列的长度随着对第二队列执行的淘汰操作动态变化,第三队列的长度随着对第三队列执行的淘汰操作动态变化;
确定单元303,用于确定淘汰单元在对第二队列或第二队列进行淘汰操作时,从第二队列或第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
写入单元304,用于当确定单元确定淘汰的数据块的访问次数超过访问次数阈值,则利用第五队列管理淘汰的数据块,并将淘汰的数据块写入SSD,第五队列用于管理SSD中的数据块。
本发明实施例中,磁盘***包括多个磁盘,磁盘***为廉价冗余磁盘阵列RAID,RAID包括多个条带,一个条带对应一个数据块;
第三队列包括(n+1)个子队列,第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,SF值为条带中已读入RAM中的条带单元的大小与条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
(n+1)子队列中的第n子队列用于管理进入RAM的新的脏数据块;(n+1)个子队列中除第n子队列之外的其它子队列分别用于管理RAM中热的脏数据块;
淘汰单元具体用于:当有读请求或写请求访问到第三队列管理的数据块时,根据该请求的特征更新该数据块的SF值,并根据新的SF值将该数据块移动到对应的子队列;在对第三队列执行淘汰操作时,按照SF值从大到小的顺序对(n+1)个子队列执行淘汰操作。
本发明实施例中,淘汰单元还具体用于:
如果第二队列的长度小于或等于第一长度阈值,则对第三队列执行淘汰操作;
如果第三队列的长度小于或等于第二长度阈值,则对第二队列执行淘汰操作;
如果第二队列的长度大于第一长度阈值且第二队列的长度大于或等于第三长度阈值,则对第二队列执行淘汰操作;
如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第n子队列的长度大于或等于第四长度阈值,则对第三队列执行淘汰操作;
其中,第一长度阈值用于表示第二队列的最小长度的参考值;
第二长度阈值用于表示第三队列的最小长度的参考值;
第三长度阈值与第一历史队列的命中次数正相关,与第二历史队列的命中次数负相关,第一历史队列用于管理从第二队列淘汰的数据块,第二历史队列用于管理从第三队列淘汰的数据块;
第四长度阈值用于表示第n子队列的最大长度的参考值。
本发明实施例中,淘汰单元在用于“如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第n子队列的长度大于或等于第四长度阈值,则对第三队列执行淘汰操作”时,具体用于:
如果第二队列的长度大于第一长度阈值、第二队列的长度小于第三长度阈值、且第三队列中的第n子队列的长度大于或等于第四长度阈值,则对第n子队列执行淘汰操作。
本发明实施例中,淘汰单元在用于“如果第二队列的长度小于或等于第一长度阈值,则对第三队列执行淘汰操作”时,具体用于:
如果第二队列的长度小于或等于第一长度阈值,在第三队列中第n子队列的长度大于第二长度阈值的情况下,则对第n子队列执行淘汰操作;
如果第二队列的长度小于或等于第一长度阈值,在第n子队列的长度小于或等于第二长度阈值的情况下,则对第(n-1)子队列执行淘汰操作。
本发明实施例中,生成单元还用于生成第一队列以及第四队列,第一队列用于管理进入RAM的新的干净数据块,第四队列用于管理从RAM淘汰到RAID的数据块,第四队列管理的数据块的访问次数小于或等于访问次数阈值;
当第一队列、第四队列或第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由第二队列管理;
当第一队列、第二队列、第四队列或第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由第三队列中的第k子队列管理,k为写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
本发明实施例中,第一队列的长度是固定的,第一队列的长度是根据以下因素确定的:进入RAM的新的干净块在RAM中的缓存时长,抗读请求扫描缓存。
本发明实施例中,在第五队列中,将数据块访问次数作为价值因子之一,来衡量第五队列所管理的数据块的价值;价值为将第五队列所管理的数据块从SSD淘汰到磁盘***的依据。
由于本发明实施例为基于上述各实施例的装置实施例,因此,本实施例也具有上述各实施例所具有的各种有益效果,这里不再赘述。
实施例四
参见图17,基于上述各实施例,本发明实施例提供了一种计算机***40,包括CPU41、存储器42;其中,存储器用于存储供CPU运行所需的指令,CPU上电后通过读取存储器中指令来运行上述实施例一及实施例二中介绍的方法,从而实现对混合缓存的管理。
本实施例中的存储器可以与RAM及SSD构成的混合缓存以及磁盘***共用相同的物理介质,例如,一块RAM中的一部分区域用于运行程序,另一部分用于做缓存使用;同理,对于磁盘,也可以将一部分用于存储程序本身,另一部分用于存储数据;这些技术都为本领域技术人员所公知的技术,这里不再赘述。
此外,在另一实施例中,也可以基于其他与CPU类似的处理器件来运行程序,例如,DSP、FPGA等器件,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种管理混合缓存的方法,所述混合缓存包括随机存储器RAM和固态存储器SSD,所述RAM和所述SSD共同作为由一个或多个磁盘构成的磁盘***的缓存;
其特征在于,所述方法包括:
生成第二队列以及第三队列,其中,所述第二队列用于管理所述RAM中热的干净数据块,所述热的干净数据块通过所述第二队列被找到;所述第三队列用于管理所述RAM中脏数据块,所述脏数据块通过所述第三队列被找到;所述第二队列和所述第三队列的长度之和不变;
当新数据块需要由所述第二队列或所述第三队列管理,并且所述RAM的空闲空间不足以存放所述新数据块时,对所述第二队列或所述第三队列执行淘汰操作,其中所述第二队列的淘汰概率高于所述第三队列的淘汰概率,所述第二队列的长度随着对所述第二队列执行的淘汰操作动态变化,所述第三队列的长度随着对所述第三队列执行的淘汰操作动态变化;
确定从所述第二队列或所述第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
如果所述淘汰的数据块的访问次数超过所述访问次数阈值,即判定该数据块为长期热数据块,利用第五队列管理所述淘汰的数据块,并将所述淘汰的数据块写入所述SSD,所述第五队列用于管理所述SSD中的数据块。
2.根据权利要求1所述的方法,其特征在于,所述磁盘***包括多个磁盘,所述磁盘***为廉价冗余磁盘阵列RAID,所述RAID包括多个条带,一个条带对应一个数据块;
所述第三队列包括(n+1)个子队列,所述第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,所述SF值为条带中已读入所述RAM中的条带单元的大小与所述条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
所述(n+1)子队列中的第n子队列用于管理进入所述RAM的新的脏数据块;所述(n+1)个子队列中除所述第n子队列之外的其它子队列分别用于管理所述RAM中热的脏数据块;
当有读请求或写请求访问到所述第三队列管理的数据块时,根据该请求的特征更新该数据块的SF值,并根据新的SF值将该数据块移动到对应的子队列;
在对所述第三队列执行淘汰操作时,按照SF值从大到小的顺序对所述(n+1)个子队列执行淘汰操作。
3.根据权利要求2所述的方法,其特征在于,所述对所述第二队列或所述第三队列执行淘汰操作包括:
如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作;
如果所述第三队列的长度小于或等于第二长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值且所述第二队列的长度大于或等于第三长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作;
其中,所述第一长度阈值用于表示所述第二队列的最小长度的参考值;
所述第二长度阈值用于表示所述第三队列的最小长度的参考值;
所述第三长度阈值与第一历史队列的命中次数正相关,与所述第二历史队列的命中次数负相关,所述第一历史队列用于管理从所述第二队列淘汰的数据块,所述第二历史队列用于管理从所述第三队列淘汰的数据块;
所述第四长度阈值用于表示所述第n子队列的最大长度的参考值。
4.根据权利要求3所述的方法,其特征在于,所述如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作,包括:
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第三队列中的第n子队列的长度大于或等于所述第四长度阈值,则对所述第n子队列执行淘汰操作。
5.根据权利要求3所述的方法,其特征在于,所述如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作,包括:
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第三队列中第n子队列的长度大于所述第二长度阈值的情况下,则对所述第n子队列执行淘汰操作;
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第n子队列的长度小于或等于所述第二长度阈值的情况下,则对所述第(n-1)子队列执行淘汰操作。
6.根据权利要求2至5中任一项所述的方法,其特征在于,当第一队列、第四队列或所述第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由所述第二队列管理,所述第一队列用于管理进入所述RAM的新的干净数据块,所述第四队列用于管理从所述RAM淘汰到所述RAID的数据块,所述第四队列管理的数据块的访问次数小于或等于所述访问次数阈值;
当所述第一队列、所述第二队列、所述第四队列或所述第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由所述第三队列中的第k子队列管理,k为所述写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
7.根据权利要求6所述的方法,其特征在于,所述第一队列的长度是固定的,所述第一队列的长度是根据以下因素确定的:进入所述RAM的新的干净块在所述RAM中的预热时长,抗读请求扫描缓存。
8.根据权利要求1至7中任一项所述的方法,其特征在于,在所述第五队列中,将数据块访问次数作为价值因子之一,来衡量所述第五队列所管理的数据块的价值;所述价值为将所述第五队列所管理的数据块从所述SSD淘汰到所述磁盘***的依据。
9.一种管理混合缓存的设备,所述混合缓存包括随机存储器RAM和固态存储器SSD,所述RAM和所述SSD共同作为由一个或多个磁盘构成的磁盘***的缓存;
其特征在于,所述设备包括:
生成单元,用于生成第二队列、第三队列以及第五队列,其中,所述第二队列用于管理所述RAM中热的干净数据块,所述热的干净数据块通过所述第二队列被找到;所述第三队列用于管理所述RAM中脏数据块,所述脏数据块通过所述第三队列被找到;所述第二队列和所述第三队列的长度之和不变;所述第五队列用于管理所述SSD中的数据块;
淘汰单元,当有新数据块需要由所述第二队列或所述第三队列管理,并且所述RAM的空闲空间不足以存放所述新数据块时,对所述生成单元生成的所述第二队列或所述第三队列执行淘汰操作,其中所述第二队列的淘汰概率高于所述第三队列的淘汰概率,所述第二队列的长度随着对所述第二队列执行的淘汰操作动态变化,所述第三队列的长度随着对所述第三队列执行的淘汰操作动态变化;
确定单元,用于确定所述淘汰单元在对所述第二队列或第二队列进行淘汰操作时,从所述第二队列或所述第三队列淘汰的数据块的访问次数是否超过访问次数阈值;
写入单元,用于当所述确定单元确定淘汰的数据块的访问次数超过所述访问次数阈值,则利用所述第五队列管理所述淘汰的数据块,并将所述淘汰的数据块写入所述SSD,所述第五队列用于管理所述SSD中的数据块。
10.根据权利要求9所述的设备,其特征在于,所述磁盘***包括多个磁盘,所述磁盘***为廉价冗余磁盘阵列RAID,所述RAID包括多个条带,一个条带对应一个数据块;
所述第三队列包括(n+1)个子队列,所述第三队列中的第i子队列中所管理的所有数据块对应的条带频率SF值均为i,所述SF值为条带中已读入所述RAM中的条带单元的大小与所述条带访问次数之间的比值,n为正整数,i为取值从0至n的整数;
所述(n+1)子队列中的第n子队列用于管理进入所述RAM的新的脏数据块;所述(n+1)个子队列中除所述第n子队列之外的其它子队列分别用于管理所述RAM中热的脏数据块;
所述淘汰单元具体用于:当有读请求或写请求访问到所述第三队列管理的数据块时,根据该请求的特征更新该数据块的SF值,并根据新的SF值将该数据块移动到对应的子队列;在对所述第三队列执行淘汰操作时,按照SF值从大到小的顺序对所述(n+1)个子队列执行淘汰操作。
11.根据权利要求10所述的设备,其特征在于,所述淘汰单元具体用于:如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作;
如果所述第三队列的长度小于或等于第二长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值且所述第二队列的长度大于或等于第三长度阈值,则对所述第二队列执行淘汰操作;
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作;
其中,所述第一长度阈值用于表示所述第二队列的最小长度的参考值;
所述第二长度阈值用于表示所述第三队列的最小长度的参考值;
所述第三长度阈值与第一历史队列的命中次数正相关,与所述第二历史队列的命中次数负相关,所述第一历史队列用于管理从所述第二队列淘汰的数据块,所述第二历史队列用于管理从所述第三队列淘汰的数据块;
所述第四长度阈值用于表示所述第n子队列的最大长度的参考值。
12.根据权利要求11所述的设备,其特征在于,所述淘汰单元在用于:
所述如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于第三长度阈值、且所述第n子队列的长度大于或等于第四长度阈值,则对所述第三队列执行淘汰操作时,具体用于:
如果所述第二队列的长度大于所述第一长度阈值、所述第二队列的长度小于所述第三长度阈值、且所述第三队列中的第n子队列的长度大于或等于所述第四长度阈值,则对所述第n子队列执行淘汰操作。
13.根据权利要求11所述的设备,其特征在于,所述淘汰单元在用于:
所述如果所述第二队列的长度小于或等于第一长度阈值,则对所述第三队列执行淘汰操作时,具体用于:
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第三队列中第n子队列的长度大于所述第二长度阈值的情况下,则对所述第n子队列执行淘汰操作;
如果所述第二队列的长度小于或等于所述第一长度阈值,在所述第n子队列的长度小于或等于所述第二长度阈值的情况下,则对所述第(n-1)子队列执行淘汰操作。
14.根据权利要求10-13任一所述的设备,其特征在于,所述生成单元还用于生成第一队列以及第四队列,所述第一队列用于管理进入所述RAM的新的干净数据块,所述第四队列用于管理从所述RAM淘汰到所述RAID的数据块,所述第四队列管理的数据块的访问次数小于或等于所述访问次数阈值;
当第一队列、第四队列或所述第五队列所管理的数据块被应用层的读请求命中时,被命中的数据块转为由所述第二队列管理;
当所述第一队列、所述第二队列、所述第四队列或所述第五队列所管理的数据块被应用层的写请求命中时,被命中的数据块转为由所述第三队列中的第k子队列管理,k为所述写请求产生的数据块对应的SF值,k为正整数,且0≤k≤n-1。
15.根据权利要求14所述的设备,其特征在于,所述第一队列的长度是固定的,所述第一队列的长度是根据以下因素确定的:进入所述RAM的新的干净块在所述RAM中的缓存时长,抗读请求扫描缓存。
16.根据权利要求9至15任一所述的设备,其特征在于,在所述第五队列中,将数据块访问次数作为价值因子之一,来衡量所述第五队列所管理的数据块的价值;所述价值为将所述第五队列所管理的数据块从所述SSD淘汰到所述磁盘***的依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410315209.7A CN104090852B (zh) | 2014-07-03 | 2014-07-03 | 管理混合缓存的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410315209.7A CN104090852B (zh) | 2014-07-03 | 2014-07-03 | 管理混合缓存的方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104090852A true CN104090852A (zh) | 2014-10-08 |
CN104090852B CN104090852B (zh) | 2017-04-05 |
Family
ID=51638569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410315209.7A Active CN104090852B (zh) | 2014-07-03 | 2014-07-03 | 管理混合缓存的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090852B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572491A (zh) * | 2014-12-30 | 2015-04-29 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
CN104866433A (zh) * | 2015-05-31 | 2015-08-26 | 上海交通大学 | 基于历史信息的多级缓存方法 |
CN105892942A (zh) * | 2016-03-30 | 2016-08-24 | 中国联合网络通信集团有限公司 | 混合存储***的操作方法、控制器和电子设备 |
CN105975402A (zh) * | 2016-04-28 | 2016-09-28 | 华中科技大学 | 一种混合内存环境下淘汰数据感知的缓存方法与*** |
CN106250326A (zh) * | 2016-08-01 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于ssd的数据获取方法及*** |
CN107391398A (zh) * | 2016-05-16 | 2017-11-24 | 中国科学院微电子研究所 | 一种闪存缓存区的管理方法及*** |
CN107463509A (zh) * | 2016-06-05 | 2017-12-12 | 华为技术有限公司 | 缓存管理方法、缓存控制器以及计算机*** |
CN108139968A (zh) * | 2015-10-19 | 2018-06-08 | 华为技术有限公司 | 确定垃圾收集器线程数量及活动管理的方法及设备 |
CN108427647A (zh) * | 2017-02-15 | 2018-08-21 | 三星电子株式会社 | 读取数据的方法以及混合存储器模块 |
CN109032969A (zh) * | 2018-06-16 | 2018-12-18 | 温州职业技术学院 | 一种基于k值动态监测的lru-k算法的缓存方法 |
CN110232049A (zh) * | 2019-06-12 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 一种元数据缓存管理方法和装置 |
CN110249318A (zh) * | 2017-02-07 | 2019-09-17 | 华为技术有限公司 | 高速缓存替换***和方法 |
CN110968271A (zh) * | 2019-11-25 | 2020-04-07 | 北京劲群科技有限公司 | 一种高性能数据存储方法、***与装置 |
CN111309650A (zh) * | 2020-02-11 | 2020-06-19 | 广州市百果园信息技术有限公司 | 缓存控制方法、装置、存储介质及设备 |
CN112214420A (zh) * | 2015-12-01 | 2021-01-12 | 华为技术有限公司 | 数据缓存方法、存储控制装置、及存储设备 |
WO2021008301A1 (zh) * | 2019-07-17 | 2021-01-21 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031072A1 (en) * | 2007-07-25 | 2009-01-29 | Simtek | Hybrid nonvolatile RAM |
US20110153916A1 (en) * | 2009-12-23 | 2011-06-23 | Chinnaswamy Kumar K | Hybrid memory architectures |
CN102117248A (zh) * | 2011-03-09 | 2011-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种缓存***和在缓存***中缓存数据的方法 |
CN102779098A (zh) * | 2012-06-14 | 2012-11-14 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的协同式自适应预取方法、中间件和*** |
CN103631536A (zh) * | 2013-11-26 | 2014-03-12 | 华中科技大学 | 一种利用ssd的无效数据优化raid5/6写性能的方法 |
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存*** |
-
2014
- 2014-07-03 CN CN201410315209.7A patent/CN104090852B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090031072A1 (en) * | 2007-07-25 | 2009-01-29 | Simtek | Hybrid nonvolatile RAM |
US20110153916A1 (en) * | 2009-12-23 | 2011-06-23 | Chinnaswamy Kumar K | Hybrid memory architectures |
CN102117248A (zh) * | 2011-03-09 | 2011-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种缓存***和在缓存***中缓存数据的方法 |
CN102779098A (zh) * | 2012-06-14 | 2012-11-14 | 国家超级计算深圳中心(深圳云计算中心) | 混合缓存的协同式自适应预取方法、中间件和*** |
CN103631536A (zh) * | 2013-11-26 | 2014-03-12 | 华中科技大学 | 一种利用ssd的无效数据优化raid5/6写性能的方法 |
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存*** |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572491B (zh) * | 2014-12-30 | 2017-10-17 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
CN104572491A (zh) * | 2014-12-30 | 2015-04-29 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
US10133679B2 (en) | 2014-12-30 | 2018-11-20 | Huawei Technologies Co., Ltd. | Read cache management method and apparatus based on solid state drive |
CN104866433A (zh) * | 2015-05-31 | 2015-08-26 | 上海交通大学 | 基于历史信息的多级缓存方法 |
CN108139968B (zh) * | 2015-10-19 | 2020-12-04 | 华为技术有限公司 | 确定垃圾收集器线程数量及活动管理的方法及设备 |
US10802718B2 (en) | 2015-10-19 | 2020-10-13 | Huawei Technologies Co., Ltd. | Method and device for determination of garbage collector thread number and activity management in log-structured file systems |
CN108139968A (zh) * | 2015-10-19 | 2018-06-08 | 华为技术有限公司 | 确定垃圾收集器线程数量及活动管理的方法及设备 |
CN112231242A (zh) * | 2015-12-01 | 2021-01-15 | 华为技术有限公司 | 数据缓存方法、存储控制装置、及存储设备 |
CN112214420A (zh) * | 2015-12-01 | 2021-01-12 | 华为技术有限公司 | 数据缓存方法、存储控制装置、及存储设备 |
CN105892942A (zh) * | 2016-03-30 | 2016-08-24 | 中国联合网络通信集团有限公司 | 混合存储***的操作方法、控制器和电子设备 |
CN105892942B (zh) * | 2016-03-30 | 2019-03-05 | 中国联合网络通信集团有限公司 | 混合存储***的操作方法、控制器和电子设备 |
CN105975402A (zh) * | 2016-04-28 | 2016-09-28 | 华中科技大学 | 一种混合内存环境下淘汰数据感知的缓存方法与*** |
CN105975402B (zh) * | 2016-04-28 | 2019-01-18 | 华中科技大学 | 一种混合内存环境下淘汰数据感知的缓存方法与*** |
CN107391398A (zh) * | 2016-05-16 | 2017-11-24 | 中国科学院微电子研究所 | 一种闪存缓存区的管理方法及*** |
CN107391398B (zh) * | 2016-05-16 | 2020-04-14 | 中国科学院微电子研究所 | 一种闪存缓存区的管理方法及*** |
CN107463509A (zh) * | 2016-06-05 | 2017-12-12 | 华为技术有限公司 | 缓存管理方法、缓存控制器以及计算机*** |
CN107463509B (zh) * | 2016-06-05 | 2020-12-15 | 华为技术有限公司 | 缓存管理方法、缓存控制器以及计算机*** |
CN106250326A (zh) * | 2016-08-01 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于ssd的数据获取方法及*** |
CN106250326B (zh) * | 2016-08-01 | 2019-05-10 | 浪潮(北京)电子信息产业有限公司 | 一种基于ssd的数据获取方法及*** |
CN110249318A (zh) * | 2017-02-07 | 2019-09-17 | 华为技术有限公司 | 高速缓存替换***和方法 |
CN108427647B (zh) * | 2017-02-15 | 2023-08-08 | 三星电子株式会社 | 读取数据的方法以及混合存储器模块 |
CN108427647A (zh) * | 2017-02-15 | 2018-08-21 | 三星电子株式会社 | 读取数据的方法以及混合存储器模块 |
CN109032969A (zh) * | 2018-06-16 | 2018-12-18 | 温州职业技术学院 | 一种基于k值动态监测的lru-k算法的缓存方法 |
CN110232049A (zh) * | 2019-06-12 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 一种元数据缓存管理方法和装置 |
WO2021008301A1 (zh) * | 2019-07-17 | 2021-01-21 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
CN110968271A (zh) * | 2019-11-25 | 2020-04-07 | 北京劲群科技有限公司 | 一种高性能数据存储方法、***与装置 |
CN110968271B (zh) * | 2019-11-25 | 2024-02-20 | 北京劲群科技有限公司 | 一种高性能数据存储方法、***与装置 |
CN111309650A (zh) * | 2020-02-11 | 2020-06-19 | 广州市百果园信息技术有限公司 | 缓存控制方法、装置、存储介质及设备 |
CN111309650B (zh) * | 2020-02-11 | 2024-01-05 | 广州市百果园信息技术有限公司 | 缓存控制方法、装置、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104090852B (zh) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104090852A (zh) | 管理混合缓存的方法及设备 | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
KR101894625B1 (ko) | 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 | |
US8161240B2 (en) | Cache management | |
CN105930282B (zh) | 一种用于nand flash的数据缓存方法 | |
CN103440207A (zh) | 缓存方法及装置 | |
KR100577384B1 (ko) | 페이지 정보를 이용한 페이지 대체 방법 | |
CN103984736B (zh) | 一种高效的nand闪存数据库***的缓存管理方法 | |
JP6711121B2 (ja) | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
CN107391398B (zh) | 一种闪存缓存区的管理方法及*** | |
CN107247675B (zh) | 一种基于分类预测的缓存选择方法和*** | |
CN103136121A (zh) | 一种固态盘的缓存管理方法 | |
CN110888600B (zh) | 一种面向nand闪存的缓冲区管理方法 | |
CN106294197B (zh) | 一种面向nand闪存的页面置换方法 | |
US20140325161A1 (en) | Collaborative caching | |
CN110968269A (zh) | 基于scm与ssd的键值存储***及读写请求处理方法 | |
CN103858092A (zh) | 一种数据迁移方法和装置 | |
CN104077242A (zh) | 一种缓存管理方法和装置 | |
US11693570B2 (en) | Machine learning to improve caching efficiency in a storage system | |
KR20150004949A (ko) | 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 | |
CN104050057B (zh) | 一种历史感知的数据去重碎片消除方法与*** | |
CN103150245A (zh) | 确定数据实体的访问特性的方法和存储控制器 | |
CN111639037B (zh) | 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘 | |
JP5447523B2 (ja) | データ処理装置、データ記録方法、データ記録プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211221 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |