CN102722448A - 管理高速存储器的方法和装置 - Google Patents
管理高速存储器的方法和装置 Download PDFInfo
- Publication number
- CN102722448A CN102722448A CN2011100797284A CN201110079728A CN102722448A CN 102722448 A CN102722448 A CN 102722448A CN 2011100797284 A CN2011100797284 A CN 2011100797284A CN 201110079728 A CN201110079728 A CN 201110079728A CN 102722448 A CN102722448 A CN 102722448A
- Authority
- CN
- China
- Prior art keywords
- index
- response time
- loss
- sampling period
- predicted value
- 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
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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种管理高速存储器的方法,其中用索引条目指示高速存储器存储单元,并为不同类型的低速存储器设置对应的非空闲索引,通过在非空闲索引中包括索引条目来将所指示的高速存储器存储单元分配给对应的低速存储器,通过从非空闲索引中逐出该索引条目来回收该高速存储器存储单元,该方法包括:响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;从所述逐出索引中选择索引条目进行逐出操作。该方法改进了逐出操作的合理性,提升了***的整体性能。
Description
技术领域
本发明涉及数据存储技术,更具体地说,涉及用于管理高速存储器的方法和装置。
背景技术
一般的存储***由处理器、高速存储器和低速存储器构成。由于处理器访问高速存储器的响应时间远小于访问低速存储器的响应时间,因此在高速存储器中存储低速处理器中被频繁访问的数据的副本会大大提高访问的速度。另一方面,高速缓存的数据容量大大小于低速存储器的数据容量,因此需要一定的控制机制来确保高速缓存中只存储最可能被频繁访问的数据。例如,根据一种称为最近最少使用(LRU,Least Recently Used)算法的控制机制,对于在高速存储器中但最近又不用的数据,将其逐出(demote)高速存储器而腾出空间来加载另外的数据。本领域技术人员可以理解,这里的高速存储器和低速存储器是相对的概念,例如就内存和硬盘而言,内存是高速存储器而硬盘是低速存储器,而就高速缓存(cache)和内存而言,高速缓存是高速存储器而内存是低速存储器。
当存储***中存在不同类型的低速存储器时,如果在实施LRU算法时不考虑低速存储器的差异,可能会带来整体性能的降低。假设存储***中存在响应时间不同的第一类型低速存储器和第二类型低速存储器的情况。所述第一类型低速存储器例如硬盘驱动器HDD,所述第二类型低速存储器例如固态硬盘SSD。一般来说,SSD比HDD具有更高的IO速率或IO密度,导致从统计意义上来看,高速存储器中一份来自SSD的数据在单位时间内被访问的次数大于高速存储器中一份来自HDD的数据在单位时间内被访问的次数。根据LRU算法,高速存储器中将更多地存储来自SSD的数据。但是,SSD的响应时间小于HDD的响应时间,将HDD的数据存储在高速存储器中才能带来更多性能上的提升。例如,如果一份数据没有存储在高速存储器中,那么直接从一个每分钟转速15000的HDD中读取该数据需要的平均响应时间是10毫秒,而从一个SSD中直接读取该数据需要的平均响应时间小于1毫秒。
因此,需要有一种在混合(Hybrid)低速存储器的***中管理高速存储器的方案,从而优化***的整体性能。
发明内容
本发明实施例提供了用于管理高速存储器的方法和设备。
根据本发明实施例的一种用于管理高速存储器的方法,其中用索引条目指示高速存储器存储单元,并且为不同类型的低速存储器设置对应的非空闲索引,通过在非空闲索引中包括索引条目来将所指示的高速存储器存储单元分配给对应的低速存储器,通过从非空闲索引中逐出该索引条目来回收该高速存储器存储单元,该方法包括:响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;从所述逐出索引中选择索引条目进行逐出操作。
根据本发明实施例的一种用于管理高速存储器的装置,其中用索引条目指示高速存储器存储单元,并且为不同类型的低速存储器设置对应的非空闲索引,通过在非空闲索引中包括索引条目来将所指示的高速存储器存储单元分配给对应的低速存储器,通过从非空闲索引中逐出该索引条目来回收该高速存储器存储单元,该装置包括:边际性能损失获取模块,配置为响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;逐出索引选择模块,配置为通过比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;逐出操作执行模块,配置为从所述逐出索引中选择索引条目进行逐出操作。
根据本发明实施例提供的技术方案,根据所能带来的性能提升来管理高速存储器,从而可以在具有混合低速存储器的***中提高***的整体性能。
附图说明
图1是混合低速存储器的***中高速存储器索引的示意图。
图2是根据本发明实施例的用于管理高速存储器的方法的流程图。
图3是根据本发明实施例的用于管理高速存储器的装置的框图。
具体实施方式
以下参照按照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,本技术领域技术人员容易理解,本发明的实现可不具有这些具体细节中的一些,并且本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。此外,除非刻意地使用“直接”或者“间接”加以限定,否则本申请文件中的连接既包括直接连接,也包括间接地连接。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
参照图1,图1是混合低速存储器的***中高速存储器索引的示意图。为了方便起见,本说明书中以HDD和SSD为例说明根据本发明实施例的方案,但本领域技术人员可以容易地将这一方案应用到其他混合低速存储器的***中。
虽然在本申请文件中主要以两种不同类型的低速存储器为例说明了根据本发明实施例的方案,但是本领域技术人员可以容易地将这一方案扩展到三种或三种以上低速存储器的场合。这里所说的两种不同类型既可能是低速存储器本身的物理特性不同,也可能是低速存储器的工作负载不同。例如对于响应时间这一指标而言,HDD和SSD由于物理特性而具有不同的响应时间。另一方面,即使是对于两台同样型号的HDD设备,如果其中一台的工作负载可能是另一台的好几倍,那么它们在响应时间上也会体现出较大的差别。
在图1中,包括两类索引,即非空闲索引和空闲索引。索引中的每个索引条目指示高速存储器中的一个存储单元。所述索引可以包括与所述存储单元对应的指针、或页标识符、或散列值,等等。由于索引条目和高速存储器中的存储单元存在对应的关系,因此在本申请文件中,有时也用索引条目指代其所指示的高速存储器中的存储单元。
当需要将低速存储器中的一份新的数据引入(promotion)高速存储器中时,空闲索引中的一个索引条目被移动到非空闲索引中,即通过在非空闲索引中包括索引条目来将所指示的高速存储器存储单元分配给对应的低速存储器;反之,在逐出(demotion)操作中,非空闲索引中的一个索引条目被移动到空闲索引中,从而回收所指示的高速存储器存储单元。在当前的例子中,由于存在两种不同类型的低速存储器,因此设置有两个非空闲索引即HDDindex和SSDindex。其中HDDindex中的每个索引条目指示高速存储器中存储有来自HDD的数据的存储单元,SSDindex中的每个索引条目指示高速存储器中存储有来自SSD的数据的存储单元。Uindex是空闲索引,其中的每个索引条目指示高速存储器中空闲的存储单元。
如前所述,如果分配给HDD和SSD的高速存储器存储单元对应的索引条目都放在同一个非空闲索引中,那么就会出现不停地将高速存储器的存储单元分配给SSD而不分配给HDD,从而影响***的整体性能。因此,在本发明实施例中,分别为HDD和SSD设置对应的非空闲索引。
本领域技术人员容易地设计出各种索引条目在非空闲索引中排序的方式。但是在LRU算法中,为了方便起见,非空闲索引中的索引条目通常按照其对应高速存储器存储单元被访问的时间先后排序的。LRU的基本思想是,如果非空闲索引中的一个索引条目对应的高速存储器存储单元被访问,则将该索引条目移到该非空闲索引的最前端。在需要进行逐出操作时,选择非空闲索引中最靠后的一个或多个索引条目移入空闲索引中。
在有HDD和SSD构成的混合低速存储器的***中,需要进一步确定是从HDDindex还是从SSDindex移出索引条目。如前所述,需要避免总是从HDDindex中移出索引条目的情况。
下面参照图2描述根据本发明实施例的分配高速存储器的方法。
步骤201,响应于收到逐出请求,获取与各非空闲索引对应的边际(margin)性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的响应时间变化。
对非空闲索引进行逐出操作所引起的响应时间变化取决于两个因素,一个因素是非空闲索引对应的边际命中率损失,另一个是非空闲索引所对应的低速存储器的综合响应时间。可以以下面的公式计算非空闲索引的边际性能损失:
Mt=RTt×CHt,t∈{hdd,ssd}
其中,M表示边际性能损失,RT表示综合响应时间,CH表示边际命中率损失。
命中指的是处理器在需要对某外部数据进行随机读操作时,发现高速存储器中已经存储有该外部数据的副本,从而直接访问高速存储器中的存储单元,而不用再访问低速存储器。
命中率指的是单位时间内命中的次数,命中率取决于分配给该低速存储器的高速存储器存储单元的数目,即对应的非空闲索引中索引条目的数目,还取决于单位时间内处理器需要访问外部数据的次数。可以理解,在单位时间内处理器需要访问外部数据的次数一定的情况下,分配给该低速存储器的高速存储器存储单元的数目,其所存储的副本量就越多,从而命中率就越高。极端的情况是,如果低速存储器中的所有外部数据都在高速存储器中有对应的副本,那么处理器每次需要访问外部数据时都只访问高速存储器,从而命中率只取决于单位时间内处理器需要访问外部数据的次数。
边际命中率损失的物理意义是:从已经分配给低速存储器的高速存储器存储单元中减少一个存储单元所降低的命中率。换句话说,边际命中率损失表示在与该低速存储器对应的非空闲索引中进行逐出操作引起的命中率降低。容易理解,已经分配给低速存储器的高速存储器存储单元数目越大,边际命中率损失的值越小。极端情况是,如果已经分配给低速存储器的高速存储器存储单元数目大于低速存储器中的外部数据的总量,那么即使从已经分配给低速存储器的高速存储器存储单元中减少一个存储单元也不会引起命中率的降低。
本领域技术人员容易理解,在非空闲索引所对应的低速存储器的综合响应时间一定的情况下,边际命中率损失越大,则边际性能损失越大。因此,在各非空闲索引对应的低速存储器的综合响应时间近似的情况下,也可以以边际命中率损失本身作为边际性能损失。
由边际性能损失的计算公式可以看出,边际性能损失的物理意义是:由于对非空闲索引进行逐出操作,导致命中率降低;处理器在访问某些外部数据时本来只需要访问高速存储器,却由于命中率降低而访问了低速存储器,从而导致处理器访问外部数据的读操作时间变长。如果对空闲索引进行逐出操作导致命中率显著降低,或者处理器访问低速存储器所增加的显著变长,那么***整体的性能就会显著降低。
步骤202,比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引。
如前所述,边际性能损失的物理意义是对非空闲索引进行逐出操作所增加的访问外部数据的读操作时间。在得到各非空闲索引的边际性能损失后,可以选取边际性能损失符合逐出条件的非空闲索引作为逐出索引。如果某非空闲索引的边际性能损失的值低于边际性能损失阈值,或者某非空闲索引的边际性能损失比其他的空闲索引的边际性能损失小,则可以将该非空闲索引作为逐出索引。
步骤203,从所述逐出索引中选择索引条目进行逐出操作。
从逐出索引中选择索引条目进行逐出操作,则该索引条目进入空闲索引。也就是说,该索引条目所指示的高速存储器存储单元将会被释放,从而可以用来在需要的时候存储其他数据的副本。如何从非空闲索引中选择索引条目进行逐出操作是本领域通常的技术手段,在此不再赘述。
由步骤201到203可见,根据本发明实施例的方法,在进行逐出操作时,考虑对哪个非空闲索引进行逐出操作对处理器访问外部数据的读操作时间的影响最小。例如对于包括SSD设备和HDD设备的混合低速存储器的场合,假设直接从一个每分钟转速15000的HDD中读取该数据需要的综合响应时间是10毫秒,而从一个SSD中直接读取该数据需要的综合响应时间是1毫秒。虽然SSDindex中的索引条目对应的命中率大于HDDindex中的索引条目对应的命中率,但是如果SSDindex对应的边际命中率损失没有达到HDDindex对应的边际命中率损失的10倍,还是应该对SSDindex进行逐出操作。如前所述,从理论上说,已经分配给低速存储器的高速存储器存储单元数目越大,边际命中率损失的值越小,即同一个非空闲索引对应的边际命中率损失也是与该非空闲索引当前的长度相关的。这导致同一个非空闲索引在长度较长的时候比长度较短的时候有更大的机会被选择为逐出索引,这也与通常认识相符。
下面描述如何计算边际命中率损失CH和综合响应时间RT。边际命中率损失和综合响应时间都是相对于一个非空闲索引的概念。在混合低速存储器的场合下,需要分别针对HDDindex和SSDindex计算对应的边际命中率损失和综合响应时间。以下以计算SSDindex对应的边际命中率损失和综合响应时间为例进行说明。
计算边际命中率损失CH有很多方法,比如可以通过实验的方法。具体而言,首先统计单位时间内处理器需要访问外部数据的次数的平均值,然后在这样的平均值下,记录通过减少分配给低速处理器的一个高速存储器存储单元所引起的命中率的降低。如前所述,边际命中率损失与已经分配给低速存储器的高速存储器存储单元数目有关,因此所述实验需要针对已经分配给低速存储器的高速存储器存储单元数目的不同情况分别进行。
根据本发明的一个实施例,可以利用LRU算法的特点来获取边际命中率损失。如前所述,LRU算法的基本思想是,如果SSDindex中的一个索引条目对应的高速存储器存储单元被访问,则将该索引条目移到SSDindex的最前端。因此,从统计学角度来说,SSDindex最后的索引条目所对应的高速存储器存储单元,是分配给HDD的高速存储器存储单元中单位时间内命中次数最少的存储单元,或者说命中率最低的存储单元。可以将该索引条目对应的高速存储器存储单元的命中率作为边际命中率损失。下面解释为什么可以将该命中率作为边际命中率损失。首先,该命中率的值表示如果没有该存储单元的情况下命中率的降低,这符合边际命中率损失的定义。其次,如前所述,已经分配给低速存储器的高速存储器存储单元数目越大,边际命中率损失的值越小。因此取SSDindex中各索引条目所对应的命中率中的最小值作为边际命中率损失也符合实际情况。
这种方法的优点首先是可以动态地获取边际命中率损失。由于单位时间内处理器需要访问外部数据的次数可能随时间有较大变化,因此用静态的平均值可能不够精确。此外,这种方法还不用针对已经分配给低速存储器的高速存储器存储单元数目的不同情况分别进行实验。
在实际操作中,在前一个采样周期中排在SSDindex最后的索引条目,在后一个采样周期中可能会由于对应的高速存储器存储单元被访问而被移到SSDindex的最前端。为了在后一个采样周期中也有较多的历史数据来计算排在SSDindex最后的索引条目对应的命中率,可以记录排在SSDindex最后的多个索引条目所对应的高速存储器存储单元被访问的次数。这样,当排在SSDindex最后的一个索引条目被移到SSDindex之后,仍然可以比较准确地计算出排在SSDindex倒数第二的索引条目所对应的命中率。
按照本实施例的方法,直接计算出从已经分配给低速存储器的高速存储器存储单元中减少一个存储单元所减少的命中率,将其作为边际命中率损失。如前所述,边际命中率损失用来计算边际性能损失,而边际性能损失是用于判断从哪个非空闲索引进行逐出操作。因此根据本实施例的方法能够精确地体现边际命中率损失的物理含义。
边际命中率损失是连续变化的量。因此,在向低速存储器已经分配了一定数量的高速存储器存储单元的情况下的边际命中率增益,与该情况下的边际命中率损失应该近似。边际命中率增益指的是再向低速存储器多分配高速存储器的一个存储单元所增加的命中率。本领域技术人员也可以设计出其他方法,来首先计算出边际命中率增益,然后将该边际命中率增益的值作为边际命中率损失的值。
下面描述如何计算对应于SSDindex的综合响应时间。
本领域技术人员可以理解,SSDindex可能服务于多个不同的SSD设备,因此,可以通过对各个SSD设备的平均响应时间预测值求平均得到对应于SSDindex的综合响应时间。根据本发明的一个实施例,也可以按照如下公式来计算对应于SSDindex的综合响应时间。
式(1)的含义是,对应于SSDindex的综合响应时间RTssd是对每一个SSD的平均响应时间预测值按照对应的访问次数预测值进行加权平均。其中EMA_RT(e)表示对第e个SSD设备的平均响应时间预测值,EMA_IOPS(e)表示对第e个SSD设备的访问次数预测值。这种加权平均的方案中,访问次数多的SSD设备的平均响应时间预测值在计算综合响应时间时的权重更大,可以更加准确地反映出对高速存储器的需求。本领域技术人员可以理解,SSDindex只服务于一个SSD设备是一种特殊情况。这种情况下也能够按照上述方法计算SSDindex的综合响应时间。计算出的综合响应时间就是该一个SSD设备的平均响应时间预测值。
类似地,计算对应于HDDindex的综合响应时间的公式为:
由于可以采用相同的方法来计算每个SSD设备的EMA_RT和EMA_IOPS,并且计算EMA_RT和EMA_IOPS是一个针对时间的统计过程,因此在下面的描述中,将EMA_RT表示为时间的函数即PredictedRT(n),将EMA_IOPS表示为时间的函数即PredictedIOPS(n)。此外,由于可以采用类似的方法来计算PredictedRT(n)和PredictedIOPS(n),因此下面主要针对计算PredictedRT(n)进行说明。
可以有很多方法来计算PredictedRT(n),其基本的思想是通过对过去采样周期中的平均响应时间预测值和平均响应时间实际值进行统计,来动态地预测下一采样周期中的平均响应时间预测值。在实际***中,因为硬件配置的差异,或者工作负载的差异,可能会导致同一个低速存储器的响应时间差异很大,因此有必要动态地计算所述平均响应时间预测值。对于所述访问次数预测值也存在同样的情况。
根据本发明的一个实施例,可以采用卡尔曼滤波的方法来进行所述预测。
根据本发明的另一个实施例,平均响应时间预测值可以用以下公式计算:
PredictedRT(n+1)=(1-α)×PredictedRT(n)+α×ActualRT(n)
(2)
其中,PredictedRT(n+1)表示对采样周期n+1的平均响应时间预测值,而PredictedRT(n)表示对采样周期n的平均响应时间预测值,ActualRT(n)表示采样周期n中测得的平均响应时间实际值,α是大于0且小于1的数。
类似地,访问次数预测值可以用以下公式计算:
PredictedIOPS(n+1)=(1-α)×PredictedIOPS(n)+α×ActualIOPS(n)
其中PredictedIOPS(n+1)表示对采样周期n+1的访问次数预测值,而PredictedIOPS(n)表示对采样周期n的访问次数预测值,ActualIOPS(n)表示采样周期n中测得的访问次数实际值,α是大于0且小于1的数。
从式(2)可以看出,理论上讲,在计算采样周期n+1的平均响应时间预测值时,考虑到了对采样周期n以及更早的每个采样周期所计算出的平均响应时间预测值,还考虑到了采样周期n以及更早的每个采样周期中测得的平均响应时间预测值。但是,离采样周期n+1越远的采样周期所对应的平均响应时间预测值和平均响应时间实际值在计算采样周期n+1的平均响应时间预测值时的权重越小,并且权重降低的模式是指数型的。
根据本发明的再一个实施例,可以按照其他的模式来设置所述权重,例如线性模式降低、对数模式降低、阶跃模式降低等等。其中所述阶跃模式指的是以相同的权重考虑离采样周期n+1一定距离内的采样周期所对应的平均响应时间预测值和平均响应时间实际值,而不考虑离采样周期n+1一定距离之外的采样周期所对应的平均响应时间预测值和平均响应时间实际值。本领域技术人员还可以设计出其他的模式,来设置采样周期n以及更早的每个采样周期的平均响应时间预测值和平均响应时间实际值的权重。
如前所述,α是大于0且小于1的数。α的值具有两方面的影响。首先,α的值越小,则前一采样周期中的突发平均响应时间对预测结果的影响越小。其次,α的值越小,则上述指数型模式下权重降低的速度越快。
对于第一点,假设采样周期n的平均响应时间预测值是E。如果是平稳状态,可以认为采样周期n的响应时间实际值近似为E。此时根据式(2)计算出采样周期n+1的平均响应时间预测值也是E。如果在采样周期n中的突发情况,导致采样周期n的平均响应时间实际值为5E,则此时根据式(2)计算出采样周期n+1的平均响应时间预测值也是E×(1+4α)。假设α的值是0.01,则5倍的突发平均响应时间所带来的变化仅有4%。
但是,如果平均响应时间实际值在后续的采样周期中都是5E,则希望响应时间预测值能够尽快地向5E靠拢。但由于上述第二点影响,在α的值很小的情况下,响应时间预测值向5E靠拢的速度也会变慢。
根据本发明一个实施例,可以用采样周期与工作负载变化周期的比值作为所述α的值。例如对于大多数场景,工作负载的变化周期是一天,假设采样周期是10分钟,那么α的值就是10/(24×60)=1/144。本领域技术人员还可以设计出其他各种方法来计算所述α的值,例如将上述比值乘上一个常数。采用这种方法确定α,在进行逐出时就可以充分考虑负载的周期性,避免工作负载模式的扰动带来的干扰,从而在健壮性得到提高,准确性上有大大的改善。
在上面的描述中,忽略了处理器对高速存储器的访问所需要的时间。由于不管在命中情况下还是在未命中情况下处理器都需要访问高速存储器,因此为了更精确地反映边际性能损失的含义,在处理器对高速存储器的读操作时间相对于处理器对低俗存储器的读操作时间而言不能忽略的情况下,可以从针对非空闲索引的综合响应时间中减去处理器对高速存储器的读操作时间。此时,有
EMA_RT=PredictedRT(n)-RTcache
其中RTcache表示处理器对高速存储器的读操作时间,其对于特性的***而言是相对固定的。例如对于现在流行的存储***,RTcache的值是0.2毫秒。
图3是根据本发明实施例的管理高速存储器的装置的方框图。
边际性能损失获取模块301,配置为响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;
逐出索引选择模块302,配置为通过比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;
逐出操作执行模块303,配置为从所述逐出索引中选择索引条目进行逐出操作。
其中所述边际性能损失获取模块301可以包括:
边际命中率损失获取模块,配置为获取与非空闲索引对应的边际命中率损失;
综合响应时间获取模块,配置为获取与非空闲索引对应的综合响应时间;
乘法模块,配置为将所述边际命中率损失与所述综合响应时间的乘积作为所述边际性能损失。
如前所述,所述边际性能损失获取模块301也可以进包括边际命中率获取模块。
所属技术领域的技术人员知道,本发明可以体现为***、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“***”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium ofexpression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的***、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行***、装置或器件使用的或与指令执行***、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括-但不限于-无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
虽然已经图示和描述了本发明的若干示例性实施例,不过本领域技术人员可以理解的是,在不偏离本发明原则和精神的前提下,可以对这些实施例进行改变,本发明的范围由权利要求书及其等价变换所限定。
Claims (20)
1.一种用于管理高速存储器的方法,其中不同类型的低速存储器设置有对应的非空闲索引,所述非空闲索引包括索引条目,所述索引条目指示分配给对应低速存储器的高速存储器存储单元,并且其中通过从非空闲索引中逐出索引条目来回收该高速存储器存储单元,该方法包括:
响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;
比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;
从所述逐出索引中选择索引条目进行逐出操作。
2.根据权利要求1所述的方法,其中获取与非空闲索引对应的边际性能损失包括:
获取与非空闲索引对应的边际命中率损失;
获取与非空闲索引对应的综合响应时间;
将所述边际命中率损失与所述综合响应时间的乘积作为所述边际性能损失。
3.根据权利要求2所述的方法,其中如果某索引条目对应的高速存储器存储单元被访问,则该索引条目被移到非空闲索引的最前端;
其中获取与非空闲索引对应的边际命中率损失包括:
将所述非空闲索引中最后端的索引条目对应的高速存储器存储单元的命中率作为所述边际命中率损失。
4.根据权利要求3所述的方法,进一步包括:
记录排在所述非空闲索引最后的多个索引条目所对应的高速存储器存储单元被访问的次数。
5.根据权利要求2所述的方法,其中对应于所述非空闲索引的综合响应时间是对与该非空闲索引对应的低速存储器的平均响应时间预测值按照访问次数预测值进行加权平均的结果。
6.根据权利要求5所述的方法,其中通过对过去采样周期中的平均响应时间预测值和平均响应时间实际值进行计算,来预测下一采样周期中的平均响应时间预测值。
7.根据权利要求6所述的方法,其中低速存储器的平均响应时间预测值按照以下公式计算:
PredictedRT(n+1)=(1-α)×PredictedRT(n)+α×ActualRT(n)
其中,PredictedRT(n+1)表示对采样周期n+1的平均响应时间预测值,PredictedRT(n)表示对采样周期n的平均响应时间预测值,ActualRT(n)表示采样周期n中测得的平均响应时间实际值,α是大于0且小于1的数。
8.根据权利要求5所述的方法,其中通过对过去采样周期中的访问次数预测值和访问次数实际值进行计算,来预测下一采样周期中的访问次数预测值。
9.根据权利要求8所述的方法,其中低速存储器的访问次数预测值按照以下公式计算:
PredictedIOPS(n+1)=(1-α)×PredictedIOPS(n)+α×ActualIOPS(n)
其中PredictedIOPS(n+1)表示对采样周期n+1的访问次数预测值,PredictedIOPS(n)表示对采样周期n的访问次数预测值,ActualIOPS(n)表示采样周期n中测得的访问次数实际值,α是大于0且小于1的数。
10.根据权利要求7或9所述的方法,其中所述α等于采样周期与工作负载变化周期的比值。
11.一种用于管理高速存储器的装置,其中不同类型的低速存储器设置有对应的非空闲索引,所述非空闲索引包括索引条目,所述索引条目指示分配给对应低速存储器的高速存储器存储单元,并且其中通过从非空闲索引中逐出索引条目来回收该高速存储器存储单元,该装置包括:
边际性能损失获取模块,配置为响应于收到逐出请求,获取与各非空闲索引对应的边际性能损失,其中所述边际性能损失表示在对应的非空闲索引中进行逐出操作引起的处理器读操作时间的变化;
逐出索引选择模块,配置为通过比较各非空闲索引对应的边际性能损失,选取边际性能损失符合逐出条件的非空闲索引作为逐出索引;
逐出操作执行模块,配置为从所述逐出索引中选择索引条目进行逐出操作。
12.根据权利要求11所述的装置,其中所述边际性能损失获取模块包括:
边际命中率损失获取模块,配置为获取与非空闲索引对应的边际命中率损失;
综合响应时间获取模块,配置为获取与非空闲索引对应的综合响应时间;
乘法模块,配置为将所述边际命中率损失与所述综合响应时间的乘积作为所述边际性能损失。
13.根据权利要求12所述的装置,其中如果某索引条目对应的高速存储器存储单元被访问,则该索引条目被移到非空闲索引的最前端;
其中边际命中率损失获取模块包括:
配置为将所述非空闲索引中最后端的索引条目对应的高速存储器存储单元的命中率作为所述边际命中率损失的模块。
14.根据权利要求13所述的装置,进一步包括:
配置为记录排在所述非空闲索引最后的多个索引条目所对应的高速存储器存储单元被访问的次数的模块。
15.根据权利要求12所述的装置,其中对应于所述非空闲索引的综合响应时间是对与该非空闲索引对应的低速存储器的平均响应时间预测值按照访问次数预测值进行加权平均的结果。
16.根据权利要求15所述的装置,其中通过对过去采样周期中的平均响应时间预测值和平均响应时间实际值进行计算,来预测下一采样周期中的平均响应时间预测值。
17.根据权利要求16所述的装置,其中低速存储器的平均响应时间预测值按照以下公式计算:
PredictedRT(n+1)=(1-α)×PredictedRT(n)+α×ActualRT(n)
其中,PredictedRT(n+1)表示对采样周期n+1的平均响应时间预测值,PredictedRT(n)表示对采样周期n的平均响应时间预测值,ActualRT(n)表示采样周期n中测得的平均响应时间实际值,α是大于0且小于1的数。
18.根据权利要求15所述的装置,其中通过对过去采样周期中的访问次数预测值和访问次数实际值进行计算,来预测下一采样周期中的访问次数预测值。
19.根据权利要求18所述的装置,其中低速存储器的访问次数预测值按照以下公式计算:
PredictedIOPS(n+1)=(1-α)×PredictedIOPS(n)+α×ActualIOPS(n)
其中PredictedIOPS(n+1)表示对采样周期n+1的访问次数预测值,PredictedIOPS(n)表示对采样周期n的访问次数预测值,ActualIOPS(n)表示采样周期n中测得的访问次数实际值,α是大于0且小于1的数。
20.根据权利要求17或19所述的装置,其中所述α等于采样周期与工作负载变化周期的比值。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110079728.4A CN102722448B (zh) | 2011-03-31 | 2011-03-31 | 管理高速存储器的方法和装置 |
PCT/CN2012/070971 WO2012129987A1 (en) | 2011-03-31 | 2012-02-09 | Managing high speed memory |
GB1318525.1A GB2504027B (en) | 2011-03-31 | 2012-02-09 | Managing high speed memory |
DE112012001469.3T DE112012001469B4 (de) | 2011-03-31 | 2012-02-09 | Verwalten von Hochgeschwindigkeitsspeichern |
US13/431,479 US8825951B2 (en) | 2011-03-31 | 2012-03-27 | Managing high speed memory |
US13/790,709 US8898389B2 (en) | 2011-03-31 | 2013-03-08 | Managing high speed memory |
US14/341,309 US9430365B2 (en) | 2011-03-31 | 2014-07-25 | Managing high speed memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110079728.4A CN102722448B (zh) | 2011-03-31 | 2011-03-31 | 管理高速存储器的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722448A true CN102722448A (zh) | 2012-10-10 |
CN102722448B CN102722448B (zh) | 2015-07-22 |
Family
ID=46928885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110079728.4A Active CN102722448B (zh) | 2011-03-31 | 2011-03-31 | 管理高速存储器的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8825951B2 (zh) |
CN (1) | CN102722448B (zh) |
DE (1) | DE112012001469B4 (zh) |
GB (1) | GB2504027B (zh) |
WO (1) | WO2012129987A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699422A (zh) * | 2015-03-11 | 2015-06-10 | 华为技术有限公司 | 缓存数据的确定方法及装置 |
CN109783027A (zh) * | 2019-01-15 | 2019-05-21 | 深圳忆联信息***有限公司 | 命令存储管理方法、装置、计算机设备及存储介质 |
CN111026677A (zh) * | 2019-10-31 | 2020-04-17 | 苏州浪潮智能科技有限公司 | 一种基于ema算法的缓存分配方法、***、终端及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722448B (zh) | 2011-03-31 | 2015-07-22 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738865B1 (en) * | 2000-06-09 | 2004-05-18 | International Business Machines Corporation | Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data |
US20050268037A1 (en) * | 2004-05-27 | 2005-12-01 | International Business Machines Corporation | Cache hit ratio estimating apparatus, cache hit ratio estimating method, program, and recording medium |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
US20100318744A1 (en) * | 2009-06-15 | 2010-12-16 | International Business Machines Corporation | Differential caching mechanism based on media i/o speed |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1052882A (en) | 1912-04-17 | 1913-02-11 | Frederick L Brigham | Buckle. |
US6141731A (en) * | 1998-08-19 | 2000-10-31 | International Business Machines Corporation | Method and system for managing data in cache using multiple data structures |
US6449697B1 (en) | 1999-04-23 | 2002-09-10 | International Business Machines Corporation | Prestaging data into cache in preparation for data transfer operations |
US6851024B1 (en) | 2000-08-17 | 2005-02-01 | Hewlett-Packard Development Company, L.P. | Exclusive caching in computer systems |
US6996676B2 (en) | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US6978349B1 (en) * | 2003-01-09 | 2005-12-20 | Hewlett-Packard Development Company, L.P. | Adaptive cache memory management |
US20060236033A1 (en) | 2005-04-18 | 2006-10-19 | Dell Products L.P. | System and method for the implementation of an adaptive cache policy in a storage controller |
US7721061B1 (en) * | 2005-06-22 | 2010-05-18 | Hewlett-Packard Development Company, L.P. | Method of predicting response time for storage request |
US20100088459A1 (en) * | 2008-10-06 | 2010-04-08 | Siamak Arya | Improved Hybrid Drive |
US8612668B2 (en) | 2008-11-24 | 2013-12-17 | Juniper Networks, Inc. | Storage optimization system based on object size |
US8195878B2 (en) * | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
US8140811B2 (en) | 2009-06-22 | 2012-03-20 | International Business Machines Corporation | Nonvolatile storage thresholding |
US8510528B2 (en) * | 2010-12-29 | 2013-08-13 | Teradata Us, Inc. | Differential data storage based on predicted access frequency |
CN102722448B (zh) | 2011-03-31 | 2015-07-22 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
-
2011
- 2011-03-31 CN CN201110079728.4A patent/CN102722448B/zh active Active
-
2012
- 2012-02-09 WO PCT/CN2012/070971 patent/WO2012129987A1/en active Application Filing
- 2012-02-09 DE DE112012001469.3T patent/DE112012001469B4/de active Active
- 2012-02-09 GB GB1318525.1A patent/GB2504027B/en active Active
- 2012-03-27 US US13/431,479 patent/US8825951B2/en not_active Expired - Fee Related
-
2013
- 2013-03-08 US US13/790,709 patent/US8898389B2/en not_active Expired - Fee Related
-
2014
- 2014-07-25 US US14/341,309 patent/US9430365B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6738865B1 (en) * | 2000-06-09 | 2004-05-18 | International Business Machines Corporation | Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data |
US20050268037A1 (en) * | 2004-05-27 | 2005-12-01 | International Business Machines Corporation | Cache hit ratio estimating apparatus, cache hit ratio estimating method, program, and recording medium |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
US20100318744A1 (en) * | 2009-06-15 | 2010-12-16 | International Business Machines Corporation | Differential caching mechanism based on media i/o speed |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699422A (zh) * | 2015-03-11 | 2015-06-10 | 华为技术有限公司 | 缓存数据的确定方法及装置 |
CN109783027A (zh) * | 2019-01-15 | 2019-05-21 | 深圳忆联信息***有限公司 | 命令存储管理方法、装置、计算机设备及存储介质 |
CN109783027B (zh) * | 2019-01-15 | 2022-03-29 | 深圳忆联信息***有限公司 | 命令存储管理方法、装置、计算机设备及存储介质 |
CN111026677A (zh) * | 2019-10-31 | 2020-04-17 | 苏州浪潮智能科技有限公司 | 一种基于ema算法的缓存分配方法、***、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20140337292A1 (en) | 2014-11-13 |
WO2012129987A1 (en) | 2012-10-04 |
GB2504027A (en) | 2014-01-15 |
US8898389B2 (en) | 2014-11-25 |
DE112012001469B4 (de) | 2022-04-21 |
US20130262794A1 (en) | 2013-10-03 |
US9430365B2 (en) | 2016-08-30 |
GB201318525D0 (en) | 2013-12-04 |
US8825951B2 (en) | 2014-09-02 |
US20120254564A1 (en) | 2012-10-04 |
DE112012001469T5 (de) | 2013-12-24 |
GB2504027B (en) | 2014-09-03 |
CN102722448B (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102651009B (zh) | 一种存储***中检索数据的方法和设备 | |
CN103440207B (zh) | 缓存方法及装置 | |
CN110502452B (zh) | 访问电子设备中的混合缓存的方法及装置 | |
CN111143243B (zh) | 一种基于nvm混合内存的缓存预取方法及*** | |
US11055224B2 (en) | Data processing apparatus and prefetch method | |
CN104115134B (zh) | 用于管理对复合数据存储设备进行访问的方法和*** | |
US20110252215A1 (en) | Computer memory with dynamic cell density | |
CN103257932B (zh) | 用于管理计算机可读高速缓存***中的数据的方法和*** | |
CN103688249A (zh) | 固态盘的自适应记录高速缓存 | |
CN104040508B (zh) | 用于在高速缓存***中管理数据的方法和*** | |
CN108776614B (zh) | 存储块的回收方法和装置 | |
CN103959258A (zh) | 背景重排序——具有有限开销的预防性的磨损控制机制 | |
CN102314397B (zh) | 缓存数据块的处理方法 | |
JP6402647B2 (ja) | データ配置プログラム、データ配置装置およびデータ配置方法 | |
CN103092526A (zh) | 在存储设备间进行数据迁移的方法和装置 | |
CN108984130A (zh) | 一种分布式存储的缓存读取方法及其装置 | |
CN102722448A (zh) | 管理高速存储器的方法和装置 | |
CN106802772A (zh) | 数据回收的方法、装置及固态硬盘 | |
CN104077242A (zh) | 一种缓存管理方法和装置 | |
CN108572799B (zh) | 一种双向哈希链表的异构内存***数据页迁移方法 | |
CN110413545A (zh) | 存储管理方法、电子设备和计算机程序产品 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
CN106681830A (zh) | 一种任务缓存空间监测方法和装置 | |
CN114253458A (zh) | 内存缺页异常的处理方法、装置、设备及存储介质 | |
CN102779017A (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 |