增强数据缓存性能转让专利

申请号 : CN201380022647.8

文献号 : CN104272275B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : J·S·海德S·罗伊

申请人 : 国际商业机器公司

摘要 :

针对多个频繁访问的数据段被临时存储在其中的高速缓存,结合最近最少使用(LRU)信息,使用多个数据段的引用计数信息来根据预定权重确定将多个数据段保持在高速缓存中的时间长度,其中不管LRU信息如何,多个数据段中的具有较高引用计数的那些数据段比具有较低引用计数的那些数据段被保持更长的时间。

权利要求 :

1.一种用于通过处理器改善计算环境中的缓存性能的方法,包括:

针对多个频繁访问的数据段被临时存储在其中的高速缓存,结合使用最近最少使用(LRU)信息,对于多个所述数据段中保持在所述高速缓存中的那些数据段,在去重复操作的同时获取和检查引用计数信息,其中所述引用计数信息是映射到物理存储的单个块上的虚拟存储的块的个数,使用所述多个数据段的所述引用计数信息以将所述多个数据段加入至所述高速缓存,并且使用所述引用计数信息、所述LRU信息、统计信息、和数据存储策略以根据与所述引用计数信息相关联的预定权重确定将所述多个数据段中的每个数据段保持在所述高速缓存中的时间长度,其中不管考虑所述LRU信息如何,所述多个数据段中的具有较高引用计数的那些数据段比具有较低引用计数的那些数据段被保持在所述高速缓存中更长的时间,确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新或者预定时间间隔是否期满,其中如果所述引用计数信息未被更新并且所述预定时间间隔未期满:则在第二预定时间间隔之后重新确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新并且所述预定时间间隔是否期满,在所述预定时间间隔的期满之后重新确定所述时间长度,其中所述预定权重根据所述预定时间间隔的经过而减小,以及基于所述引用计数信息,向所述高速缓存加入所述多个数据段的高速缓存部分或者从所述高速缓存中移除所述多个数据段的高速缓存部分。

2.根据权利要求1所述的方法,进一步包括从数据去重复引擎获得所述引用计数信息。

3.根据权利要求1所述的方法,其中确定将所述多个数据段保持在高速缓存中的所述时间长度包括实现与以下各项中的一项对应的至少一个策略:所述时间长度、所述多个数据段的至少一个数据段和所述预定权重。

4.根据权利要求1所述的方法,其中确定将所述多个数据段保持在高速缓存中的所述时间长度包括与所述确定近似同步地执行针对所述多个数据段中的被保持在所述高速缓存中的那些数据段的去重复操作。

5.一种用于改善计算环境中的缓存性能的系统,包括:

去重复引擎;

由所述去重复引擎处理的多个频繁访问的数据段;

被配置用于至少临时存储所述多个频繁访问的数据段的高速缓存;以及

与所述高速缓存可操作地通信的高速缓存管理模块;

其中结合使用最近最少使用(LRU)信息,所述高速缓存管理模块被配置为:

对于多个所述数据段中保持在所述高速缓存中的那些数据段,在去重复操作的同时获取和检查引用计数信息,其中所述引用计数信息是映射到物理存储的单个块上的虚拟存储的块的个数,使用所述多个数据段的所述引用计数信息以将所述多个数据段加入至所述高速缓存,并且使用所述引用计数信息、所述LRU信息、统计信息、和数据存储策略以根据与所述引用计数信息相关联的预定权重确定将所述多个数据段中的每个数据段保持在所述高速缓存中的时间长度,其中不管考虑所述LRU信息如何,所述多个数据段中的具有较高引用计数的那些数据段比具有较低引用计数的那些数据段被保持在所述高速缓存中更长的时间,确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新或者预定时间间隔是否期满,其中如果所述引用计数信息未被更新并且所述预定时间间隔未期满:则在第二预定时间间隔之后重新确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新并且所述预定时间间隔是否期满,在所述预定时间间隔的期满之后重新确定所述时间长度,其中所述预定权重根据所述预定时间间隔的经过而减小,以及基于所述引用计数信息,向所述高速缓存加入所述多个数据段的高速缓存部分或者从所述高速缓存中移除所述多个数据段的高速缓存部分。

6.根据权利要求5所述的系统,其中从所述去重复引擎获得所述引用计数信息。

7.根据权利要求5所述的系统,进一步包括与所述高速缓存管理模块可操作地通信的策略模块,其中所述策略模块被配置为,依据确定了将所述多个数据段保持在高速缓存中的所述时间长度,而实现与以下各项中的一项对应的至少一个策略:所述时间长度、所述多个数据段的至少一个和所述预定权重。

8.根据权利要求7所述的系统,其中所述策略模块进一步被配置用于选择可用于实现的多个策略中的一个。

9.根据权利要求8所述的系统,其中可用的所述多个策略中的每一个策略都与所述多个数据段中的预定数目的数据段和保持所述多个条目中的一些条目的预定时间中的至少一项对应。

10.根据权利要求5所述的系统,其中所述去重复引擎被配置为,结合确定将所述多个数据段保持在高速缓存中的所述时间长度,与所述确定近似同步地执行针对所述多个数据段中的被保持在所述高速缓存中的那些数据段的去重复操作。

11.一种用于通过处理器改善计算环境中的缓存性能的设备,包括:

用于针对多个频繁访问的数据段被临时存储在其中的高速缓存,结合使用最近最少使用(LRU)信息,对于多个所述数据段中保持在所述高速缓存中的那些数据段,在去重复操作的同时获取和检查引用计数信息,其中所述引用计数信息是映射到物理存储的单个块上的虚拟存储的块的个数,使用所述多个数据段的所述引用计数信息以将所述多个数据段加入至所述高速缓存,并且使用所述引用计数信息、所述LRU信息、统计信息、和数据存储策略以根据与所述引用计数信息相关联的预定权重确定将所述多个数据段中的每个数据段保持在所述高速缓存中的时间长度的装置,其中不管考虑所述LRU信息如何,所述多个数据段中的具有较高引用计数的那些数据段比具有较低引用计数的那些数据段被保持在所述高速缓存中更长的时间,确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新或者预定时间间隔是否期满,其中如果所述引用计数信息未被更新并且所述预定时间间隔未期满:则在第二预定时间间隔之后重新确定加入至所述高速缓存的所述多个数据段的所述引用计数信息是否已被更新并且所述预定时间间隔是否期满,在所述预定时间间隔的期满之后重新确定所述时间长度,其中所述预定权重根据所述预定时间间隔的经过而减小,以及基于所述引用计数信息,向所述高速缓存加入所述多个数据段的高速缓存部分或者从所述高速缓存中移除所述多个数据段的高速缓存部分。

12.根据权利要求11所述的设备,进一步包括用于从数据去重复引擎获得所述引用计数信息的装置。

13.根据权利要求11所述的设备,进一步包括用于依据确定了将所述多个数据段保持在高速缓存中的所述时间长度,而实现与下述各项中的一项对应的至少一个策略的装置:所述时间长度、所述多个数据段中的至少一个数据段和所述预定权重。

14.根据权利要求11所述的设备,进一步包括用于依据确定了将所述多个数据段保持在高速缓存中的所述时间长度,而与所述确定近似同步地执行针对所述多个数据段中的被保持在所述高速缓存中的那些数据段的去重复操作的装置。

说明书 :

增强数据缓存性能

技术领域

[0001] 本发明一般地涉及计算机,并且更具体地涉及用于增强计算存储环境中的数据缓存性能的方法、系统和计算机程序产品。

背景技术

[0002] 在当今社会中计算机和计算机系统在各种场景中被发现。在家中、在工作中、在学校中、在政府中以及在其它场景中都可以发现计算环境和网络。计算环境越来越多地将数据存储在一个或多个存储环境中,在许多情况下,存储环境远离呈现给用户的本地接口。
[0003] 这些计算存储环境可使用诸如磁盘驱动之类的、常常一致工作的许多存储设备以存储、检索和更新大量数据,然后可以将这些数据提供给请求或发送数据的主机计算机。在一些情况下,一些数据存储子系统被集体管理为单个数据存储系统。这些子系统可以通过组合若干处理单元或处理单元的集群的主机“sysplex”(系统综合体)配置来进行管理。用这种方式,常常包括多种类型的存储设备的多层/多系统计算环境可以用于组织和处理大量数据。

发明内容

[0004] 许多多层/多系统计算环境实现数据去重复技术,以通过减少跨存储设备的重复存储的量来改善存储性能。数据去重复系统越来越多地被利用,因为它们有助于减少存储数据所要求的物理存储的总量。这种减小是通过确保重复数据不被存储多次来实现的。替代地,例如,如果数据块与已存储的数据块匹配,则指向原始数据的指针被存储在虚拟存储映射中,而不是为新数据块分配新物理存储空间。因此,数据去重系统中的每个数据块与指示多少虚拟映射元素指向给定数据块的“引用计数器”关联。
[0005] 内联(inline)数据去重复系统必须将前面提到的虚拟存储映射信息(包括引用计数器信息)保持在存储器中,以用于快速访问数据。否则,在从物理存储取得映射信息时,引起额外的映射错误损失,从而显著增加存储延迟。这些存储映射信息是容易得到的,以用于由存储控制器内的其它存储部件使用。
[0006] 传统的数据缓存算法(指示频繁使用的文件被保持在高速缓存中而不是被调出(page out)到磁盘多长时间的机制)可以实现所谓的“最近最少使用”(LRU)方法,其中最近最少使用的文件被首先丢弃(调出)。这些方法要求跟踪什么时候什么被使用,如果人们希望确保算法总是丢弃最近最少使用的项,这可能是大量占用资源的,并且这可能仍然不总是准确地表示在特定集合的情况下在高速缓存中保持的最佳文件以及哪些文件被保持。存在对频繁使用的数据段的高速缓存管理的更有效的方式的需要。
[0007] 鉴于前述需要以更好地管理这些数据的缓存,提供了用于通过处理器改善计算环境中的缓存性能的各种实施例。在一个实施例中,仅通过示例的方式,对于多个频繁访问的数据段被临时存储在其中的高速缓存,多个数据段的引用计数信息连同最近最少使用(LRU)信息一起被用于根据预定权重确定在高速缓存中保持多个数据段的时间长度,其中不管LRU信息如何,多个数据段中的具有较高引用计数的那些数据段比具有较低引用计数的那些数据段被保持更长的时间。
[0008] 除了前述示例性实施例之外,提供了各种系统和计算机程序实施例,并且提供了相关优点。

附图说明

[0009] 为了使本发明的优点容易地被理解,将参照图示在附图中的特定实施例给出上面简要描述的本发明的更具体的描述。理解了这些附图仅描绘了本发明的典型实施例并且因此不被认为是对其范围的限制,将通过使用附图来更具体和更详细地描述和解释本发明,其中:
[0010] 图1是图示可以实现本发明的方面的示例性计算环境的框图;
[0011] 图2是示出数据存储系统的硬件结构的框图,再次本发明的方面可以被实现在其中;
[0012] 图3是图示用于改善缓存性能的高速缓存管理模块与数据去重复系统之间的关系的本发明的高速缓存系统实施例的框图;
[0013] 图4是用于增强数据缓存性能、本发明的方面可以被实现在其中的示例性实施例的流程图;
[0014] 图5是用于增强数据缓存性能的另外的示例性实施例的流程图,再次本发明的方面可以被实现在其中;以及
[0015] 图6是用于数据段的缓存管理的示例性实施例的流程图,再次本发明的方面可以被实现在其中。

具体实施方式

[0016] 如先前提到的,各种数据缓存算法实现LRU方法的各种方案,其中被标识为最近最少使用的文件被标记以从高速缓存中调出到硬存储(例如,磁盘或磁带)。然而,在具有数据去重复功能的数据存储环境(诸如,集成的数据去重复引擎)中,每个基于LRU的方法均没有考虑容易得到的引用计数信息,引用计数信息指示(除其他外)指向给定的物理存储的数据块的数据块的虚拟实例的数目。
[0017] 最高效的数据缓存算法将总是丢弃未来将不再需要的时间最长的信息。传统的数据缓存算法试图达到这个理想化的状态,但总是达不到。因此,总是存在对改善信息被保持在高速缓存中或被丢弃的机制的当前需要。为了解决和改善现有技术的当前状态,所示的实施例描述了如下机制:利用先前描述为由数据去重复子系统提供的引用计数信息,以通过至少部分地向这些算法给予关于高速缓存中的数据状态的更好描绘来增强(例如,在结合LRU信息使用时)数据缓存算法,并且由此改善存储环境的整体性能。
[0018] 并入数据去重复功能的存储系统实现针对每段数据的引用计数,其指示例如多少段虚拟存储映射到物理存储的单个段上。引用计数信息一般是容易得到的,因此引用计数功能被发现在大多数(如果不是全部)内联数据去重复系统中。通过改善在以数据去重复子系统为特征的存储配置中的数据块的缓存性能,总体上可以大幅降低存储环境中的输入/输出(I/O)操作的平均延迟。
[0019] 在以下描述中,参照形成其一部分并且图示本发明的若干实施例的附图。要理解的是,在不脱离本发明的范围的情况下,可以利用其它实施例并且可以做出结构和操作上的改变。
[0020] 转到图1,描绘了本发明的方面可以被实现在其中的示例计算机系统10。计算机系统10包括连接到大容量存储设备14和存储器设备16的中央处理单元(CPU)12。大容量存储设备可以包括硬盘驱动(HDD)设备,其可以被配置在独立盘冗余阵列(RAID)中。进一步描述的高速缓存管理操作可以在位于系统10或其它地方的设备14上执行。存储器设备16可以包括诸如电可擦除可编程只读存储器(EEPROM)这样的存储器或许多相关设备。存储器设备16和大容量存储设备14经由信号承载介质连接到CPU 12。此外,CPU 12通过通信端口18连接到具有附接的多个另外的计算机系统22和24的通信网络20。计算机系统10可以包括一个或多个处理器设备(例如CPU 12)和针对计算机系统10的每个单独部件的另外的存储器设备16以执行并完成本文中描述的每个操作以实现本发明的目的。
[0021] 图2是示出根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。各自充当用于执行数据处理的中央处理单元的主机计算机210、220、225被示出为数据存储系统200的一部分。主机(物理或虚拟设备)210、220和225可以是一个或多个新物理设备或逻辑设备,以在数据存储系统200中实现本发明的目的。在一个实施例中,仅通过示例的方式,数据存储系统200可以被实现为 System StorageTMDS8000TM。网络连接260可以是光纤通道结构(fabric)、光纤通道点到点链路、通过以太网结构的光纤通道或点到点链路、FICON或ESCON I/O接口、任何其它I/O接口类型、无线网络、有线网络、LAN、WAN、异构的、同构的、公共的(即因特网)、私有的或它们的任意组合。主机210、220和225可以是本地的或者分布在一个或多个位置之间,并且可以配备有到存储控制器240的任何类型的结构(或结构通道)(图2中未示出)或者网络适配器260,诸如光纤通道、FICON、ESCON、以太网、光纤、无线或同轴适配器。据此数据存储系统200配备有合适的结构(图2中未示出)或者网络适配器260以进行通信。在图2中描绘的数据存储系统200包括存储控制器240和存储装置
230。
[0022] 为了便于更清楚地理解本文中描述的方法,在图2中存储控制器240被示出为包括微处理器242、系统存储器243和非易失性存储(“NVS”)216的单个处理单元,这将在下面更详细地描述。要注意的是,在一些实施例中,存储控制器240包括多个处理单元,每个处理单元具有其自己的处理器综合体和系统存储器,并且通过数据存储系统200内的专用网络互连。存储装置230可以包括诸如存储阵列之类的、通过存储网络连接到存储控制器240的一个或多个存储设备。
[0023] 在一些实施例中,被包括在存储装置230中的设备可以以环架构连接。存储控制器240管理存储装置230,并且有助于处理旨在针对存储230的写请求和读请求。存储控制器
240的系统存储器243存储处理器242可以访问以用于执行与管理存储装置230关联的功能的程序指令和数据。在一个实施例中,系统存储器243包括操作软件250、与之关联或通信,并且部分地被配置用于实现本发明的功能。如在图2中示出的,系统存储器243还可以包括针对存储装置230的高速缓存245(本文中还被称为“高速缓存存储器”)或者与之通信,以用于缓冲分别指的是写/读请求及它们关联的数据的“写数据”和“读数据”。在一个实施例中,高速缓存245被分配在系统存储器243外部的设备中,但依然可由微处理器242访问并且除了执行如在本文中描述的操作之外,可以用于提供防止数据丢失的另外的安全性。
[0024] 在一些实施例中,高速缓存245是通过易失性存储器和非易失性存储器实现的,并且经由本地总线(图2中未示出)耦合到微处理器242,以用于增强数据存储系统200的性能。被包括在数据存储控制器中的NVS 216可由微处理器242访问,并且用于为如在其它图中描述的本发明的操作和执行提供另外的支持。NVS 216还可以被称为“永久”高速缓存或者“高速缓存存储器”,并且通过其可以或可以不利用外部电源来保持存储在其中的数据的非易失性存储器来实现。NVS可以被存储在高速缓存245中且利用高速缓存245来存储,以用于适合于实现本发明的目标的任何目的。在一些实施例中,在数据存储系统200有功率损失的情况下,诸如电池之类的备用电源(图2中未示出)向NVS 216供应足够的功率,以保持存储在其中的数据。在某些实施例中,NVS 216的容量小于或等于高速缓存245的总容量。
[0025] 存储装置230物理上可以包括诸如存储阵列之类的一个或多个存储设备。存储阵列是诸如硬盘之类的单独存储设备的逻辑分组。在某些实施例中,存储装置230包括JBOD(简单磁盘捆绑)阵列或RAID(独立盘冗余阵列)阵列。物理存储阵列的集合可以被进一步组合以形成级(rank),其从逻辑配置中解离物理存储。级中的存储空间可被分配成定义写/读请求中指定的存储位置的逻辑卷。
[0026] 在一个实施例中,仅通过示例的方式,如图2中示出的存储系统可以包括逻辑卷,或者简单地,“卷”可以具有不同种类的分配。在数据存储系统200中存储装置230a、230b和230n被示为级,并且本文中被称为级230a、230b和230n。级可以对于数据存储系统200是本地的,或者可以位于物理上的远程位置。换言之,本地存储控制器可以与远程存储控制器连接,并且管理在远程位置处的存储。级230a被示出为配置有两个整卷(234和236)以及一个部分卷232a。级230b被示出为具有另一个部分卷232b。从而卷232跨级230a和230b被分配。
级230n被示为完全分配给卷238—也就是说,级230n指的是针对卷238的整个物理存储。根据上面的示例,将理解的是,级可以被配置为包括一个或多个部分卷和/或整卷。卷和级可以进一步被划分成所谓的“轨道”,其表示固定的存储块。因此,轨道与给定的卷关联,并且可以被给予给定的级。
[0027] 如将进一步描述的,存储控制器240可以包括数据去重复引擎255、高速缓存管理模块257和存储映射/数据频率索引映射(DFIM)259。高速缓存管理模块257可以与存储控制器240的每一个部件、主机210、220、225以及存储设备230协同工作。如本领域普通技术人员将理解的,高速缓存管理模块257在结构上可以是一个完整的模块,或者可以与其它单独模块关联和/或被包括在其它单独模块中。高速缓存管理模块257和/或存储映射/DFIM 259还可以位于高速缓存245或其它部件中。高速缓存245被示出为包括许多频繁使用的数据段261,其被保持在高速缓存中以用于快速访问并且对其管理由高速缓存管理模块257以及其他部件来执行。
[0028] 存储控制器240包括用于控制光纤通道协议到主机计算机210、220、225的控制开关241、用于控制所有存储控制器240的微处理器242、用于存储用于控制存储控制器240的操作的微程序(操作软件)250、用于控制的数据和随后描述的每个表的非易失性控制存储器243、用于临时存储(缓冲)数据的高速缓存245以及用于辅助高速缓存245读取和写入数据的缓冲器244、用于控制协议的控制开关241以控制向或从存储设备230转移数据、以及信息可被设置在其中的压缩操作模块255和压缩操作列表模块257。通过本发明可以实现多个缓冲器244以协助如本文中描述的操作。
[0029] 在一个实施例中,主机计算机或一个或多个物理或虚拟设备210、220、225以及存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260(即经由称为“结构”的至少一个开关)连接。在一个实施例中,将描述在图2中示出的系统的操作。微处理器242可以控制存储器243,以存储来自主机设备(物理或虚拟)210的命令信息和用于标识主机设备(物理或虚拟)210的信息。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS 216、压缩操作模块255和压缩操作列表模块257彼此通信,并且可以是分离的或者是一个单独的部件。同时,诸如操作软件250之类的若干(如果不是所有)部件可以被包括在存储器243中。为了适合于本发明的目的,所示设备内的每个部件均可以被链接在一起,并且可以彼此通信。
[0030] 存储控制器240被示出为包括数据去重复引擎255、存储映射/数据频率索引映射(DFIM)259(“存储映射”259)以及高速缓存管理模块257。数据去重复引擎255、高速缓存管理模块257和DFIM259可以与存储控制器240的每一个部件、主机210、220、225以及存储设备230协同操作,以实现根据本发明的功能。数据去重复引擎255、高速缓存管理模块257和DFIM 259在构造上可以是一个完整的模块,或者可以与其它单独模块关联和/或并入其它单独模块中。高速缓存管理模块257和DFIM 259还可以并入高速缓存245或其它部件。
[0031] 结合诸如微处理器242之类的存储控制器240的其它部件,数据去重复引擎255被配置用于执行对通过存储控制器240传送到存储装置230的写数据的数据去重复操作。
[0032] 如先前指出的,存储控制器240包括数据频率索引映射(DFIM)259或者简称为存储映射259。高速缓存245(或者可被整体地称为高速缓存系统245,其可以并入高速缓存管理模块257、存储映射259或者甚至数据去重复引擎255)接受来自主机210、220和225或者类似设备的写数据,然后写数据被放置在高速缓存存储器245中。然后,数据去重复引擎255针对高速缓存存储器245中的重复测试写数据,并且将针对高速缓存存储器245中的重复的索引和频率写在存储映射259中。
[0033] 现在转到图3,本发明的各种功能方面的框图被描绘为示例性流程。具体地,高速缓存系统245被示为接受写数据302,以通过数据去重复引擎255处理为针对高速缓存245的写操作304。因为写数据302是通过数据去重复引擎255处理的,并且如先前描述的,针对与现有存储的重复测试写数据302,并且去重复引擎255将频率和索引信息306传送到存储/数据频率索引映射(DFIM)259。如在图3中示出的并入数据去重复功能的存储系统包括针对每个数据块的引用计数,除了其它指示,其指示虚拟存储的多少个块映射到物理存储的单个块上。
[0034] 当数据从高速缓存245被读出308时,存储映射259被更新。包含在存储映射259中的信息(包括引用计数信息310)被提供给高速缓存管理模块260,其还处于高速缓存245与存储控制器240(图2)之间的双向通信314中,并且由此作为读数据312被提供给主机210、220和225。根据本发明的方面,如将进一步说明的,至少部分地基于这样的活动,高速缓存管理模块260可以确定写数据302的哪些部分要被放置在高速缓存系统245中以及多长时间合适。
[0035] 现在转到图4,用于改善存储环境中的高速缓存性能的方法的流程图被示出在一个示例性实施例中。方法400开始(步骤402),通过使用前面提到的引用计数信息连同LRU信息(以及,在其它实施例中,对于本领域普通技术人员来说显而易见的其它统计信息)以确定将具体的频繁访问的数据段261(图2)保持在高速缓存245中适当长度的时间(步骤404)。方法400结束(步骤406)。
[0036] 接着,图5是在进一步的示例性实施例中用于实现诸如先前在图4中示出的这样的对引用计数信息利用的方法的流程图。这里,方法500开始(步骤502),通过在如先前描述的去重复操作的过程中检查从去重复引擎获得的引用计数数据(步骤504)。在一个实施例中,针对特定数据块的引用计数信息可以与针对该所选数据块的去重复操作的执行近似同步地被获得/检查。基于引用计数信息(和/或通过特定存储策略的实施),建立针对高速缓存中的特定段或者许多段的保持持续时间(步骤506)。这里再次,在一个实施例中,引用计数信息的获得、引用计数信息的更新、引用计数信息的检查和/或引用计数信息的分析来确定特定的保持持续时间可以与前面提到的去重复操作的执行近似同步地发生。
[0037] 继续图5,然后方法500询问是否针对引用的数据段的引用计数信息已经被更新(例如,依据去重复操作递增),或者例如是否预定时间间隔已经到期(步骤508)。如果是这种情况,先前在步骤506中建立的保持持续时间被重新访问,以重新确定在高速缓存中的新的适当的保持持续时间(步骤510)。在一个实施例中,这可以通过最初为关联到引用计数信息的数据段分配预定权重来执行,在预定时间段的期满之后,如果引用计数信息不递增,那么权重减小。除了其它考虑,分配权重旨在于允许具有高引用计数的那些数据段最终从高速缓存中被丢弃,即使数据段长时间不被访问。
[0038] 返回到步骤508,如果引用计数信息未被更新或者预定时间间隔没有期满,随着时间的经过,方法500返回到步骤508,以再次询问是否已经满足这些条件的任一个或两者。
[0039] 如本领域普通技术人员将理解的,各种各样的存储策略(例如,其可以通过管理员/用户的辅助来建立)可以被拿来以基于针对该条目或条目集的当前的引用计数信息,承担是否特定段或数据集应当被保持一定的持续时间。因为针对给定的数据段,引用计数信息指示正被访问的特定条目的可能性,该相同信息可以由这些策略或者映射缓存机制中的其它方式(诸如可以由先前描述的高速缓存管理模块实现的映射缓存算法)智能地使用,以便确定存储在存储映射中的应当从高速缓存存储器调出的那些候选条目。
[0040] 鉴于前述情况,考虑以下示例。十个(10)映射表条目(数据段)被建立作为候选以被调出。那十个映射表条目中,包含较高引用计数的那些(在一个实施例中,针对所有数据段一起)将比具有较低引用计数的那些更晚地被调出。以这种方式,在预期它们将再次被重新使用的情况下,具有对应较高引用计数的存储映射部分被保持得更长,并且在这种情况发生时,将在高速缓存中找到特定条目以用于快速访问。
[0041] 接着,图6图示了用于使用引用计数值管理数据在高速缓存中的保持的示例性方法的流程图,本发明的方面可以被实现在其中。方法600开始(步骤602),并且询问关于是否高速缓存是满的,并且不管是否要从磁盘取得新数据段的这一事实(由此要求调出其他映射条目)(步骤604)。如果是这种情况,数据段被集体检查,以确定这些段中的哪些要从高速缓存中调出(步骤606)。作为该检查过程的一部分,方法600然后询问是否特定经检查的条目具有高的(例如在一个实施例中,高于由策略设置的特定阈值)引用计数值,或/和具有或/和继续具有对应重的分配权重(步骤608)。如果是这种情况,条目被保持在高速缓存中(步骤610)。如果条目被确定为不具有在预定义阈值之上的高的值和/或权重,则指定该数据段从高速缓存中调出(步骤612)并且新的段可以被调入高速缓存在其位置中。然后,方法600继续/返回到如先前描述的步骤604。
[0042] 所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“模块”、“流程”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0043] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0044] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0045] 下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0046] 这些计算机程序指令还可以被存储在可以引导计算机、其它可编程数据处理装置或者其它设备以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图框或多个框中指定的功能/动作的指令的制造品件。计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或者其它设备上,以使得在计算机、其它可编程数据处理装置或者其它设备上完成一系列操作步骤,以产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图框或多个框中指定的功能/动作的过程。
[0047] 上面附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0048] 虽然已经详细说明了本发明的一个或多个实施例,本领域普通技术人员将理解,可以做出对那些实施例的修改和改写,而不脱离如在所附权利要求中阐述的本发明的范围。