CN103513935A - 用于管理高速缓存存储器的方法和系统 - Google Patents
用于管理高速缓存存储器的方法和系统 Download PDFInfo
- Publication number
- CN103513935A CN103513935A CN201310246644.4A CN201310246644A CN103513935A CN 103513935 A CN103513935 A CN 103513935A CN 201310246644 A CN201310246644 A CN 201310246644A CN 103513935 A CN103513935 A CN 103513935A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- home server
- miss
- polymerization
- 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
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本发明涉及用于管理高速缓存存储器的方法、系统及其部件。该方法包括:提供包括共享的数据存储系统和若干本地服务器的计算机化的系统;从本地服务器中的每个本地服务器向共享的数据存储系统提供高速缓存数据信息,提供的高速缓存数据信息包括高速缓存命中数据和高速缓存未命中数据;在共享的数据存储系统处将接收的高速缓存未命中数据和高速缓存命中数据的至少部分聚合到聚合的高速缓存数据信息,并且向本地服务器中的一个或者多个本地服务器提供聚合的高速缓存数据信息;以及在本地服务器中的所述一个或者多个本地服务器处基于提供的聚合的高速缓存数据信息更新用来服务相应一个或者多个应用的相应一个或者多个高速缓存存储器。
Description
技术领域
本发明主要地涉及用于管理高速缓存存储器的计算机化的方法和系统的领域,特别是在存储区域网络(SAN)环境中。
背景技术
存储区域网络(SAN)是提供对合并的块级数据存储装置的访问的专用网络。这样的网络主要用来使存储设备(例如盘阵列或者带库)对于服务器可访问;从而这些设备表现为本地附着到操作系统。SAN通常具有它自己的存储设备网络,这些存储设备一般不可通过局域网由其它设备访问。SAN不提供文件抽象化、仅提供块级操作。然而在SAN上面构建的文件系统提供文件级访问(例如参见Wikipedia contributors,′Storage area network′,Wikipedia,The FreeEncyclopedia,21May2012)。
更一般而言,有若干已知环境,在这些环境中,本地应用服务器(即使用相应高速缓存存储器用于对相应应用进行服务)被配置为与共享的数据存储系统交互,从而它们可以访问共享的存储池上存储的数据。系统如何管理高速缓存存储器通常实施如下:
-本地服务器向共享的数据存储系统报告本地高速缓存未命中;
-作为响应,后者提供未命中的数据;并且
-它还合并并且使用出于高速缓存/分层目的、即数据放置目的而接收的高速缓存未命中数据。
这例如是在SAN环境中完成的。很清楚,共享的数据存储系统发挥中心作用;因此有时将它称为“中央系统”。
在典型SAN环境中,多个应用服务器经由标准块级访问接口连接到共享的数据存储系统(通常在例如512至528字节的固定大小的块中访问数据)。共享的存储池由SAN存储服务器(比如IBMDS8000)管理。SAN存储服务器经常使用大的高速缓存以增加系统吞吐量并且减少访问延时,而又同时每个应用服务器也可以使用高速缓存以增加在I/O效率方面的应用灵活性并且减少SAN服务器的带宽的消耗。如可以实现的那样,在应用服务器的高速缓存(下文也称为“本地高速缓存”)和在SAN存储服务器的高速缓存独立地操作:在它们之间无协调。相同结论一般对于如上文回顾的更一般的系统架构——即在这些系统架构中,本地应用服务器与共享的数据存储系统交互以访问共享的存储池上存储的数据——而言成立。
发明内容
根据第一方面(即全局方面),本发明体现为一种用于管理高速缓存存储器的方法,该方法包括:
提供包括共享的数据存储系统和若干本地服务器的计算机化的系统,其中:
共享的数据存储系统被配置为与所述本地服务器交互;
本地服务器使用相应高速缓存存储器来服务应用;并且
本地服务器中的每个本地服务器访问在共享的数据存储系统中存储的数据,该方法还包括:
从本地服务器中的每个本地服务器向共享的数据存储系统提供高速缓存数据信息,提供的高速缓存数据信息包括:
代表本地服务器中的每个本地服务器的高速缓存命中的高速缓存命中数据;以及
代表本地服务器中的每个本地服务器的高速缓存未命中的高速缓存未命中数据;
在共享的数据存储系统处将接收的高速缓存未命中数据和高速缓存命中数据的至少部分聚合到聚合的高速缓存数据信息,并且向本地服务器中的一个或者多个本地服务器提供聚合的高速缓存数据信息;以及
在本地服务器中的所述一个或者多个本地服务器处基于提供的聚合的高速缓存数据信息来更新用来服务相应一个或者多个应用的相应一个或者多个高速缓存存储器。
根据第二方面(即从本地服务器来看),本发明体现为一种用于管理高速缓存存储器的方法,该方法包括:
提供使用高速缓存存储器来服务应用的本地服务器,本地服务器还被配置为与共享的数据存储系统交互,共享的数据存储系统被配置为与访问共享的数据存储系统中存储的数据的若干本地服务器交互,该方法还包括在本地服务器处:
使得高速缓存数据信息可用于共享的数据存储系统,高速缓存数据信息包括:
代表所述每个本地服务器的高速缓存命中的高速缓存命中数据;以及
代表所述每个本地服务器的高速缓存未命中的高速缓存未命中数据;
从共享的数据存储系统接收通过聚合从若干本地服务器获得的高速缓存命中数据和高速缓存未命中数据而获得的聚合的高速缓存数据信息;以及
基于接收的聚合的高速缓存数据信息更新所述高速缓存存储器。
根据第三方面(即从共享的数据存储系统来看),本发明体现为一种用于管理高速缓存存储器的方法,该方法包括:
提供包括共享的数据存储系统的计算机化的系统,共享的数据存储系统被配置为与使用相应高速缓存存储器来服务应用的若干本地服务器交互,其中本地服务器优选地在应用请求时访问在共享的数据存储系统中存储的数据,
该方法还包括在共享的数据存储系统处:
以任何顺序从所述本地服务器中的每个本地服务器接收:
代表所述每个本地服务器的高速缓存命中的高速缓存命中数据;以及
代表所述每个本地服务器的高速缓存未命中的高速缓存未命中数据;
将接收的高速缓存命中数据和接收的高速缓存未命中数据的至少部分聚合到聚合的高速缓存数据信息;以及
向所述本地服务器中的一个或者多个本地服务器提供聚合的高速缓存数据信息,用于随后基于聚合的高速缓存数据信息来更新用以服务相应应用的相应高速缓存存储器。
优选地,聚合还包括根据高速缓存命中数据和高速缓存未命中数据的出现对高速缓存命中数据和高速缓存未命中数据排序,以使得获得的聚合的高速缓存数据信息的结构反映所述排序。
根据实施例,更新高速缓存存储器是关于来自由相应本地服务器服务的相应应用的对高速缓存存储器的请求而异步地执行的。
优选地,更新高速缓存存储器包括选择聚合的高速缓存数据信息中的数据子集并且根据选择的数据子集填充高速缓存存储器。
在优选实施例中,更新高速缓存存储器包括:选择聚合的高速缓存数据信息中的至少两个相异数据子集;指示利用与相异数据子集之一对应的数据无延迟地填充高速缓存存储器;并且指示在观察列表中放置与相异数据子集中的另一数据子集对应的数据,并且该方法还包括步骤:监视观察列表中的数据以确定将在高速缓存存储器中填充的数据;以及在高速缓存存储器中填充相应地确定的数据。
在实施例中,该方法还包括指示在观察列表中放置与本地高速缓存未命中数据对应的附加数据,本地高速缓存未命中数据代表本地服务器独立于聚合的高速缓存数据信息而收集高速缓存未命中数据,从而可以监视本地高速缓存未命中数据和与两个相异数据子集中的第二数据子集对应的数据二者以确定将在高速缓存存储器中填充哪个数据。
优选地,观察列表包括高速缓存的对象的循环列表,并且监视观察列表中的数据包括从循环列表驱逐(evict)在给定的时间段期间尚未被请求访问的最旧的高速缓存的对象。
在实施例中,该方法还包括在用已经驻留于高速缓存存储器中的数据填充高速缓存存储器之前过滤这样的数据。
聚合的高速缓存数据信息可以例如以比在高速缓存存储器的任何后续更新使用的粒度更大的粒度被聚合。
根据其它方面,实现本发明为一种包括如上文回顾的一个或者多个部件(即至少共享的数据存储系统和/或(本地)服务器)的计算机化的系统,该系统被配置为根据上述实施例中的任一实施例的方法中的所述一个或者多个部件执行的步骤中的每个步骤。
最后,根据又一方面,可以实现本发明为一种用于管理高速缓存存储器的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随之实现的计算机可读程序代码,该计算机可读程序代码被配置为实施根据上述实施例中的每个实施例的方法的步骤中的每个步骤。
现在将通过非限制例子并且参照附图描述实现本发明的方法、系统及其部件。
附图说明
-图1示意地代表适于实施根据本发明的实施例的方法的计算机化的系统;
-图2是代表如在实施例中涉及到的高层步骤的流程图;
-图3是示出在根据实施例的本地高速缓存填充逻辑和填充机制中涉及到的部件和步骤的图;以及
-图4是聚焦于根据实施例的如图3中那样的本地高速缓存填充逻辑的特定方面的图。
具体实施方式
构造以下描述如下。首先描述一般实施例和高层变化(第1节)。下一节解决更具体实施例和技术实施细节(第2节)。
1.一般实施例和高层变化
在这一节中描述涉及用于管理高速缓存存储器的方法的本发明的一般方面。由于本发明涉及在客户端LS1、LS2与中央服务器CS之间、即在客户端-服务器架构内的交互,参见图1,所以可以根据采用的角度给出本发明的不同描述。因此在下文中首先描述如在包括客户端和服务器CS二者的全局系统中实现的本发明的一般方面。然后讨论如从客户端或者服务器CS的角度来看的相同发明的方面。当然,这些方面仅在采用的角度(即,全局或者如从图1的部件之一来看)有不同并且涉及同一项发明。
首先参照图1-2,该方法总体在计算机化的系统1中操作,该系统在全局角度中包括服务器和客户端、即共享的数据存储系统CS和若干本地服务器LS1、LS2二者。因此形式上说,该方法的第一步骤S100相应地包括提供比如图1中所示的计算机化的系统1。在这一系统1中,共享的数据存储系统CS被配置为与若干本地服务器交互,在最小配置中即与至少两个本地服务器LS1、LS2交互。后者使用相应高速缓存存储器CM1、CM2来服务应用A1、A2。每个本地服务器可以访问共享的数据存储系统中存储的数据D。恰如在本发明通常应用于的SAN环境中那样,本地服务器通常在它服务的应用进行请求时请求访问所述数据D。出于明显原因,下文也将共享的数据存储系统CS称为“中央系统”。这一系统CS通常由SAN存储服务器管理。因此,本地和中央系统二者通常是“服务器”。中央系统CS充当用于本地服务器LS1、LS2的数据服务器,而本地服务器LSn使用特别相应高速缓存存储器CMn来服务相应应用An。为了消除歧义,将中央系统CS称为“系统”,而将本地服务器称为“服务器”。注意在最小配置中,计算机化的系统至少包括中央系统CS、两个本地服务器LS1、LS2、服务于一个或者多个应用并且使用两个相应高速缓存存储器(或者更多)。事实上本领域技术人员应当清楚,一个本地服务器可以服务多个应用并且这使用多于一个高速缓存存储器。
接着,第二步骤包括从本地服务器LS1、LS2中的每个本地服务器向中央系统CS提供高速缓存数据信息。所述高速缓存数据信息通常包括高速缓存数据统计。如在现有技术方法中那样,这样的统计涉及高速缓存未命中M,即代表每个本地服务器的高速缓存未命中的数据。“高速缓存未命中”本身是已知的:它是指由于在请求时对应数据中的一些或者所有数据未被高速缓存而没有从高速缓存存储器CMn被服务的数据访问请求。
然而,不同于现有技术方法,在本发明中向中央系统转发的高速缓存数据信息还包括高速缓存命中数据H,即,代表每个本地服务器的高速缓存命中。“高速缓存命中”本身也是已知的,它对应于在一个或者多个应用使用的高速缓存存储器中高速缓存的、并且响应于来自该高速缓存存储器的数据访问请求而被服务的给定数据。后文将讨论部分命中的具体情况。通常在不同时间发送高速缓存命中和未命中,因为与高速缓存命中相反,高速缓存未命中可能需要立即响应,这也是随后将发展的事项。因此,可以理解,高速缓存命中数据优选地独立于如图2中的步骤S200H和S200M所示与高速缓存未命中数据而被提供。
中央系统CS接下来完成的是,步骤S300,将高速缓存命中数据H和高速缓存未命中数据的至少部分聚合到聚合的高速缓存数据信息ACD。共享的高速缓存数据信息可以聚合以后将在本地高速缓存存储器中填充的实际数据,或者更简单地为数据标识符。一旦聚合,然后可以向本地服务器中的一个或者多个本地服务器提供高速缓存数据信息ACD,步骤S400。当然,本地高速缓存未命中M、高速缓存命中H和访问的数据D从LS1到LS2应当可能是不同的。
最后,本地服务器应当例如在从中央系统接收聚合的数据时尽可能快地基于接收的聚合的数据ACD来更新(步骤S500)它管理的高速缓存存储器。
因而由于在ACD中捕获的更多“全局”知识、即在若干应用(包括除了应当被提供ACD的特定本地应用之外的应用)处出现的高速缓存未命中和命中的知识,所以本地高速缓存性能可得以提高。因此应当基于可以可能与给定的本地高速缓存相关的数据更新该给定的本地高速缓存,因为它们被证实在其它位置相关。所述全局数据在一些相关性存在于与一个位置相关的高速缓存数据和与另一位置相关的高速缓存数据之间时全部更加相关。如果相同应用在若干客户端上运行并且触及来自所述若干客户端的相同数据,则特别是这种情况。这也是在应用从一个服务器向某一其它服务器迁移(例如为了故障保护)时的情况。反言之,在现有技术系统中,本地高速缓存不会“看见”来自所有应用服务器的合并工作量,因此本地高速缓存判决不能是最优的,或者至少从中央角度来看不是最优。
注意如果通过构造步骤S200-S500,聚合的数据ACD包括高速缓存数据信息的全局知识,然而这妨碍向本地服务器提供的聚合的数据ACD被进行定制,即,被制作成特定于该服务器。也就是说,向一个本地服务器(例如LS1)提供的ACD数据可以包括从LS1和LS2二者捕获的高速缓存数据信息,同时又仍然强调数据为主要被合并用于LS1。后文将讨论这一点。
有利地,本发明在SAN环境中实施,其中中央系统CS优选地利用大型高速缓存和/或分层机制。此外,优选地在中央系统CS和/或在本地服务器LS1、LS2处利用更快存储器设备用于存储高速缓存,例如基于闪存的SSD。
至此已经描述的内容涉及如从全局角度来看的方法的一般方面。现在可以将相同方法分解成如在涉及到的部件LS1、LS2、CS3中的一个或者另一部件执行的步骤。
例如,从本地服务器LS1的角度来看,该方法包括以下步骤:本地服务器LS1将:
-使高速缓存数据信息可用于中央系统CS;可以例如根据全局系统配置来发送或者取回所述高速缓存数据信息;
-然后从中央系统CS接收如上文描述的那样获得的聚合的高速缓存数据信息ACD;并且
-随后基于接收的ACD更新它的高速缓存存储器。
类似地,从中央系统CS的角度来看,该方法包括:
-以任何顺序从所述本地服务器LS1、LS2中的每个本地服务器接收(或者取回)高速缓存命中数据H和高速缓存未命中数据M(步骤S210H、S210M);
-将接收的高速缓存命中数据和接收的高速缓存未命中数据的至少部分聚合到聚合的高速缓存数据信息ACD,步骤S300;并且
-又向本地服务器LS1、LS2中的一个或者多个本地服务器提供ACD,用于后续更新高速缓存存储器CM1、CM2,步骤S400。
如果向本地服务器提供的ACD的结构包括关于数据的相关度的信息,则可以提高上述方法的性能。为了该目标,并且参照图4,在实施例中ACD聚合步骤(即图2中的步骤S300)可以包括数据排序操作。更具体而言,可以根据高速缓存命中数据和高速缓存未命中数据的出现对高速缓存命中数据和高速缓存未命中数据排序。例如可以基于本地记录或者优选地根据在中央服务器CS的先前合并工作来计算所述出现。因此,聚合的高速缓存数据信息ACD的结构可以可能隐式地反映这一排序。例如在图4中,按照数据出现的升序对数据排序,例如最热门数据(图4的ACD数据中的虚线矩形段)位于向本地服务器提供的ACD数据结构的一端。
注意将在广义上理解“出现”:这可以例如反映这样的数据的出现频率。它更一般地反映在一个或者多个时间段内出现的倾向;它可以简单地是所述数据的历史。就这一点而言,注意该过程可以例如需要考虑不同时间间隔并且将高速缓存数据H、M与相应时间间隔相关,以便比较相关时间段、即可比较的时间段,并且在将高速缓存数据H、M聚合到图4的ACD结构之前推断它们的可比较的出现。有时在仅针对高速缓存未命中执行这一过程时提到高速缓存数据“合并”。在本发明的当前实施例中,这一可选步骤的本源来自于高速缓存未命中和高速缓存命中被合并这样的事实,这些高速缓存未命中和命中属于若干高速缓存/应用/服务器。
此外,尽管通常向中央服务器立即报告高速缓存未命中,但是高速缓冲命中无需这样;它们可以例如在本地被收集并且由此定期被报告对高速缓冲未命中频率的必要调整。在变体中,高速缓存命中可以被不停机(on-the-fly)报告(非优选),或者仍为一旦已经在本地服务器达到用于高速缓存命中的定量阈值就被报告。
现在可以设想许多有利设计选项。例如可以带内或者带外执行在本地服务器与中央系统CS之间交换统计。而且,在合并高速缓存数据时,可以优选地将用于涉及少量数据位的应用请求的高速缓存数据分组在一起以便随后将数据放在SSD上;也可以对用于涉及大量比特的请求的高速缓存数据分组在一起:更好地在HDD上放置用于更大请求的数据。
根据考虑的时间间隔,高速缓存数据信息的出现频率从几乎瞬时频率到用于有效时间段等的等效平均频率进行变化。无论如何,本发明人执行的仿真凭借的是对ACD排序并且相应地构造ACD允许提高高速缓存数据的长期相关度,即本地高速缓存CM1、CM2可以随后更新,以便高速缓存具有在更长时间段内被相应应用A1、A2请求的更高可能性的数据。
图2中的步骤S500一般地指代高速缓存存储器更新。在图3和4中,将高速缓存存储器更新分解为若干子步骤,即S11、S11a、S11b、S121、S122、S23、S450和S550-S580,这些子步骤优选地都由本地服务器或者其部件实施。这些部件将分解成填充逻辑10和填充机制24。前者包括部件11、12、12a、21、22、23。填充机制涉及到与高速缓存进行交互的数据移动器24,该高速缓存例如直接附着存储(DAS)高速缓存存储器26和高速缓存目录25。如图1中所指的高速缓存存储器CM1、CM2最少包括如图3中所示的存储器26(例如DAS高速缓存存储器),也称为“CM”。
一并参照图3和4:优选地异步执行高速缓存存储器更新。也就是说,对给定高速缓存CM1的更新关于从对应应用A1(即,由对应本地服务器LS1进行服务)到所述高速缓存存储器CM1的用户请求异步地执行。例如高速缓存填充机制可以由比如图3中所示异步执行单元(例如专用软件线程)支配。这意味着实际高速缓存填充步骤可以在关键数据路径以外来操作,该关键数据路径即包含为了从本地高速缓存或者中央系统向应用递送数据而需要的步骤的路径。因此,更新机制不会不利地影响本地高速缓存的正常操作。
更具体而言,如图3-4中的步骤S11、S11b、S121特别捕获的那样,高速缓存存储器更新通常涉及到数据子集选择,即选择向本地服务器提供的ACD中的数据的子集、然后根据选择的子集填充对应高速缓存存储器。例如可以选择接收的ACD中的数据的子集,例如具有最多出现的数据子集(或者简称为“热门数据”)以用它直接填充高速缓存存储器(见图3或者4的步骤S11)。考虑剩余数据,可以例如丢弃、放弃或者仍然监视它们。具体而言,如下文将讨论的那样,可以在观察列表12中放置数据子集中的一些数据子集用于后续监视。
所述数据子集选择可以视为过滤步骤。对于数据子集选择,有利地利用ACD结构,这可以隐式地说明哪个数据热门、哪个数据不是。在变体中,可以显式地将一些高速缓存数据标记为“必须有”。类似地,可以将ACD中的数据标记为“必须无”。因此,本地填充逻辑可以继续根据数据子集的隐式或者显式等级选择它们。例如本地服务器可以不过滤“必须有”(或者至少不立即过滤);它可以代之以过滤剩余数据或者可以甚至保证不会高速缓存“必须无”。如本领域技术人员可以理解的那样,可以设计许多其它中间策略。
现在,由于在ACD中标识的数据可以对应于已经驻留于高速缓存中的数据,所以有利地实施若干附加过滤阶段:
-首先,一旦在本地服务器接收ACD就可以从ACD过滤掉已经在高速缓存中的数据。例如在接收ACD(例如数据范围的有序列表,各自对应于1MB的段,如图4中那样)时,如图3和4的步骤S11b中所示,本地高速缓存逻辑10将首先从那些片段过滤掉已经在高速缓存中的数据片段(或者数据片段标识符)。
-更一般而言,可以在若干点处、例如在过滤器11和/或在数据移动器24等处,来过滤已经在高速缓存中的数据。
事实上,(在愿意过滤掉已经在高速缓存中的那些数据时)重要的是保证在用那些数据填充高速缓存存储器之前过滤它们。
目前,可以设想不同并发路线用于高速缓存存储器填充。例如可以在传入ACD中标识数据的两个或者更多相异子集。如图3-4中所示,填充逻辑10可以指示利用与标识的相异数据子集之一对应的数据无延迟填充(步骤S11)高速缓存存储器CM1,同时它指示(步骤S11a)在观察列表12中放置与标识的相异数据子集中的另一数据子集对应的数据。可以随后监视(S120)放置于观察列表12中的数据以确定将在高速缓存中填充S121哪个数据。“无延迟”意味着立即或者无进一步询问,例如在逻辑和电路允许的最少合理时间内。例如这可以由允许执行填充的最大速率支配。换而言之,可以在高速缓存中立即填充“最热门”数据,同时剩余数据可以在观察列表中的“观测”中放置并且如果必要则以后在高速缓存中填充。
事实上,可以在传入ACD中标识若干数据子集。例如,如图4中所示,可以标识三个类型的数据子集:(i)立即标识为与已经高速缓存的数据对应并且因此被丢弃的第一类型的数据子集(条纹段),步骤S11b;(ii)与热门数据对应的将在高速缓存中立即填充的第二类型的数据子集(虚线段)(步骤S11);以及(iii)与较不热门数据对应的将放置于观察列表12中的第三类型的数据子集(空白段)。如可以实现的那样,如果首先过滤ACD数据子集(i)以去除已经驻留于高速缓存中的数据,则上述子集(ii)和(iii)得以最高效地处理和管理。
如图3-4高速缓存更新逻辑10和填充机制24-25中进一步所示,可以在观察列表12中放置附加数据,步骤S200Ma。这些数据可以例如对应于本地高速缓存未命中数据,例如本地读取未命中或者LRM,即代表本地服务器所收集的高速缓存未命中的数据并且这独立于接收的ACD。因而,本地高速缓存未命中数据LRM和ACD的数据子集二者可以在观察列表中被放置和被监视(步骤S120)以确定以后将在高速缓存中填充哪个数据,步骤S121。这允许对本地服务器上的工作量改变更准确和更快地做出反应。就这一点而言,本地客户端可以操作更细粒度的片段而不是范围(例如1MB而不是1GB,如图4中所示)。现在如果单个片段表现为在整个范围内“热门”,则该片段属于的热门程度以及在中央系统CS观测到的热门程度可能未高到足以让它被标记为在ACD中热门(或者甚至被聚合)。然而可以向观察列表独立地添加这一“热门”片段用于就地(in-situ)监视,从而使得有可能让它随后被填充于高速缓存中。中央系统可能未“看见”足够的高速缓存未命中的其它原因在于特定数据仅被一个本地服务器访问或者以往尚未见过它,因此历史数据没有足够权重。此外,在ACD由中央系统向本地服务器提供之前通常需要一些时间。因此,向观察列表12独立地馈送LRM用于后续监视可以帮助提高反应性和/或灵敏性。
现在考虑如何监视观察列表中的数据,这可以特别地使用高速缓存的对象的循环列表12a来执行。具体而言,高效算法包括从循环列表12a驱逐最旧的高速缓存的对象,只要在给定的时间段、例如上一时钟圈期间尚未请求访问这一最旧的高速缓存的对象。这可以例如使用时钟算法的修改版本来实施。在本文中,这一算法可以实施,以比如在存储器中保持高速缓存的对象的循环列表而迭代器(“钟针”)指向列表中的最旧页面。对于每个页面,算法维持参考位,该参考位在被设置时表示已经在上一时钟圈期间访问页面。在高速缓存未命中出现时并且如果在高速缓存中无自由空间(即高速缓存已满),则在钟针的位置检查参考位。如果该位为0(即“未设置”),则驱逐“钟针”指向的高速缓存的对象,并且因此可以向传入页面分配空页面帧。否则,清除参考位并且递增钟针,从而它指向循环列表中的下一页面。重复该过程直至发现“受害”页面。在变化中,可以使用其它页面替换算法(先入先出(FIFO)、第二机会等)。然而上述解决方案(修改的时钟算法)是FIFO的有效版本(例如比第二机会更高效),因为无需在列表中连续地移位高速缓存的对象。
至此已经主要在方法步骤方面描述本发明的实施例。然而根据本发明的其它方面,可以实现本发明为一种包括如上文回顾的一个或者多个部件(即至少共享的数据存储系统(或者简称为“中央系统”)和/或本地服务器)的计算机化的系统。一般而言,这样的计算机化的系统可以适当地被配置为执行向所述部件赋予的方法步骤。
例如这一计算机化的系统可以限于共享的数据存储系统CS。后者可以特别包括:
-接收单元(未示出),配置为从本地服务器LS1、LS2中的每个本地服务器(独立地或不独立地)接收高速缓存命中数据和高速缓存未命中数据;
-聚合逻辑单元(未示出),配置为将接收的高速缓未存命中数据和接收的高速缓存命中数据的至少部分聚合到ACD中;以及
-接口(未示出),配置为使ACD能够向本地服务器LS1、LS2(中的每个本地服务器)发送。如更早提及的那样,可以根据目标服务器定制聚合。
接着,这一计算机化的系统可以相似地限于本地服务器。后者可以特别包括用于使高速缓存数据可用于中央系统CS的接口(未示出)和用于接收聚合的高速缓存数据ACD的接收器单元。它还可以包括比如图3-4中举例说明的高速缓存填充逻辑10和高速缓存填充工具24。
当然,如更早描述的那样,计算机化的系统可以包括共享的数据存储系统CS和一个或者多个本地服务器LS1、LS2。
最后,本发明也可以实现为一种包括计算机可读存储介质的计算机程序产品,该计算机可读存储介质具有随之实现的计算机可读程序代码,该程序代码被配置为实施上文描述的方法的步骤中的每个步骤。接着将在下一节中给出所述程序代码及其算法方面的细节。
已经参照附图简洁地描述上述实施例并且这些实施例可以适应参照本发明的任何方面描述的多个变体。在实施例中,可以设想上述特征的若干组合。
因而,根据本发明的实施例的计算机化的系统1可以特别包括:
-本地服务器LS1,其使用快速设备作为高速缓存,例如基于闪存的SSD;
-使用多个存储介质的共享的数据存储服务器CS,提供后端存储装置;
-在所述存储服务器上的分层模块T,用于标识热门数据并且用于在快速存储介质上存储热门数据。
另一例子是计算机化的系统1,该计算机化的系统特别包括:一个或者多个本地服务器LS1、LS2和中央分层存储系统CS,其中中央系统:
-维持粗粒度全局统计(基于观测到的合并的工作量和来自本地服务器的聚合的本地统计),
-基于那些粗粒度全局统计向具有不同性能特性的存储介质中放置数据,并且
-基于全局统计向个别本地服务器提供粗粒度高速缓存统计ACD,
并且其中所述本地服务器中的每个本地服务器:
-维持细粒度本地统计(基于本地观测的工作量);并且
-根据细粒度本地和粗粒度全局统计填充本地高速缓存。
在下一节中讨论优选实施例的具体例子。
2.具体实施例和技术实施细节
下文描述的具体实施例提供一种用于协调SAN环境中的本地高速缓存服务器和中央高速缓存的机制。目标在于通过杠杆调节短期与长期统计的组合来提高高速缓存效率。本地高速缓存向中央系统定期报告高速缓存命中统计(例如聚合到适当粒度,例如用于由中央系统使用的范围水平),并且中央系统将本地高速缓存命中统计与它自己的工作量统计(涉及本地服务器的高速缓存未命中并且也涉及与本地服务器的高速缓存命中和未命中对应的历史数据)一起合并,并且使合并的统计可用于每个本地服务器。因此可以针对具体服务器定制向本地服务器返回的合并的统计。每个本地服务器然后使用合并的统计以提高本地高速缓存性能。本地高速缓存通过杠杆调节用于组合来自中央统计的强制高速缓存填充与基于本地和中央统计的有选择的高速缓存填充的能力来实现这一点。
在图1中示出并且已经在前一节中讨论总架构。在本地服务器LS1、LS2与中央系统CS之间的双箭头代表可以用定期或者偶发方式发生的统计交换。
中央系统可以例如在SAN存储服务器中使用如已知的任何高速缓存机制CC。它也可以使用分层T机制或者甚至高速缓存与分层机制的组合CC/T。而自动化分层机制(例如IBM EasyTier机制)有利地用来向更快存储设备(例如SSD、闪存)分配热门数据并且向HDD分配冷门数据或者分别向快速HDD层和慢速HDD层分配热门和冷门数据。中央系统可以在后端存储装置上分层布置数据以便针对工作量更好地优化数据。高速缓存本身未包括层,并且分层是指在后端存储装置上重新布置数据。如已知的那样,后端存储装置是指实际持久存储介质,例如HDD,其中持久地存储实际数据。
在下文中,术语“中央高速缓存”是指中央系统(即共享的数据存储系统CS)的高速缓存存储器。引申开来,它可以是指支配中央高速缓存的操作,因此是指中央系统本身。类似地,“本地高速缓存”是指本地服务器管理的高速缓存存储器,并且引申开来,它可以是指支配本地高速缓存的操作并且因此是指本地服务器本身。
由于工作量的所有本地高速缓存未命中将最终去往SAN服务器用于取回对应数据,所以无需本地服务器报告关于高速缓存未命中的统计(超出向中央服务器“正常”寻址的高速缓存未命中请求)。然而在现有技术系统中,在中央服务器中未看见从本地高速缓存服务的本地高速缓存命中。因此在当前实施例中,本地服务器现在负责收集关于高速缓存命中的统计并且向中央系统报告它们。
回顾由于中央系统将看见每个本地高速缓存的所有高速缓存未命中,所以中央系统能够针对每个本地高速缓存组合高速缓存未命中和报告的高速缓存命中统计。可以使用如用于与高速缓存未命中对应的数据/数据标识符和与高速缓存命中对应的数据/数据标识符的相似合并机制。中央系统然后使这些统计可用于每个本地服务器。这可以由本地或者中央高速缓存发起:
-在拉取(pull)模式中,本地服务器将发起向中央系统的通信用于发送高速缓存命中统计或者用于请求中央高速缓存的合并的统计。
-在推送(push)模式中,中央系统将向本地服务器定期广播合并的统计。
可以“带内”或者“带外”执行在本地服务器与中央系统之间的统计的交换。带内意味着向如下数据路径中嵌入统计交换,应用服务器通过该数据路径读取或者存储数据,例如光纤信道或者SCSI。带外意味着统计交换使用在应用服务器与SAN存储服务器之间的独立通信信道。
本地高速缓存经常被设计为利用本地工作量和工作量的暂时本地性。在中央系统合并从所有本地高速缓存收集的统计并且使它们可用于每个本地高速缓存时,可以大量提高本地高速缓存的高速缓存性能,因为这些统计代表关于哪些数据范围值得高速缓存(即“热门”范围)的中央以及长期看法。一种用于提高本地高速缓存性能的可能性是向本地高速缓存中无条件地添加如CS的统计指示的那些热门数据范围。注意本地高速缓存可以在与从中央高速缓存接收合并的统计的频率不同的频率报告高速缓存命中统计。
在下文中公开本地高速缓存设计,这些设计利用中央统计以提高高速缓存性能。
在优选本地高速缓存设计实施例中,本地高速缓存向中央系统报告高速缓存命中统计,例如每个范围的命中计数并且以定期方式、例如每15分钟接收用于1GB数据范围的合并的统计。本地高速缓存可以例如使用SATA或者SAS闪存SSD或者PCI-e闪寸卡作为高速缓存的数据将驻留于其上的存储介质。假设本地闪存高速缓存在1MB片段中组织高速缓存的数据,然后高速缓存的实体的大小是1MB。
通常,范围(例如1GB数据)是指多个(固定大小的)连续片段。片段是指范围的固定大小的部分和块的固定大小的倍数。起初在系统中固定块大小。每个部分通常被预先确定并且因此不是动态的。范围和片段可以是接下来将在本地高速缓存中填充(如果必要)的数据。而优选地如在前一节中回顾的那样使用范围/片段标识符而不是待填充的数据。例如优选地在图3的本地高速缓存填充逻辑10这一级使用标识符。在所有情况下,范围/片段无歧义地是指待填充的数据。因而将在下文中未进行在数据的范围/片段与数据的范围/片段的标识符之间的区分,因为它们是指相同数据。
注意在现有技术中,范围有时被定义为计算机文件系统中的为文件而保留的连续存储区域。在当前情况下,“范围”未必被保留用于文件,但是仍然对应于(而未在计算机文件系统中、但是在存储器存储系统中的)连续存储空间区域。
在只读本地高速缓存,即仅高速缓存未修改数据的本地高速缓存的情况下,在接收用户读取请求时,首先查询本地高速缓存。如果是高速缓存命中,则可以从本地闪存高速缓存读取数据并且将其发送回应用。否则(高速缓存未命中),向SAN存储服务器转发请求。在从SAN存储服务器接收请求的数据时,向请求应用发送回数据并且根据它的数据大小或者它的热门度可以向或者可以不向本地闪存高速缓存中填充它。在用户写入请求时,使本地高速缓存中的数据的旧版本(如果存在)无效,并且向SAN存储服务器写入数据。很清楚,可以发生的是对于给定的读取请求,可能在高速缓存中发现请求的数据中的仅一些数据,也就是说,该请求的部分可以是高速缓存命中而它的部分是高速缓存未命中。这一情况可以称为“部分命中”。在这样的情况下,本地高速缓存可以判决服务来自高速缓存的命中数据和来自SAN的未命中数据或者服务来自SAN的所有数据——这样的判决将由称为部分命中策略的策略支配。在任何情况下,用于供应命中和未命中的前述原理分别对于部分命中和部分未命中仍然成立,因为可以部分命中可以被作为命中或者作为互补未命中和命中来处理。
如在前一节中回顾的那样,高速缓存填充操作中的多数操作优选地由异步执行单元10(例如专用软件线程)支配。这意味着在关键数据路径以外操作实际高速缓存填充操作。图3示出异步逻辑填充的总过程,该过程涉及到本地高速缓存监管的各种部件、特别是高速缓存填充逻辑10(后者包括过滤器11、观察列表12、队列21、22和调度器23)、数据移动器24、直接附着存储(DAS)闪存高速缓存26和高速缓存目录25。
分别向过滤器11和观察列表12发送在步骤S400接收的热门列表ACD和在S200Ma接收的本地读取未命中LRM。基于接收的热门列表ACD和本地读取未命中LRM,填充逻辑10生成高速缓存填充请求序列(步骤S11、S121)。如在前一节中讨论的那样,向由数据移动器24异步地处理的两个队列21、22发送高速缓存填充请求。也优选地在与正常用户读取/写入请求比较而言的较低的优先级和/或有限带宽处理队列。可以用严格优先级调度器23服务两个队列。而在变体中,可以代之以使用仅一个队列。然而具有两个队列会让数据将更可能在将来更快命中的数据带入高速缓存中,并且使得更易于管理具有高优先级的请求,因为可以在一个队列中放置高优先级请求并且可以在另一队列中放置较低优先级的请求。接着,数据移动器24将从SAN存储服务器CS读取为高速缓存填充而保持的数据(步骤S450)并且在直接附着存储(DAS)高速缓存26上存储它(步骤S550);相应地更新高速缓存目录25,步骤S560。外无论本地服务器LS何时确认本地读取命中,高速缓存目录25都可以另外被更新,步骤S200Ha。如更早说明的那样,过滤器11可以继续过滤掉已经在高速缓存中的那些数据,步骤S11b,也见图4。尽管最热门数据片段被指示为直接填充到高速缓存中(S11),但较不热门数据片段被发送到观察列表12,步骤S11a。
因此在若干场合需要SAN存储服务器CS:第一次(步骤S400)为提供聚合的高速缓存数据信息ACD,即全局统计,并且第二次(S450)为如果需要则查询与为了高速缓存填充而保持的那些数据对应的实际数据。实际上,在图3的实施例中,填充逻辑10基于数据标识符而不是实际数据进行判决,使步骤S450在该情况下为必要。这使得有可能明显减少向本地服务器转发的ACD数据的数量,因为并不是ACD数据中标识的所有数据都应被进行本地高速缓存。当然在变体中,实际数据可以与ACD一起发送,在该情况下,步骤S450将不再必要。最后也需要系统CS对来自本地服务器的“通常”高速缓存未命中请求做出响应;在附图中未明示这一点,但是对应操作与图3中的步骤S450、S550和S560相似。
图4示出用于本地服务器的具体过程,该本地服务器使用中央统计ACD、即SAN存储服务器CS发送的热门范围列表ACD以进行高速缓存填充判决。如图4中所示,SAN存储服务器CS将生成范围ACD的有序列列表,即其中根据数据范围的热门度对它们排序。这优选地通过组合当前和以往高速缓存命中以及高速缓存未命中统计来实现。ACD中的每个范围代表可以以后填充或者不填充的连续片段标识符的列表。如陈述的那样,在接收热门范围ACD的有序列表时,本地高速缓存将首先从那些片段过滤掉已经在高速缓存中、即已经存在于高速缓存中或者在填充过程中的片段标识符,步骤S11b。留下的片段标识符(即非驻留片段的标识符)可能包括少数“极热门”片段标识符(虚线矩形段):这些被直接发送(步骤S11)到填充队列21。如所述的那样,优选地用严格优先级调度器23服务图3的队列21、22。填充逻辑执行单元10将取得并且异步地执行那些填充请求。
有用于确定‘极热门’的片段数目的多种可能机制;极热门片段的数量优选地可变。如果例如活跃列表ACD中的数据完全归因于预测的或者应用发起的事件则将需要调整机制,在该情况下仅需无论度量或者工作量如何都填充片段。注意,这样的片段标识符可能已经在填充观察列表中。在该情况下,将其从观察列表去除是有益的。向优选地由时钟算法的修改版本操作的填充观察列表12中插入剩余较少热门片段标识符,以找出值得填充的片段,即根据某些规则。
此外并且如更早已经提到的那样,可以有可以向填充观察列表12中添加的片段标识符,例如,近期已经看见读取未命中的任何片段标识符LRM的其它流(S200Ma)。
更具体而言,可以针对观察列表12中的每个片段标识符保持参考伪命中计数C。填充观察列表可以被管理如下:在片段标识符到达填充观察列表时,首先检查片段标识符是否已经在填充观察列表中。这独立于片段标识符是否来自热门范围有序列表或者归因于读取未命中或者另一来源。因此:
-如果片段标识符是读取命中并且产生观察列表上的伪命中,则它的伪命中计数C被递增1。另外,
-如果其伪命中计数C大于(或者等于)阈值T,则从观察列表取出并且向填充队列中放入片段标识符(步骤S121)。
现在如果片段标识符作为中央系统建议ACD的部分而来并且在观察列表中,则在该情况下不会完成任何特定操作。意图在于不递增用于ACD建议的伪命中计数器,即伪命中仅针对本地读取未命中LRM而出现,从而ACD列表中的冷门片段与本地读取未命中LRM相比较不会获得额外命中。
如果片段标识符仍未在观察列表12中,则通过移动时钟12a的钟针经过循环缓冲器并且在循环中执行以下步骤来开始更换过程:
-如果指向的元素空闲,则该空档被传入片段标识符占用,并且初始化它的命中计数为0。该过程然后停止。
-如果指向的元素与在非驻留时钟中的平均命中计数相比较具有较低的命中计数(例如接近0的某值或者T的部分),则去除它并且由传入片段占用它的空档,而初始化它的命中计数为0。该过程然后停止。
-否则,重置指向的片段标识符的参考计数或者除以衰减因子(比如2或者3),然后钟针移向下一元素。
一般可以执行循环直至新片段标识符已经在观察列表中发现位置。备选地,可以在某一数目的钟针移动之后停止它,以限制耗费的处理循环。在后一种情况下,必须在最后一圈中判决保持哪个片段标识符(新片段标识符或者在当前钟针位置处的片段标识符)而放弃哪个。该判决可以是当前C和T值的函数。
可以设置阈值T为可配置值,例如3。该值可以由试错法来细化这一个值。由于这一个值影响高速缓存性能,所以优选地利用一种用于如下设置自适应阈值的方法。
-假如另一时钟24a基于驻留片段的参考计数管理这些片段,自适应阈值方法将保持跟踪(步骤S580)在步骤S570驱逐的最新近驱逐的片段的参考计数的(移动)平均值,比如Ce。
-然后,针对两个时钟(即用于驻留数据的时钟24a和用于非驻留数据(即在观察列表中)的时钟12a)测量时钟移动速度。
例如:在给定的时间段期间,驻留时钟24a移动Nr圈,而非驻留时钟12a移动Nn圈。然后,阈值T被设置为CeNr/Nn。
回顾按照定义,T是用于向本地高速缓存中填充非驻留片段的参考计数阈值。通过设置T=CeNr/Nn,预计进入本地高速缓存26的片段与驱逐的片段相比而言更有益。
在极端情况下,可能发生(至少在理论上)针对一段时间无填充请求,然后设置T为零值,因为Nr=0。这是不希望的,因为允许填充冷门片段。为了避免这一极端情况,填充逻辑将实行最小填充速度,即针对给定的时间段,填充逻辑将发出至少Tf个片段填充请求,其中Tf是预定义的小数目。
为了填充非驻留片段,如果本地高速缓存已满,则必须驱逐来自该高速缓存的一个驻留片段。待驱逐的驻留片段由驱逐算法选择。在一个优选实施例中,使用时钟算法,其中对于每个驻留片段,参考计数用来记录高速缓存命中。一旦钟针指向具有少数命中的那些片段,它们就被驱逐。然而SAN存储服务器或者应用可以规定特定片段将不会被驱逐算法考虑用于驱逐(例如,即SAN存储服务器标识为“极热门”、即“必须有”的片段)。只要SAN存储服务器规定,则那些“极热门”片段将会留在本地高速缓存中。这可以将如下单个位用于每个驻留片段来实现,该位指示该片段是否被钉住(即不能从高速缓存去除它)。为了完整,驻留时钟24a使用与非驻留时钟12a相同的算法以重置或者衰减用于传递的片段的参考计数,因为参考计数不低。
接下来关于计算机程序代码实施例的考虑如下。
可以适当地设计计算机化的设备用于实施如这里描述的本发明的实施例。就这一点而言,可以理解这里描述的方法主要为非交互和自动化。在示例实施例中,可以在交互、部分交互或者非交互系统中实施这里描述的实施例。可以在软件(例如固件)、硬件或者其组合中实施这里描述的方法。在示例实施例中,在软件中实施这里描述的方法为可执行程序,后者由适当数字处理设备执行。更一般而言,可以实施本发明的实施例,其中使用通用数字计算机、比如个人计算机、工作站等。
这里描述的方法可以是以源程序、可执行程序(目标代码)、脚本或者包括待执行的指令集的任何其它实体的形式。在以源程序形式时,然后需要经由可以在存储器内或者未在存储器内包括的如本身已知的编译器、汇编器、解译器等转译程序以便恰当结合OS来进行操作。另外,可以编写方法为具有数据和方法类的面向对象编程语言或者具有例程、子例程和/或函数的过程编程语言。
如本领域技术人员将理解的那样,可以实现本发明的方面为计算机化的系统、方法或者计算机程序产品。因而,本发明的方面可以采用全硬件实施例、全软件实施例(包括固件、驻留软件、微代码等)或者将软件与硬件方面组合的实施例的形式。另外,本发明的方面可以采用在一个或者多个计算机可读介质中实现的计算机程序产品的形式,该一个或者多个计算机可读介质具有在其上实现的计算机可读程序代码。可以利用一个或者多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质可以例如是但不限于电子、磁、光学、电磁、红外线或者半导体系统、装置或者设备或者前述各项的任何适当组合。计算机可读存储介质的更多具体示例(非穷尽列举)包括以下各项:具有一个或者多个接线的电连接、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光学存储设备、磁存储设备或者前述各项的任何适当组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,该有形介质可以包含或者存储用于由指令执行系统、装置或者设备使用的或者与指令执行系统、装置或者设备结合使用的程序。
计算机可读信号介质可以包括例如在基带中或者作为载波的部分的传播数据信号,该传播数据信号具有在其中实现的计算机可读程序代码。这样的传播信号可以采用包括但不限于电磁、光学或者其任何适当组合的多种形式中的任何形式。计算机可读信号介质可以是任何计算机可读介质,该计算机可读介质不是计算机可读存储介质并且可以传达、传播或者传送用于由指令执行系统、装置或者设备使用的或者与指令执行系统、装置或者设备结合使用的程序。可以使用任何适当介质来传输在计算机可读介质上实现的程序代码,该介质包括但不限于无线、有线、光纤线缆、R.F等或者前述各项的任何适当组合。
可以用一种或者多种编程语言的任何组合编写用于实现用于本发明的方面的操作的计算机程序代码,该一种或者多种编程语言包括诸如Java、Smalltalk、C++等面向对象编程语言和比如C编程语言或者相似编程语言这样的常规过程编程语言。根据涉及的本发明的方面,程序代码可以完全在一个本地服务器上、部分在一个本地服务器上而部分在远程本地服务器上执行。它可以部分在本地服务器上而部分在中央系统上或者完全在中央系统上执行。
上文参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述本发明的方面。将理解计算机程序指令可以实施流程图图示和/或框图的每个块。可以向通用计算机、专用计算机或者其它可编程数据处理装置的处理器提供这些计算机程序指令以生产机器,从而经由计算机或者其它可编程数据处理装置的处理器执行的指令创建用于实施在流程图和/或框图的一个或者多个块中指定的功能/动作的装置。
也可以向计算机、其它可编程数据处理装置或者其它设备上加载计算机程序指令以使系列操作步骤在计算机、其它可编程装置或者其它设备上执行以产生计算机实施的过程,从而在计算机或者其它可编程装置上执行的指令提供用于实施在流程图和/或框图的一个或者多个块中指定的功能/动作的过程。
图中的流程图和框图举例说明根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。就这一点而言,在流程图或者框图中的每个块可以代表代码模块、段或者部分,该代码模块、段或者部分包括用于实施指定的逻辑功能的一个或者多个可执行指令。也应当注意,在一些备选实现方式中,在块中指出的功能可以不按图中指出的顺序出现。例如事实上根据涉及到的功能和算法优化可以基本上并行执行接连示出的两个块或者有时可以按相反顺序执行这些块。也将注意,框图和/或流程图图示的每个块以及在框图和/或流程图图示中的块组合可以由执行指定的功能或者动作的基于专用硬件的系统实施或者由专用硬件与计算机指令的组合实施。
尽管已经参照某些实施例描述本发明,但是本领域技术人员将理解,在不脱离本发明的范围的前提下,可以进行各种改变并且可以替代等同体。此外,可以进行许多修改以使特定情形或者材料适应本发明的教导而不脱离其范围。因此,旨在于本发明不限于公开的具体实施例、但是本发明将包括落入所附权利要求的范围内的所有实施例。就这一点而言,根据选择的实施例,无需涉及到在附图中描绘的所有部件/步骤。此外,可以设想除了上文明示的变体之外的许多变体。例如中央服务器可以独自实施分层机制,即,无高速缓存机制。作为另一例子,本地服务器L1、L2中的每个本地服务器可以将细粒度本地统计组装成粗粒度统计,以便使它在更好地适合于中央系统CS的格式中可用于该中央系统。
标号列表
1 计算机化的系统
10 本地高速缓存填充逻辑
11 过滤器
12 观察列表
12a 非驻留(观察列表)时钟
21 本地高速缓存填充逻辑的第一队列
22 本地高速缓存填充逻辑的第二队列
23 本地高速缓存填充逻辑的调度器
24 本地高速缓存数据移动器
24a 驻留时钟
25 本地高速缓存目录
26 本地Das高速缓存存储器
A1 应用#1
A2 应用#2
ACD 聚合的高速缓存数据信息
BES 共享的数据存储系统的后端存储装置
CC 共享的数据存储系统的高速缓存
CM1 高速缓存(DAS)存储器#1
CM2 高速缓存(DAS)存储器#2
CM 高速缓存(DAS)存储器
CS 共享的数据存储系统(中央系统,SAN存储服务器)
D 在共享的数据存储系统中存储的数据
H 高速缓存命中数据
H,M 高速缓存数据信息
LRM 本地高速缓存未命中数据
LS1 本地服务器#1
LS2 本地服务器#2
M 高速缓存未命中数据
T 共享的数据存储系统的分层机制
Claims (14)
1.一种用于管理高速缓存存储器的方法,所述方法包括:
提供(S100)计算机化的系统(1),所述计算机化的系统包括共享的数据存储系统(CS)和若干本地服务器(LS1,LS2),其中:
所述共享的数据存储系统被配置为与所述本地服务器交互;
所述本地服务器使用相应高速缓存存储器(CM1,CM2)来服务应用(A1,A2);以及
所述本地服务器中的每个本地服务器访问在所述共享的数据存储系统中存储的数据(D),
所述方法还包括:
从所述本地服务器(LS1,LS2)中的每个本地服务器向所述共享的数据存储系统(CS)提供(S200H,S200M)高速缓存数据信息,提供的所述高速缓存数据信息包括:
高速缓存命中数据(H),其代表所述本地服务器中的每个本地服务器的高速缓存命中;以及
高速缓存未命中数据(M),其代表所述本地服务器中的每个本地服务器的高速缓存未命中;
在所述共享的数据存储系统处将接收的所述高速缓存未命中数据和所述高速缓存命中数据的至少部分聚合(S300)到聚合的高速缓存数据信息(ACD),并且向所述本地服务器中的一个或者多个本地服务器提供(S400)所述聚合的高速缓存数据信息;以及
在所述本地服务器中的所述一个或者多个本地服务器处,基于提供的所述聚合的高速缓存数据信息(ACD),更新(S500)用以服务相应一个或者多个应用的相应一个或者多个高速缓存存储器。
2.一种用于管理高速缓存存储器的方法,包括:
提供使用高速缓存存储器(CM1)来服务应用(A1)的本地服务器(LS1),所述本地服务器(LS1)还被配置为与共享的数据存储系统(CS)交互,所述共享的数据存储系统(CS)被配置为与访问在所述共享的数据存储系统(CS)中存储的数据的若干本地服务器(LS1,LS2)交互,
所述方法还包括,在所述本地服务器(LS1)处:
使得(S200H,S200M)高速缓存数据信息可用于所述共享的数据存储系统(CS),所述高速缓存数据信息包括:
高速缓存命中数据,其代表所述每个本地服务器的高速缓存命中;以及
高速缓存未命中数据,其代表所述每个本地服务器的高速缓存未命中;
从所述共享的数据存储系统接收通过聚合(S300)从若干本地服务器获得的高速缓存命中数据和高速缓存未命中数据而获得的聚合的高速缓存数据信息(ACD);以及
基于接收的所述聚合的高速缓存数据信息(ACD),来更新(S500)所述高速缓存存储器。
3.一种用于管理高速缓存存储器的方法,包括:
提供(S100)包括共享的数据存储系统(CS)的计算机化的系统(1),所述共享的数据存储系统(CS)被配置为与使用相应高速缓存存储器(CM1,CM2)来服务应用(A1,A2)的若干本地服务器(LS1,LS2)交互,其中所述本地服务器优选地在所述应用请求时访问在所述共享的数据存储系统(CS)中存储的数据,所述方法还包括在所述共享的数据存储系统(CS)处:
以任何顺序从所述本地服务器(LS1,LS2)中的每个本地服务器接收(S210H,S210M,S400):
高速缓存命中数据,其代表所述每个本地服务器的高速缓存命中;以及
高速缓存未命中数据,其代表所述每个本地服务器的高速缓存未命中;
将接收的所述高速缓存命中数据和接收的所述高速缓存未命中数据的至少部分聚合(S300)到聚合的高速缓存数据信息(ACD)中;以及
向所述本地服务器(LS1,LS2)中的一个(LS1)或者多个本地服务器提供(S400)所述聚合的高速缓存数据信息,用于随后基于所述聚合的高速缓存数据信息(ACD)来更新(S500)用以服务相应应用的相应高速缓存存储器(CM1,CM2)。
4.根据权利要求1至3中的任一权利要求所述的方法,其中聚合(S300)还包括:根据所述高速缓存命中数据和所述高速缓存未命中数据的出现对所述高速缓存命中数据和所述高速缓存未命中数据排序,以使得所获得的所述聚合的高速缓存数据信息的结构反映所述排序。
5.根据权利要求1或者2所述的方法,其中关于来自由相应本地服务器(LS1)服务的相应应用(A1)的、对高速缓存存储器(CM1)的请求,异步地执行更新(S500)所述高速缓存存储器(CM1)。
6.根据权利要求1至5中的任一权利要求所述的方法,其中更新(S500)高速缓存存储器(CM1)包括:选择所述聚合的高速缓存数据信息(ACD)中的数据子集,并且根据选择的所述数据子集填充(S11,S121)所述高速缓存存储器(CM1)。
7.根据权利要求6所述的方法,其中更新(S500)高速缓存存储器(CM1)包括:选择所述聚合的高速缓存数据信息中的至少两个相异数据子集;指示(S11)利用与所述相异数据子集之一对应的数据无延迟地填充(S11)所述高速缓存存储器(CM1);以及指示(S11a)在观察列表(12)中放置与所述相异数据子集中的另一数据子集对应的数据,
所述方法还包括步骤:
监视(S120)所述观察列表中的数据,以确定将在所述高速缓存存储器(CM1)中填充(S121)的数据;以及
在所述高速缓存存储器(CM1)中填充(S121)相应地确定的所述数据。
8.根据权利要求7所述的方法,其中所述方法还包括:指示(S200Ma)在观察列表(12)中放置与本地高速缓存未命中数据(LRM)对应的附加数据,所述本地高速缓存未命中数据代表由本地服务器独立于所述聚合的高速缓存数据信息(ACD)而收集的高速缓存未命中数据,以使得所述本地高速缓存未命中数据和与所述两个相异数据子集中的第二数据子集对应的所述数据二者能够被监视,以确定哪个数据将在所述高速缓存存储器(CM1)中被填充(S121)。
9.根据权利要求7或者8所述的方法,其中所述观察列表包括高速缓存的对象的循环列表(12a),并且监视(S120)所述观察列表中的数据包括:从所述循环列表(12a)驱逐最旧的高速缓存的对象,所述最旧的高速缓存的对象在给定的时间段期间未曾被请求进行访问。
10.根据权利要求7至9中的任一权利要求所述的方法,其中所述方法还包括:在利用已经驻留于高速缓存存储器中的数据填充高速缓存存储器之前,过滤(S11b)这样的数据。
11.根据权利要求1至10中的任一权利要求所述的方法,其中聚合的高速缓存数据信息以比在高速缓存存储器的任何后续更新处使用的粒度更大的粒度被聚合。
12.一种共享的数据存储系统(CS),被配置为执行根据权利要求1至11所述的方法中的任一方法中的所述共享的数据存储系统(CS)执行的步骤中的每个步骤。
13.一种服务器(LS1,LS2),被配置为执行根据权利要求1至11所述的方法中的任一方法中的单个本地服务器执行的步骤中的每个步骤。
14.一种计算机化的系统(1),包括根据权利要求12所述的共享的数据存储系统(CS)以及各自根据权利要求13所述的若干本地服务器(LS1,LS2)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1210995.5A GB2503266A (en) | 2012-06-21 | 2012-06-21 | Sharing aggregated cache hit and miss data in a storage area network |
GB1210995.5 | 2012-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103513935A true CN103513935A (zh) | 2014-01-15 |
CN103513935B CN103513935B (zh) | 2016-06-01 |
Family
ID=46641272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310246644.4A Active CN103513935B (zh) | 2012-06-21 | 2013-06-20 | 用于管理高速缓存存储器的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9152599B2 (zh) |
CN (1) | CN103513935B (zh) |
DE (1) | DE102013210719B4 (zh) |
GB (1) | GB2503266A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155575A (zh) * | 2015-04-17 | 2016-11-23 | 伊姆西公司 | 用于扩展存储系统的高速缓存的方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9882984B2 (en) | 2013-08-02 | 2018-01-30 | International Business Machines Corporation | Cache migration management in a virtualized distributed computing system |
JP6142727B2 (ja) * | 2013-08-12 | 2017-06-07 | 富士通株式会社 | データアクセス分析プログラム、データアクセス分析方法、及びデータアクセス分析装置 |
US9996270B2 (en) | 2014-07-08 | 2018-06-12 | International Business Machines Corporation | Storage in tiered environment with cache collaboration |
US9921750B2 (en) | 2014-11-20 | 2018-03-20 | Samsung Electronics Co., Ltd. | Solid state drive (SSD) memory cache occupancy prediction |
US10671303B2 (en) | 2017-09-13 | 2020-06-02 | International Business Machines Corporation | Controlling a storage system |
CN110830535B (zh) * | 2018-08-10 | 2021-03-02 | 网宿科技股份有限公司 | 一种超热文件的处理方法、负载均衡设备及下载服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764129A (zh) * | 2004-10-21 | 2006-04-26 | 国际商业机器公司 | 防止多个主机的异步arp高速缓存中毒的方法和系统 |
US20060230099A1 (en) * | 2005-04-08 | 2006-10-12 | Yuzuru Maya | File cache-controllable computer system |
US20090292882A1 (en) * | 2008-05-23 | 2009-11-26 | Inventec Corporation | Storage area network server with parallel processing cache and access method thereof |
CN102165420A (zh) * | 2008-10-06 | 2011-08-24 | 国际商业机器公司 | 通过多个应用程序服务器访问共享数据的系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6408292B1 (en) * | 1999-08-04 | 2002-06-18 | Hyperroll, Israel, Ltd. | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions |
JP3736305B2 (ja) * | 2000-07-06 | 2006-01-18 | 日本電気株式会社 | ディスクキャッシュシステムおよびディスクキャッシュ制御方法 |
US6868439B2 (en) | 2002-04-04 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | System and method for supervising use of shared storage by multiple caching servers physically connected through a switching router to said shared storage via a robust high speed connection |
US7103617B2 (en) * | 2003-01-17 | 2006-09-05 | Tacit Networks, Inc. | Method and system for use of storage caching with a distributed file system |
CA2484694A1 (en) * | 2004-10-14 | 2006-04-14 | Alcatel | Database ram cache |
US7415574B2 (en) | 2006-07-05 | 2008-08-19 | Cisco Technology, Inc. | Dynamic, on-demand storage area network (SAN) cache |
US7930481B1 (en) | 2006-12-18 | 2011-04-19 | Symantec Operating Corporation | Controlling cached write operations to storage arrays |
US8095618B2 (en) * | 2007-03-30 | 2012-01-10 | Microsoft Corporation | In-memory caching of shared customizable multi-tenant data |
CN101937442A (zh) * | 2009-06-29 | 2011-01-05 | 国际商业机器公司 | 用于缓存术语数据的方法和系统 |
US8886760B2 (en) * | 2009-06-30 | 2014-11-11 | Sandisk Technologies Inc. | System and method of predictive data acquisition |
US9032204B2 (en) * | 2011-01-07 | 2015-05-12 | Mastercard International Incorporated | Methods and systems for providing a signed digital certificate in real time |
US8332488B1 (en) * | 2011-03-04 | 2012-12-11 | Zynga Inc. | Multi-level cache with synch |
US8972799B1 (en) * | 2012-03-29 | 2015-03-03 | Amazon Technologies, Inc. | Variable drive diagnostics |
US9037921B1 (en) * | 2012-03-29 | 2015-05-19 | Amazon Technologies, Inc. | Variable drive health determination and data placement |
US8719320B1 (en) * | 2012-03-29 | 2014-05-06 | Amazon Technologies, Inc. | Server-side, variable drive health determination |
-
2012
- 2012-06-21 GB GB1210995.5A patent/GB2503266A/en not_active Withdrawn
-
2013
- 2013-06-10 DE DE102013210719.6A patent/DE102013210719B4/de active Active
- 2013-06-18 US US13/920,669 patent/US9152599B2/en active Active
- 2013-06-20 CN CN201310246644.4A patent/CN103513935B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1764129A (zh) * | 2004-10-21 | 2006-04-26 | 国际商业机器公司 | 防止多个主机的异步arp高速缓存中毒的方法和系统 |
US20060230099A1 (en) * | 2005-04-08 | 2006-10-12 | Yuzuru Maya | File cache-controllable computer system |
US20090292882A1 (en) * | 2008-05-23 | 2009-11-26 | Inventec Corporation | Storage area network server with parallel processing cache and access method thereof |
CN102165420A (zh) * | 2008-10-06 | 2011-08-24 | 国际商业机器公司 | 通过多个应用程序服务器访问共享数据的系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155575A (zh) * | 2015-04-17 | 2016-11-23 | 伊姆西公司 | 用于扩展存储系统的高速缓存的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20130346538A1 (en) | 2013-12-26 |
CN103513935B (zh) | 2016-06-01 |
GB2503266A (en) | 2013-12-25 |
GB201210995D0 (en) | 2012-08-01 |
US9152599B2 (en) | 2015-10-06 |
DE102013210719A1 (de) | 2013-12-24 |
DE102013210719B4 (de) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103513935A (zh) | 用于管理高速缓存存储器的方法和系统 | |
CN106716334B (zh) | 文件系统卷内的高效数据移动 | |
CN103370685B (zh) | 存储环境中的i/o写入的调度 | |
US7996623B2 (en) | Read ahead storage control | |
US8886880B2 (en) | Write cache management method and apparatus | |
US10001927B1 (en) | Techniques for optimizing I/O operations | |
CN102486752B (zh) | Sas扩展器中数据预取 | |
US9286239B2 (en) | Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride | |
CN104978362B (zh) | 分布式文件系统的数据迁移方法、装置及元数据服务器 | |
CN104040508B (zh) | 用于在高速缓存系统中管理数据的方法和系统 | |
JP2015515670A (ja) | ハイブリッドストレージ集合体ブロック追跡 | |
US10380023B2 (en) | Optimizing the management of cache memory | |
US10146449B1 (en) | Purchase planning for data storage processing systems | |
CN109840134A (zh) | 异构虚拟云高速缓存环境中的动态高速缓存分区管理器 | |
CN103927136B (zh) | 输入输出io类型的识别方法和装置 | |
CN112306925A (zh) | 访问请求的处理方法、装置、设备及存储介质 | |
US11561796B2 (en) | Linked miss-to-miss instruction prefetcher | |
KR20220045902A (ko) | 스토리지 리소스의 파티션 관리를 위한 시스템, 방법, 및 장치 | |
Li et al. | Algorithm-Switching-Based Last-Level Cache Structure with Hybrid Main Memory Architecture | |
US20110047332A1 (en) | Storage system, cache control device, and cache control method | |
WO2023061569A1 (en) | Smart defragmentation of a data storage system |
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 |