CN103984648A - 为了改进i/o性能而压制数据高速缓存速率的方法 - Google Patents
为了改进i/o性能而压制数据高速缓存速率的方法 Download PDFInfo
- Publication number
- CN103984648A CN103984648A CN201310469561.1A CN201310469561A CN103984648A CN 103984648 A CN103984648 A CN 103984648A CN 201310469561 A CN201310469561 A CN 201310469561A CN 103984648 A CN103984648 A CN 103984648A
- Authority
- CN
- China
- Prior art keywords
- speed cache
- data
- physics high
- recently used
- cache window
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- 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
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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
- 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
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及为了改进I/O性能而压制数据高速缓存速率的方法。描述了一种高速缓存设备,其用于数据的高速缓存并且具体地用于识别该高速缓存设备中的陈旧数据或颠簸事件。另外,还描述了一种高速缓存设备,其用于对在颠簸事件期间该高速缓存设备中的高速缓存数据以及该高速缓存设备中的陈旧的高速缓存数据进行优先化。还描述了与这种高速缓存设备的使用关联的方法,其中该方法用于数据的高速缓存并且用于在颠簸事件中识别数据或者识别陈旧的高速缓存数据。
Description
技术领域
本公开内容总体上涉及计算机系统并且尤其涉及存储系统。
背景技术
存储设备或高速缓存设备允许数据存储在系统中,以便允许未来对数据更快更有效的访问。当数据存储在存储设备或高速缓存设备中时,如果数据在一段时间内没有被访问,那么该数据将变得陈旧。在某些情况下,需要高速缓存在高速缓存设备中的数据将大于该高速缓存设备的容量。在这些情况下,高速缓存设备可以开始高速缓存数据,并且去除将需要重新高速缓存的较旧的数据,从而产生高速缓存和丢弃同一数据的持续循环,这被称为颠簸(thrashing)。
发明内容
本发明的一种实施例可以包括用于当热点数据量超过高速缓存设备的存储容量时将数据存储到该高速缓存设备上的方法,包括:使用最近最少使用队列块来监视对高速缓存设备中的一个或多个物理高速缓存窗口中所存储的数据的引用;将存储在所述一个或多个物理高速缓存窗口中的数据优先化到最近最少使用队列块中的最近最少使用队列;基于在某个时间段内对所述一个或多个物理高速缓存窗口中的数据的引用的次数,将所述一个或多个物理高速缓存窗口升级为所述最近最少使用队列块中的较高优先级的最近最少使用队列;当所述数据在某个时间段内未被访问时,将一个或多个物理高速缓存窗口降级为所述最近最少使用队列块中的较低优先级的最近最少使用队列;以及使用所述最近最少使用队列块中的一个或多个计数器来监视所述高速缓存设备中降级的物理高速缓存窗口的个数。
本发明的一种实施例可以还包括一种高速缓存设备,其包括:至少一个虚拟高速缓存窗口;至少一个物理高速缓存窗口;与所述至少一个物理高速缓存窗口通信的最近最少使用队列块;以及与所述最近最少使用队列块通信的哈希表,并且其中所述最近最少使用队列块包括至少两个最近最少使用队列、至少两个计数器和一个全局计数器。
附图说明
图1是高速缓存设备中具有高速缓存块的四个物理高速缓存窗口的框图。
图2是具有高速缓存块的1MB物理高速缓存窗口的特写视图的框图,其中该物理高速缓存窗口与具有最近最少使用队列和计数器的最近最少使用队列块通信。
图3是数据输入到物理高速缓存窗口的流程图。
图4是用于物理高速缓存窗口的优先化的流程图。
图5是示出当高速缓存设备处于颠簸状态时替换热点数据的方法的流程图。
图6是示出如何确定高速缓存设备是否具有陈旧数据、处于颠簸状态或者物理高速缓存窗口是否可用于存储的流程图。
具体实施例
图1是具有1MB物理高速缓存窗口的闪存存储设备的框图,该闪存存储设备用于高速缓存数据100的存储并且具地用于颠簸事件的识别及在颠簸事件过程中或者当在高速缓存设备中存在陈旧的高速缓存数据时在高速缓存设备中的存储高速缓存数据的优先化。在图1所示的例子中,闪存存储设备或高速缓存设备102(例如容量为100MB的闪存存储设备)(图1中所示的容量为400GB)被分成被称为高速缓存窗口(CW)104、106、108和110的数据存储区域,每个CW的大小是1MB。对于总共100MB的存储空间,高速缓存设备102具有100个物理高速缓存窗口104、106、108和110,每个的大小都是1MB。所有的物理高速缓存窗口104、106、108和110都在高速缓存设备102中使用逻辑块寻址方案来初始化并被插入到物理高速缓存窗口104、106、108和110的池中,让空闲的存储空间可用于存储来自主机或硬盘112的可高速缓存的数据。每个物理高速缓存窗口104、106、108和110都进一步分成十六(16)个高速缓存块,其中每个高速缓存块的大小是64KB。高速缓存块的大小可以是4KB、8KB、16KB、32KB、64KB和128KB,默认值是64KB。
参考图1,高速缓存设备102从硬盘或主机112接收用于存储的输入/输出数据114,其中输入/输出数据114通过通用的输入/输出端口116从主机112发送。在输入/输出数据114被发送到物理高速缓存窗口104、106、108和110用于存储之前,本公开内容的系统将确定物理高速缓存窗口104、106、108和110是否可用于存储。所有输入/输出数据114都通过输入/输出(I/O)访问信号118发送到高速缓存设备102中。通过输入/输出(I/O)访问信号118,数据114首先存储在高速缓存设备102中的被分配为虚拟高速缓存窗口120的区域中,对数据114的访问被虚拟高速缓存窗口120跟踪并监视。当输入/输出数据114在位于虚拟高速缓存窗口120中的同时被重复访问或引用,通常是三次引用或者直到满足预定的引用阈值时,虚拟高速缓存窗口120中的输入/输出数据114被转换(122)到一个物理高速缓存窗口104、106、108和110中并且进入物理高速缓存窗口104、106、108和110中的具体的闪存存储地址区域。当虚拟高速缓存窗口120没有输入/输出数据114的时候,物理高速缓存窗口104、106、108和110被来自虚拟高速缓存窗口120的输入/输出数据114填充。一旦输入/输出数据114已经分配到物理高速缓存窗口104、106、108和110并存储在其中,物理高速缓存窗口104、106、108和110就被插入到最近最少使用队列块124中的最近最少使用(LRU)队列中并受其监视。通过LRU队列保持信号126和128,使用随后将进一步讨论的一系列最近最少使用队列(图1中未示出),最近最少使用队列块124跟踪对存储在物理高速缓存窗口104、106、108和110中的输入/输出数据114的引用和访问(输入和读请求)。
在图1所示的高速缓存设备102的例子中,示出了高速缓存设备102的一百(100)个物理高速缓存窗口中的四个物理高速缓存窗口104、106、108和110,但是可以使用任意数量的物理高速缓存窗口来进行数据存储。因此,尽管这个描述性例子具有四个物理高速缓存窗口104、106、108和110,但是应当理解,这种描述适用于具有其它数量的物理高速缓存窗口的任何此类装置,正如本领域技术人员一旦理解了本发明的原理之后将理解的。
另外,在图1所示的示例高速缓存设备102中,针对每个物理高速缓存窗口示出了十六(16)个高速缓存块,但是,取决于物理高速缓存窗口的大小,任意数量的高速缓存块都可以用于在物理高速缓存窗口中的数据存储。因此,尽管这个描述性例子具有十六个高速缓存块,但是应当理解,这种描述适用于具有其它数量的高速缓存块的任何此类装置,正如本领域技术人员一旦理解了本发明的原理之后将理解的。
作为例子,本公开内容的系统具有一(1)百万个可配置的跟踪头或虚拟高速缓存窗口120并且每个跟踪头或虚拟高速缓存窗口120都具有1MB的虚拟数据空间。虚拟高速缓存窗口120是闪存存储设备或高速缓存设备102内的存储器数据结构。这些虚拟高速缓存窗口120用于跟踪硬盘空间或主机112的1MB区域,其中主机112的1MB区域还没有被高速缓存到物理高速缓存窗口104、106、108和110。
在本公开内容的例子中,如果被虚拟高速缓存窗口120跟踪的硬驱空间或主机112的特定的1MB区域被访问三次或者更多次,则该区域的输入/输出数据被确定为是热点并且从最近最少使用队列块124中的最近最少使用队列取得一个物理高速缓存窗口结构104、106、108和110。硬盘或主机112中的1MB区域的热点输入/输出数据被复制并存储到由1MB物理高速缓存窗口结构104、106、108和110所代表的闪存存储设备102地址空间的具体区域。现在,到热点1MB硬盘112区域的未来输入/输出数据将被重定向到较快的高速缓存设备或闪存存储设备102的物理高速缓存窗口104、106、108和110的高速缓存数据的具体区域,而不是较慢的硬盘或主机112。
当从主机112的应用接收到对数据114的引用时,哈希表130保持在高速缓存设备102中已经存储或分配数据114的物理高速缓存窗口104、106、108和110的列表。哈希表130通过通信信号132与最近最少使用队列块124通信。最少最近使用队列块124保持并监视对虚拟高速缓存窗口120及物理高速缓存窗口104、106、108和110数据结构两者的引用。基于数据区域在主机112中的位置,由最近最少使用队列块124搜索哈希表130,以便确定是否已经分配了任何类型的高速缓存窗口(无论是虚拟高速缓存窗口120还是物理高速缓存窗口104、106、108和110)以跟踪该1MB的数据区域。如果发现物理高速缓存窗口已经在跟踪并存储来自该1MB数据区域的数据,如参考图2将讨论的,与物理高速缓存窗口关联的适当的计数器(在图1中未示出)被更新并增加“一(1)”。如果硬盘或主机区域112还没有在物理高速缓存窗口104、106、108和110中被跟踪,则分配新的虚拟高速缓存窗口120来跟踪感兴趣的新区域。
如果输入/输出数据114命中之前还从未访问过的1MB区域,就从空闲的虚拟高速缓存窗口列表中分配一个虚拟高速缓存窗口120,并且将对该区域数据的访问次数设置成“一(1)”。跟踪在虚拟高速缓存窗口120中的每次访问,并且如果在给定的输入/输出数据时段(由输入/输出的次数而不是时间来度量)内,虚拟高速缓存窗口120访问达到阈值(通常是对虚拟高速缓存窗口中的数据的三次引用),虚拟高速缓存窗口120中的输入/输出数据114被传输到物理高速缓存窗口104、106、108和110。现在,虚拟高速缓存窗口120是空闲的,可以接收新的输入/输出数据114。
图2提供了物理高速缓存窗口与最近最少使用队列块的特写例子200。如图2所示,最近最少使用队列块124通过通信信号132与哈希表130通信。最近最少使用队列块124由最近最少使用队列(LRU队列)138、140、142、144、146、148、150、152、154、156、158、160、162、164、166和168(138至168)连同计数器170和全局计数器172组成。如图2所示,十六个最近最少使用队列138至168、十六个计数器170和一个全局计数器172通过LRU队列保持信号126监视并跟踪数据的使用及对物理高速缓存窗口104中所存储的数据的访问。尽管在图2中示出了十六个最近最少使用队列和十六个计数器,但是应当理解,这种描述适用于具有其它数量的最近最少使用队列和其它数量的计数器的任何此类装置,正如本领域技术人员一旦理解了本发明的原理之后将理解的。
取决于物理高速缓存窗口104中的数据被访问得有多频繁,物理高速缓存窗口104将被移动到较高或较低的最近最少使用队列138至168。物理高速缓存窗口104向最近最少使用队列块124中较高优先级的最近最少使用队列138至168的移动被称为物理高速缓存窗口104的升级。物理高速缓存窗口104向较低优先级的最近最少使用队列138至168的移动被称为降级。
如图2中进一步示出的,最近最少使用队列块124的最近最少使用队列138至168被分配了优先级队列编号0至15,0具有最低优先级,而15具有最高优先级。每个最近最少使用队列138至168都保持最近最少使用列表,并且计数器170监视有多少降级的物理高速缓存窗口104驻留在该最近最少使用队列138至168中(稍后将讨论物理高速缓存窗口104的降级),并且如将要讨论的,哪些降级的物理高速缓存窗口104可以重新用于新分配的物理高速缓存窗口104。全局计数器172存在于所有最近最少使用队列138至168。
任何新分配的物理高速缓存窗口104都添加到最低优先级的最近最少使用队列138至168的末尾,在图2中这将是LRU队列0168。当对物理高速缓存窗口104中的具体区域的数据有足够多的引用(例如对数据有三次引用)时,物理高速缓存窗口104被升级并移动到较高优先级的最近最少使用队列,例如从LRU队列0168移动到LRU队列1166。当在某个预定义的时间段内没有对物理高速缓存窗口104中所存储的数据进行访问时,物理高速缓存窗口104被降级到先前优先级的最近最少使用队列。关于降级,物理高速缓存窗口104被添加到下一最低的最近最少使用队列,例如从LRU队列1166到LRU队列0168。全局计数器172用于对最近最少使用队列块124中降级的物理高速缓存窗口104的总数保持跟踪。在任何给定的时间点,基于与哈希表130、计数器170和全局计数器172的通信,最近最少使用队列块124知道有多少物理高速缓存窗口104被分配,以及有多少物理高速缓存窗口104实际被降级。与具体的最近最少使用队列138至168关联的计数器170将不考虑(account)物理高速缓存窗口104是否被降级通过几个最近最少使用队列138至168。这种物理高速缓存窗口104仍然被作为降级来计数,但是,计数器170被调整成使得每个最近最少使用计数器170将代表驻留在最近最少使用队列块124中的降级的物理高速缓存窗口的当前个数。当物理高速缓存窗口104被降级通过几个最近最少使用队列138至168时,全局计数器172将保持相同。为了区分在同一最近最少使用队列138至168中升级和降级的高速缓存窗口,当物理高速缓存窗口104被降级时,在物理高速缓存窗口104上使用标志。当物理高速缓存窗口104被升级时,该标志将复位。
关于物理高速缓存窗口104被升级到较高优先级的最近最少使用队列138至168,与该最近最少使用队列138至168通信的计数器170减小。因此,如果物理高速缓存窗口104的升级速率等于该物理高速缓存窗口104的降级速率,那么这个速率暗示高速缓存设备102的工作负载正在经历颠簸,这将在稍后讨论。如果物理高速缓存窗口104的降级速率高,这是陈旧数据存在的指示,这也将在稍后讨论。
使用以下讨论的指数时间衰减,物理高速缓存窗口104从较高优先级的最近最少使用队列138至168移动到较低优先级的最近最少使用队列138至168。当物理高速缓存窗口104从较高优先级的最近最少使用队列138至168降级到下一优先级的最近最少使用队列138至168时,与对应的每个最近最少使用队列138至168通信的单个计数器170监视物理高速缓存窗口104的移动,并且,在物理高速缓存窗口104降级的情况下,计数器上涨(bump)一(1)个值。如果物理高速缓存窗口从LRU队列2164降级到LRU队列1166,则计数器以2为因子上涨。类似地,当物理高速缓存窗口104从LRU队列15140移动到LRU队列14138时,对于该物理高速缓存窗口104,计数器上涨“十五(15)”。当这些降级的物理高速缓存窗口被升级时,调整用于计数器170的适当的值,例如当物理高速缓存窗口104从LRU队列14升级到LRU队列15的最近最少使用队列时,对于该物理高速缓存窗口104,计数器170减去“十五(15)”。
当基于对数据的重复引用而认为较新的数据是热点时,该数据被复制到高速缓存设备102上并存储在物理高速缓存窗口104中。根据与最近最少使用块124通信的哈希表130,如果没有物理高速缓存窗口104可用于分配,则基于由最近最少使用队列138至168接收到的信息,最近最少使用队列块124将识别物理高速缓存窗口104中的数据在最长持续时间内未被访问的物理高速缓存窗口104。
在一段时间之内,在物理高速缓存窗口104中分配并存储的某些曾经是热点的数据有可能由于从主机应用对其有限的访问或者没有访问而变得陈旧。尽管数据被高速缓存了,但是通过降级的使用,数据的物理高速缓存窗口104将最终位于最低优先级的最近最少使用队列中,在图2中是LRU队列0168。当新数据变成热点并且需要高速缓存时,如果在物理高速缓存窗口104中没有空间可用,则基于最近最少使用队列优先级138至168,陈旧的数据从位于最低优先级的最近最少使用队列(图2中的LRU队列0168)中的物理高速缓存窗口104被替换。为了识别要去除的数据,最近最少使用队列块124使用与最近最少使用队列138至168通信的计数器170来识别位于最低优先级的最近最少使用队列(图2中的LRU队列0168)中的被标示的降级物理高速缓存窗口104。然后丢弃所识别出的物理高速缓存窗口104中的数据。现在,来自主机112的较新的热点数据114被目标指向位于高速缓存设备102后端的虚拟高速缓存窗口。最近最少使用队列块124开始重新使用物理高速缓存窗口104,其中,在该物理高速缓存窗口104先前位于最低优先级LRU队列0168的地方,为了较新的热点数据,数据刚被丢弃。
较小的相邻物理高速缓存窗口104可以集合,以形成大的组(256K、512K或者1MB)。物理高速缓存窗口的这种集合促进了相邻窗口的更快的数据高速缓存,而不会让数据到达硬盘驱动器(HDD)的最小标准。当需要较小的物理高速缓存窗口大小(例如128KB)时,需要这种分组,以便允许更快提升(ramp up)至1MB区域。当128KB大小的物理高速缓存窗口104被认为是热点时,那么最近最少使用队列块124将自动地认为该较小物理高速缓存窗口的1MB边界内的相邻物理高速缓存窗口也是热点。在高速缓存第一次启用时,这么做,会有更快的高速缓存提升。本公开内容的系统允许物理高速缓存窗口的大小为128KB、512KB、1MB、2MB和4MB,默认值是1MB。
在一段时间之内,曾经是热点的某些高速缓存数据将有可能由于从主机112或应用对数据的有限访问或者没有访问而变得陈旧。尽管数据被高速缓存在物理高速缓存窗口104中,但是数据的物理高速缓存窗口104将位于最近最少使用队列块124中的最低优先级的最近最少使用队列(图2中的LRU队列0168)中。如果系统基于最近最少使用队列块124而识别出物理高速缓存窗口104中没有可用的额外空间,则陈旧的数据将被较新的热点数据代替。陈旧的数据可以定义为了解在一段时间内有多少热点数据被积极地访问。最近最少使用队列块124以及块124中的最近最少使用队列或存储桶(bucket)可以用于实现这个目的。无论何时当物理高速缓存窗口由于对其高速缓存数据的较少访问而被降级时,分配给最近最少使用队列或存储桶的计数器将被保持,以了解有多少高速缓存窗口当前处于降级状态。如图2所示,存在两组计数器,即每个LRU队列或存储桶138至168各有的一个计数器170,以及全局计数器172。当前被降级的物理高速缓存窗口104同样以特殊的标志来标记。无论何时当降级的物理高速缓存窗口104由于新访问而再次被升级时,未完成的(outstanding)降级计数器相应地被调整,并且该标志将复位。在任何给定的时间,如果总的降级物理高速缓存窗口不等于零,这指示存在一些数量的陈旧的数据。如果存在任何被占用的物理高速缓存窗口或者如果在物理高速缓存窗口中存在陈旧的数据,则对被认为是热点的数据区域(图1的虚拟高速缓存窗口120)的需求将取决于当前分配的物理高速缓存窗口104的状态。如果最近最少使用队列块124上存在任何待使用的空闲物理高速缓存窗口104或者陈旧的(降级的)物理高速缓存窗口104,则该阈值将设置成“三(3)”。因此,对将虚拟高速缓存窗口120中的数据考虑为可以高速缓存的要求将需要默认访问计数的三倍(即,对其相应区域的九次读访问)。在不存在空闲物理高速缓存窗口104或者降级的物理高速缓存窗口104的情况下,所需的阈值将更高,例如,默认值的三倍或者对数据的九次参考或访问。
在某些情况下,热点数据将变得大于高速缓存设备102的容量。当物理高速缓存窗口104、106、108和110被选择用于数据的高速缓存时,物理高速缓存窗口中的某些数据,如由最近最少使用队列块124的较低优先级的最近最少使用队列138至168所识别的,将需要丢弃。由于数据的大小,被丢弃的数据很快又变成热点,造成新数据与被丢弃数据的循环,这被称为颠簸。
为了补偿处于颠簸模式的系统,该系统可以按两种方式来处理数据的高速缓存。在第一种方法中,数据从最低优先级的最近最少使用队列的物理高速缓存窗口替换并随后以更快的速率被存储在新的物理高速缓存窗口中。在第二种方法中,修正将数据识别为热点所需的引用次数,例如从三(3)次引用到九(9)次引用,因此,为了新热点数据的存储,需要九次引用,以让数据被分配或存储到来自最低优先级的最近最少使用队列的物理高速缓存窗口中。在某些情况下,在系统处于颠簸模式中时,系统甚至可以停止数据向物理高速缓存窗口的全部分配或存储。
图3提供了将数据输入高速缓存到本公开内容的高速缓存设备中的流程图300。在步骤302,数据被输入到高速缓存设备中。在步骤304,数据分配到高速缓存设备的虚拟高速缓存窗口或者后台区域并且被其跟踪。在步骤306,当虚拟高速缓存窗口中的数据被外部主机重复访问,通常是对数据的至少三次引用时,虚拟高速缓存窗口中的数据被转换或发送到物理高速缓存窗口,在那里数据被指定并存储在物理高速缓存窗口中。一旦来自虚拟高速缓存窗口的数据已经被从虚拟高速缓存窗口去除,该虚拟高速缓存窗口就是空闲的,以便允许新的数据在该虚拟高速缓存窗口中被分配和跟踪。在步骤308,包括十六个最近最少使用队列或存储桶的最近最少使用队列(LRU)块被保持并在所有物理高速缓存窗口监视对数据的访问。在步骤310,取决于物理高速缓存窗口中的数据被访问得多频繁和/或数据上次是什么时候被访问的,最近最少使用队列(LRU)块对存储在物理高速缓存窗口中的数据进行优先化。
如图4中所示,提供了示出物理高速缓存窗口中数据的优先化的流程图400。在步骤402,最近最少使用队列块对每个物理高速缓存窗口进行优先化。在步骤404,所有物理高速缓存窗口都被插入到该最近最少使用队列块的最近最少使用队列(LRU队列)中,使得当高速缓存驱动器或高速缓存设备的高速缓存容量比实际的物理容量或硬盘容量小得多时物理高速缓存窗口可以被重新使用。不是为所有的物理高速缓存窗口都保持单个最近最少使用队列或存储桶,本公开内容而是为所有的物理高速缓存窗口提供了十六个最近最少使用队列。每个最近最少使用队列或列表都代表一个LRU存储桶,其中每个最近最少使用队列利用范围从低(0)到高(15)的优先级来优先化。首先,所有的物理高速缓存窗口都被插入到具有最低优先级的最近最少使用队列中,在这个例子中是LRU队列0。在步骤406,当接收到对物理高速缓存窗口中高速缓存的数据的一定量的引用或访问时,该物理高速缓存窗口从最低优先级的最近最少使用队列移动到较高优先级的列表。物理高速缓存窗口从较低的最近最少使用队列到较高最近最少使用队列的移动被称为升级。在步骤408,当物理高速缓存窗口已经有一定量的时间未被访问时,最近最少使用队列块将该物理高速缓存窗口中的数据识别为不被访问,并且该物理高速缓存窗口从当前的最近最少使用队列移动到较低的最近最少使用队列。物理高速缓存窗口从较高最近最少使用队列到较低最近最少使用队列的移动被称为降级。为了具有物理高速缓存窗口的动态降级速率而不是默认的要求或高的要求,在降级物理高速缓存窗口的时候使用降级加权因子。当物理高速缓存窗口从最高降级到下一优先级的物理高速缓存窗口时,与该降级的物理高速缓存窗口关联的每个最近最少使用优先级队列所关联的计数器上涨一(1)个值,并且标志被附到该物理高速缓存窗口。如果物理高速缓存窗口降级了两个最近最少使用优先级队列,则与该最近最少使用优先级队列关联的计数器以二(2)为因子上涨或增加。类似地,当物理高速缓存窗口从第15个移动到第14个最近最少使用队列时,计数器对于每个物理高速缓存窗口增加“十五(15)。当这些降级的物理高速缓存窗口被升级时,则调整适当的值。在步骤410,经过一段时间之后,曾经是热点的某些数据有可能由于从应用对其的有限访问或者没有访问而变得陈旧。尽管数据被高速缓存了,但是,通过降级的使用,数据的物理高速缓存窗口最终位于最低优先级的最近最少使用队列中。在步骤412,当新的数据变成热点并且需要高速缓存时,如果物理高速缓存窗口中没有空间可用,那么,基于最近最少使用队列优先级,陈旧的数据从位于最低优先级的最近最少使用队列中的物理高速缓存窗口去除。针对较新的热点数据,该系统重新使用来自最低优先级的最近最少使用队列的物理高速缓存窗口。
在图5中,提供了示出用于识别本公开内容的系统是否处于颠簸模式的步骤的流程图500。在步骤502,热点数据被添加到高速缓存设备,但是新数据比高速缓存设备的高速缓存容量大。在步骤504,如果没有未使用的物理高速缓存窗口可用于高速缓存数据并且没有陈旧的数据可于从最低优先级的最近最少使用队列中的物理高速缓存窗口去除,则系统处于颠簸模式。在步骤506,为了补偿处于颠簸模式的系统,数据从最低优先级的最近最少使用队列中的物理高速缓存窗口去除并且随后以更快的速率存储在新的物理高速缓存窗口中。在步骤508,处理颠簸模式的另选方法是修正将数据识别为热点所需的引用次数,一个例子可以是从三(3)次引用修正到九(9)次引用,因此,为了新热点数据的存储,需要取得九次引用让来自该系统的数据存储在来自最低优先级的最近最少使用队列中的物理高速缓存窗口中。在某些情况下,当系统处于颠簸模式时,系统甚至可以停止数据向物理高速缓存窗口的所有分配或存储。
如图6所示,提供了示出检测在系统中是否存在任何陈旧的高速缓存数据或者颠簸是否发生的逻辑的流程图600。在步骤602,最近最少使用优先级队列监视有多少存储在每个物理高速缓存窗口中的数据随时间被活跃地访问。在步骤604,基于由与最近最少使用优先级队列通信的计数器对数据使用的监视,当数据变成较低优先级时,物理高速缓存窗口在最近最少使用队列中降级。对每个最近最少使用队列分配一个计数器,为最近最少使用队列块中的所有十六个最近最少使用队列分配额外的队列。如以上所讨论的,当物理高速缓存窗口从最高降级到下一优先级的物理高速缓存窗口时,与该降级的物理高速缓存窗口关联的每个最近最少使用优先级队列所关联的计数器上涨一(1)个值。如果物理高速缓存窗口被降级了两个最近最少使用优先级队列,则与该最近最少使用优先级队列关联的计数器以二(2)为因子上涨,并且最近最少使用队列指示哪个最近最少使用队列在考虑(accounting)降级的物理高速缓存窗口的当前位置。但是,全局计数器保持相同。类似地,当物理高速缓存窗口从第14个移动到第15个最近最少使用队列时,计数器上涨“十五(15)”,并且随后将指示考虑物理高速缓存窗口当前位置的队列。这种计算提供了关于高速缓存窗口是否部分填充、是否存在陈旧的数据或者该系统是否处于颠簸模式的理解,并且因此实现高速缓存速率的压制。在步骤606,基于加权因子,如果降级的物理高速缓存窗口的总数大于零并且空闲的物理高速缓存窗口的总数等于零,则如步骤608所示,在该物理高速缓存窗口中高速缓存在陈旧的数据。在步骤610,如果降级的物理高速缓存窗口的总数等于零并且空闲的物理高速缓存窗口的总数等于零,则如步骤612所示,系统处于颠簸模式。在步骤614,如果降级的物理高速缓存窗口的总数等于零并且空闲的物理高速缓存窗口的总数大于零,则如步骤616所示,系统具有空闲的高速缓存窗口可用于分配。
以上本发明的描述是为了说明和解释的目的而给出的。它不旨在是详尽的或者将本发明限定到所公开的精确形式,并且,根据以上教导,其它修改与变形也是可能的。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,由此使本领域技术人员能够最好地在适合预期特定用途的各种实施例和各种修改中利用本发明。希望所附权利要求被解释成包括除了被现有技术限定之外的本发明的其它另选实施例。
Claims (15)
1.一种在热点数据的量超过高速缓存设备的存储容量时将数据存储到该高速缓存设备上的方法,包括:
通过利用最近最少使用队列块来监视对存储在高速缓存设备中的一个或多个物理高速缓存窗口中的数据的引用;
将存储在所述一个或多个物理高速缓存窗口中的所述数据优先化到所述最近最少使用队列块中的最近最少使用队列;
基于在某个时间段内对所述一个或多个物理高速缓存窗口中的所述数据的所述引用的次数,将所述一个或多个物理高速缓存窗口升级到所述最近最少使用队列块中的较高优先级的最近最少使用队列;
当所述数据在某个时间段内未被访问时,将所述一个或多个物理高速缓存窗口降级到所述最近最少使用队列块中的较低优先级的最近最少使用队列;以及
使用所述最近最少使用队列块中的一个或多个计数器来监视所述高速缓存设备中降级的物理高速缓存窗口的数量。
2.如权利要求1所述的方法,还包括:
搜索与所述最近最少使用队列块通信的哈希表,以识别所述高速缓存设备中降级的物理高速缓存窗口的数量和空闲的物理高速缓存窗口的数量。
3.如权利要求2所述的方法,还包括:
识别出所述高速缓存设备中没有空闲的物理高速缓存窗口可用;
从所述最低优先级的最近最少使用队列中的所述降级的物理高速缓存窗口替换数据;
将新数据存储到所述降级的物理高速缓存窗口;以及
利用所述最近最少使用队列块来跟踪对存储在所述降级的物理高速缓存窗口中的所述新数据的引用。
4.如权利要求3所述的方法,还包括:
使用虚拟高速缓存窗口来跟踪主机中的数据;
使用所述虚拟高速缓存窗口来监视对所述主机中的所述数据的引用次数;以及
基于在某个时间段内来自所述主机的所述数据接收到多次所述引用,将所述来自所述主机的数据存储到由所述一个或多个物理高速缓存窗口代表的所述高速缓存设备上。
5.如权利要求2所述的方法,还包括:
当所述降级的物理高速缓存窗口的总数等于零并且所述空闲的物理高速缓存窗口的总数等于零时,识别出所述高速缓存设备在颠簸。
6.如权利要求5所述的方法,还包括:
增加在所述降级的物理高速缓存窗口中存储所述数据所需的所述引用的次数。
7.如权利要求6所述的方法,其中所述引用的所述次数的所述增加大于三次引用。
8.如权利要求2所述的方法,还包括:
当所述降级的物理高速缓存窗口的总数大于零并且所述空闲的物理高速缓存窗口的总数等于零时,识别出所述高速缓存设备具有陈旧的数据。
9.如权利要求2所述的方法,还包括:
当所述降级的物理高速缓存窗口的总数等于零并且所述空闲的物理高速缓存窗口的总数大于零时,识别出所述高速缓存设备何时具有空闲的物理高速缓存窗口。
10.一种用于数据高速缓存的高速缓存设备,包括:
至少一个虚拟高速缓存窗口;
至少一个物理高速缓存窗口;
最近最少使用队列块,与所述至少一个物理高速缓存窗口通信,其中所述最近最少使用队列块包括至少两个最近最少使用队列、至少两个计数器和一个全局计数器;以及
哈希表,与所述最近最少使用队列块通信。
11.如权利要求10所述的高速缓存设备,其中,基于对存储在所述至少一个物理高速缓存窗口中的数据的引用次数,所述至少一个物理高速缓存窗口被优先化到所述最近最少使用队列块中的所述最近最少使用队列。
12.如权利要求11所述的高速缓存设备,其中,所述哈希表保持存储在所述至少一个物理高速缓存窗口中的所述数据的位置及所述至少一个物理高速缓存窗口的位置的列表。
13.如权利要求12所述的高速缓存设备,其中所述最近最少使用队列块监视对存储在所述至少一个物理高速缓存窗口中的所述数据的引用次数。
14.如权利要求13所述的高速缓存设备,其中所述至少两个计数器和一个全局计数器监视与所述最近最少使用队列块通信的所述至少一个物理高速缓存窗口的降级。
15.如权利要求14所述的高速缓存设备,其中所述至少一个物理高速缓存窗口还包括至少一个用于存储所述数据的高速缓存块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/761,397 | 2013-02-07 | ||
US13/761,397 US9189422B2 (en) | 2013-02-07 | 2013-02-07 | Method to throttle rate of data caching for improved I/O performance |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103984648A true CN103984648A (zh) | 2014-08-13 |
Family
ID=49322205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310469561.1A Pending CN103984648A (zh) | 2013-02-07 | 2013-10-10 | 为了改进i/o性能而压制数据高速缓存速率的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9189422B2 (zh) |
EP (1) | EP2765519A1 (zh) |
JP (1) | JP2014154138A (zh) |
KR (1) | KR20140100876A (zh) |
CN (1) | CN103984648A (zh) |
TW (1) | TW201432451A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111587423A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统的分层数据策略 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6146087B2 (ja) * | 2013-03-28 | 2017-06-14 | 富士通株式会社 | ストレージ制御プログラム,ストレージ制御方法,ストレージシステム及びその階層制御装置 |
US9384138B2 (en) * | 2014-05-09 | 2016-07-05 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Temporal tracking of cache data |
US10606795B2 (en) * | 2015-06-18 | 2020-03-31 | Netapp, Inc. | Methods for managing a buffer cache and devices thereof |
US10108552B2 (en) | 2015-08-21 | 2018-10-23 | International Business Machines Corporation | Using cache lists for processors to determine tracks to demote from a cache |
US9921974B2 (en) | 2015-08-21 | 2018-03-20 | International Business Machines Corporation | Assigning cache control blocks and cache lists to multiple processors to cache and demote tracks in a storage system |
US10114753B2 (en) | 2015-08-21 | 2018-10-30 | International Business Machines Corporation | Using cache lists for multiple processors to cache and demote tracks in a storage system |
US10067884B2 (en) | 2015-08-21 | 2018-09-04 | International Business Machines Corporation | Distributing a plurality of tracks to add to cache to lists assigned to processors |
US9952904B2 (en) | 2015-08-21 | 2018-04-24 | International Business Machines Corporation | Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache |
US9996470B2 (en) * | 2015-08-28 | 2018-06-12 | Netapp, Inc. | Workload management in a global recycle queue infrastructure |
CN106649150B (zh) * | 2016-12-26 | 2020-04-24 | 锐捷网络股份有限公司 | 一种缓存管理方法及装置 |
US11237730B2 (en) | 2019-05-12 | 2022-02-01 | International Business Machines Corporation | Favored cache status for selected volumes within a storage system |
US11163698B2 (en) | 2019-05-12 | 2021-11-02 | International Business Machines Corporation | Cache hit ratios for selected volumes using synchronous I/O |
US11169919B2 (en) | 2019-05-12 | 2021-11-09 | International Business Machines Corporation | Cache preference for selected volumes within a storage system |
US11151035B2 (en) | 2019-05-12 | 2021-10-19 | International Business Machines Corporation | Cache hit ratios for selected volumes within a storage system |
US11176052B2 (en) | 2019-05-12 | 2021-11-16 | International Business Machines Corporation | Variable cache status for selected volumes within a storage system |
US11663144B2 (en) | 2020-01-20 | 2023-05-30 | International Business Machines Corporation | LRU list reorganization for favored and unfavored volumes |
US11294829B2 (en) * | 2020-04-21 | 2022-04-05 | International Business Machines Corporation | Cache replacement with no additional memory space |
US11681620B2 (en) * | 2021-07-23 | 2023-06-20 | Advanced Micro Devices, Inc. | Using error correction code (ECC) bits for retaining victim cache lines in a cache block in a cache memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117396B1 (en) * | 2006-10-10 | 2012-02-14 | Network Appliance, Inc. | Multi-level buffer cache management through soft-division of a uniform buffer cache |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752261A (en) | 1996-11-07 | 1998-05-12 | Ncr Corporation | Method and apparatus for detecting thrashing in a cache memory |
US20020056025A1 (en) * | 2000-11-07 | 2002-05-09 | Qiu Chaoxin C. | Systems and methods for management of memory |
US6701393B1 (en) | 2002-06-27 | 2004-03-02 | Emc Corporation | Systems and methods for managing storage location descriptors |
US6948032B2 (en) | 2003-01-29 | 2005-09-20 | Sun Microsystems, Inc. | Method and apparatus for reducing the effects of hot spots in cache memories |
US7457926B2 (en) | 2005-05-18 | 2008-11-25 | International Business Machines Corporation | Cache line replacement monitoring and profiling |
US20080086599A1 (en) | 2006-10-10 | 2008-04-10 | Maron William A | Method to retain critical data in a cache in order to increase application performance |
US8176255B2 (en) | 2007-10-19 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | Allocating space in dedicated cache ways |
WO2010138628A1 (en) * | 2009-05-28 | 2010-12-02 | Marvell World Trade Ltd. | Metadata management for virtual volumes |
US8578145B2 (en) | 2010-10-13 | 2013-11-05 | International Business Machines Corporation | Port throttling across an operating system restart during a hot upgrade |
US8595451B2 (en) | 2010-11-04 | 2013-11-26 | Lsi Corporation | Managing a storage cache utilizing externally assigned cache priority tags |
US20130097387A1 (en) * | 2011-10-14 | 2013-04-18 | The Board Of Trustees Of The Leland Stanford Junior University | Memory-based apparatus and method |
-
2013
- 2013-02-07 US US13/761,397 patent/US9189422B2/en active Active
- 2013-08-28 TW TW102130922A patent/TW201432451A/zh unknown
- 2013-10-02 EP EP20130187009 patent/EP2765519A1/en not_active Withdrawn
- 2013-10-10 CN CN201310469561.1A patent/CN103984648A/zh active Pending
- 2013-10-10 KR KR20130120357A patent/KR20140100876A/ko not_active Application Discontinuation
- 2013-11-19 JP JP2013238657A patent/JP2014154138A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117396B1 (en) * | 2006-10-10 | 2012-02-14 | Network Appliance, Inc. | Multi-level buffer cache management through soft-division of a uniform buffer cache |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111587423A (zh) * | 2017-11-13 | 2020-08-25 | 维卡艾欧有限公司 | 分布式存储系统的分层数据策略 |
CN111587423B (zh) * | 2017-11-13 | 2023-09-19 | 维卡艾欧有限公司 | 分布式存储系统的分层数据策略 |
Also Published As
Publication number | Publication date |
---|---|
KR20140100876A (ko) | 2014-08-18 |
JP2014154138A (ja) | 2014-08-25 |
TW201432451A (zh) | 2014-08-16 |
EP2765519A1 (en) | 2014-08-13 |
US9189422B2 (en) | 2015-11-17 |
US20140223106A1 (en) | 2014-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103984648A (zh) | 为了改进i/o性能而压制数据高速缓存速率的方法 | |
US8949568B2 (en) | Memory storage device, and a related zone-based block management and mapping method | |
US9342458B2 (en) | Cache allocation in a computerized system | |
CN104285214B (zh) | 混合储存集合块跟踪 | |
CN108139902A (zh) | 用于提供混合模式来访问ssd驱动器的方法和装置 | |
US9858197B2 (en) | Cache management apparatus of hybrid cache-based memory system and the hybrid cache-based memory system | |
US20180232314A1 (en) | Method for storing data by storage device and storage device | |
US10496297B2 (en) | Data categorization based on invalidation velocities | |
CN101644996A (zh) | 索引数据的存储方法和存储控制装置 | |
WO2013175529A1 (en) | Storage system and storage control method for using storage area based on secondary storage as cache area | |
JP6459644B2 (ja) | ストレージ制御装置、制御システム及び制御プログラム | |
US20180018269A1 (en) | Limiting access operations in a data storage device | |
EP2842040B1 (en) | Collaborative caching | |
US11093410B2 (en) | Cache management method, storage system and computer program product | |
CN104794064A (zh) | 一种基于区域热度的缓存管理方法 | |
US20160253265A1 (en) | Using access-frequency hierarchy for selection of eviction destination | |
CN101976181A (zh) | 一种存储资源的管理方法及管理装置 | |
US9727247B2 (en) | Storage device and method, and storage medium | |
CN109213693A (zh) | 存储管理方法、存储系统和计算机程序产品 | |
US9699254B2 (en) | Computer system, cache management method, and computer | |
CN102521161B (zh) | 一种数据的缓存方法、装置和服务器 | |
US9547443B2 (en) | Method and apparatus to pin page based on server state | |
CN101997919A (zh) | 一种存储资源的管理方法及管理装置 | |
CN105808150A (zh) | 用于混合式储存设备的固态硬盘快取系统 | |
JP2014010604A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140813 |