用于管理高速緩存存儲(chǔ)器的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及用于管理高速緩存存儲(chǔ)器的方法、系統(tǒng)及其部件。該方法包括:提供包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)和若干本地服務(wù)器的計(jì)算機(jī)化的系統(tǒng);從本地服務(wù)器中的每個(gè)本地服務(wù)器向共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)提供高速緩存數(shù)據(jù)信息,提供的高速緩存數(shù)據(jù)信息包括高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù);在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)處將接收的高速緩存未命中數(shù)據(jù)和高速緩存命中數(shù)據(jù)的至少部分聚合到聚合的高速緩存數(shù)據(jù)信息,并且向本地服務(wù)器中的一個(gè)或者多個(gè)本地服務(wù)器提供聚合的高速緩存數(shù)據(jù)信息;以及在本地服務(wù)器中的所述一個(gè)或者多個(gè)本地服務(wù)器處基于提供的聚合的高速緩存數(shù)據(jù)信息更新用來服務(wù)相應(yīng)一個(gè)或者多個(gè)應(yīng)用的相應(yīng)一個(gè)或者多個(gè)高速緩存存儲(chǔ)器。
【專利說明】用于管理高速緩存存儲(chǔ)器的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明主要地涉及用于管理高速緩存存儲(chǔ)器的計(jì)算機(jī)化的方法和系統(tǒng)的領(lǐng)域,特別是在存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)環(huán)境中。
【背景技術(shù)】
[0002]存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)是提供對(duì)合并的塊級(jí)數(shù)據(jù)存儲(chǔ)裝置的訪問的專用網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)主要用來使存儲(chǔ)設(shè)備(例如盤陣列或者帶庫(kù))對(duì)于服務(wù)器可訪問;從而這些設(shè)備表現(xiàn)為本地附著到操作系統(tǒng)。SAN通常具有它自己的存儲(chǔ)設(shè)備網(wǎng)絡(luò),這些存儲(chǔ)設(shè)備一般不可通過局域網(wǎng)由其它設(shè)備訪問。SAN不提供文件抽象化、僅提供塊級(jí)操作。然而在SAN上面構(gòu)建的文件系統(tǒng)提供文件級(jí)訪問(例如參見Wikipedia contributors, ' Storage areanetwork' , ffikipedia, The Free Encyclopedia,21May2012)。
[0003]更一般而言,有若干已知環(huán)境,在這些環(huán)境中,本地應(yīng)用服務(wù)器(即使用相應(yīng)高速緩存存儲(chǔ)器用于對(duì)相應(yīng)應(yīng)用進(jìn)行服務(wù))被配置為與共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)交互,從而它們可以訪問共享的存儲(chǔ)池上存儲(chǔ)的數(shù)據(jù)。系統(tǒng)如何管理高速緩存存儲(chǔ)器通常實(shí)施如下:
[0004]-本地服務(wù)器向共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)報(bào)告本地高速緩存未命中;
[0005]-作為響應(yīng),后者提供未命中的數(shù)據(jù);并且
[0006]-它還合并并且使用出于高速緩存/分層目的、即數(shù)據(jù)放置目的而接收的高速緩存未命中數(shù)據(jù)。
[0007]這例如是在SAN環(huán)境中完成的。很清楚,共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)發(fā)揮中心作用;因此有時(shí)將它稱為“中央系統(tǒng)”。
[0008]在典型SAN環(huán)境中,多個(gè)應(yīng)用服務(wù)器經(jīng)由標(biāo)準(zhǔn)塊級(jí)訪問接口連接到共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(通常在例如512至528字節(jié)的固定大小的塊中訪問數(shù)據(jù))。共享的存儲(chǔ)池由SAN存儲(chǔ)服務(wù)器(比如IBM DS8000)管理。SAN存儲(chǔ)服務(wù)器經(jīng)常使用大的高速緩存以增加系統(tǒng)吞吐量并且減少訪問延時(shí),而又同時(shí)每個(gè)應(yīng)用服務(wù)器也可以使用高速緩存以增加在1/0效率方面的應(yīng)用靈活性并且減少SAN服務(wù)器的帶寬的消耗。如可以實(shí)現(xiàn)的那樣,在應(yīng)用服務(wù)器的高速緩存(下文也稱為“本地高速緩存”)和在SAN存儲(chǔ)服務(wù)器的高速緩存獨(dú)立地操作:在它們之間無協(xié)調(diào)。相同結(jié)論一般對(duì)于如上文回顧的更一般的系統(tǒng)架構(gòu)——即在這些系統(tǒng)架構(gòu)中,本地應(yīng)用服務(wù)器與共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)交互以訪問共享的存儲(chǔ)池上存儲(chǔ)的數(shù)據(jù)-而言成立。
【發(fā)明內(nèi)容】
[0009]根據(jù)第一方面(即全局方面),本發(fā)明體現(xiàn)為一種用于管理高速緩存存儲(chǔ)器的方法,該方法包括:
[0010]提供包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)和若干本地服務(wù)器的計(jì)算機(jī)化的系統(tǒng),其中:
[0011]共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)被配置為與所述本地服務(wù)器交互;
[0012]本地服務(wù)器使用相應(yīng)高速緩存存儲(chǔ)器來服務(wù)應(yīng)用;并且[0013]本地服務(wù)器中的每個(gè)本地服務(wù)器訪問在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù),該方法還包括:
[0014]從本地服務(wù)器中的每個(gè)本地服務(wù)器向共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)提供高速緩存數(shù)據(jù)信息,提供的高速緩存數(shù)據(jù)信息包括:
[0015]代表本地服務(wù)器中的每個(gè)本地服務(wù)器的高速緩存命中的高速緩存命中數(shù)據(jù);以及
[0016]代表本地服務(wù)器中的每個(gè)本地服務(wù)器的高速緩存未命中的高速緩存未命中數(shù)據(jù);
[0017]在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)處將接收的高速緩存未命中數(shù)據(jù)和高速緩存命中數(shù)據(jù)的至少部分聚合到聚合的高速緩存數(shù)據(jù)信息,并且向本地服務(wù)器中的一個(gè)或者多個(gè)本地服務(wù)器提供聚合的高速緩存數(shù)據(jù)信息;以及
[0018]在本地服務(wù)器中的所述一個(gè)或者多個(gè)本地服務(wù)器處基于提供的聚合的高速緩存數(shù)據(jù)信息來更新用來服務(wù)相應(yīng)一個(gè)或者多個(gè)應(yīng)用的相應(yīng)一個(gè)或者多個(gè)高速緩存存儲(chǔ)器。
[0019]根據(jù)第二方面(即從本地服務(wù)器來看),本發(fā)明體現(xiàn)為一種用于管理高速緩存存儲(chǔ)器的方法,該方法包括:
[0020]提供使用高速緩存存儲(chǔ)器來服務(wù)應(yīng)用的本地服務(wù)器,本地服務(wù)器還被配置為與共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)交互,共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)被配置為與訪問共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的若干本地服務(wù)器交互,該方法還包括在本地服務(wù)器處:
[0021]使得高速緩存數(shù)據(jù)信息可用于共享的數(shù)據(jù)存儲(chǔ)系統(tǒng),高速緩存數(shù)據(jù)信息包括:
[0022]代表所述每個(gè)本地服務(wù)器的高速緩存命中的高速緩存命中數(shù)據(jù);以及
[0023]代表所述每個(gè)本地服務(wù)器的高速緩存未命中的高速緩存未命中數(shù)據(jù);
[0024]從共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)接收通過聚合從若干本地服務(wù)器獲得的高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)而獲得的聚合的高速緩存數(shù)據(jù)信息;以及
[0025]基于接收的聚合的高速緩存數(shù)據(jù)信息更新所述高速緩存存儲(chǔ)器。
[0026]根據(jù)第三方面(即從共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)來看),本發(fā)明體現(xiàn)為一種用于管理高速緩存存儲(chǔ)器的方法,該方法包括:
[0027]提供包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)的計(jì)算機(jī)化的系統(tǒng),共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)被配置為與使用相應(yīng)高速緩存存儲(chǔ)器來服務(wù)應(yīng)用的若干本地服務(wù)器交互,其中本地服務(wù)器優(yōu)選地在應(yīng)用請(qǐng)求時(shí)訪問在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù),
[0028]該方法還包括在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)處:
[0029]以任何順序從所述本地服務(wù)器中的每個(gè)本地服務(wù)器接收:
[0030]代表所述每個(gè)本地服務(wù)器的高速緩存命中的高速緩存命中數(shù)據(jù);以及
[0031]代表所述每個(gè)本地服務(wù)器的高速緩存未命中的高速緩存未命中數(shù)據(jù);
[0032]將接收的高速緩存命中數(shù)據(jù)和接收的高速緩存未命中數(shù)據(jù)的至少部分聚合到聚合的高速緩存數(shù)據(jù)信息;以及
[0033]向所述本地服務(wù)器中的一個(gè)或者多個(gè)本地服務(wù)器提供聚合的高速緩存數(shù)據(jù)信息,用于隨后基于聚合的高速緩存數(shù)據(jù)信息來更新用以服務(wù)相應(yīng)應(yīng)用的相應(yīng)高速緩存存儲(chǔ)器。
[0034]優(yōu)選地,聚合還包括根據(jù)高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)的出現(xiàn)對(duì)高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)排序,以使得獲得的聚合的高速緩存數(shù)據(jù)信息的結(jié)構(gòu)反映所述排序。[0035]根據(jù)實(shí)施例,更新高速緩存存儲(chǔ)器是關(guān)于來自由相應(yīng)本地服務(wù)器服務(wù)的相應(yīng)應(yīng)用的對(duì)高速緩存存儲(chǔ)器的請(qǐng)求而異步地執(zhí)行的。
[0036]優(yōu)選地,更新高速緩存存儲(chǔ)器包括選擇聚合的高速緩存數(shù)據(jù)信息中的數(shù)據(jù)子集并且根據(jù)選擇的數(shù)據(jù)子集填充高速緩存存儲(chǔ)器。
[0037]在優(yōu)選實(shí)施例中,更新高速緩存存儲(chǔ)器包括:選擇聚合的高速緩存數(shù)據(jù)信息中的至少兩個(gè)相異數(shù)據(jù)子集;指示利用與相異數(shù)據(jù)子集之一對(duì)應(yīng)的數(shù)據(jù)無延遲地填充高速緩存存儲(chǔ)器;并且指示在觀察列表中放置與相異數(shù)據(jù)子集中的另一數(shù)據(jù)子集對(duì)應(yīng)的數(shù)據(jù),并且該方法還包括步驟:監(jiān)視觀察列表中的數(shù)據(jù)以確定將在高速緩存存儲(chǔ)器中填充的數(shù)據(jù);以及在高速緩存存儲(chǔ)器中填充相應(yīng)地確定的數(shù)據(jù)。
[0038]在實(shí)施例中,該方法還包括指示在觀察列表中放置與本地高速緩存未命中數(shù)據(jù)對(duì)應(yīng)的附加數(shù)據(jù),本地高速緩存未命中數(shù)據(jù)代表本地服務(wù)器獨(dú)立于聚合的高速緩存數(shù)據(jù)信息而收集高速緩存未命中數(shù)據(jù),從而可以監(jiān)視本地高速緩存未命中數(shù)據(jù)和與兩個(gè)相異數(shù)據(jù)子集中的第二數(shù)據(jù)子集對(duì)應(yīng)的數(shù)據(jù)二者以確定將在高速緩存存儲(chǔ)器中填充哪個(gè)數(shù)據(jù)。
[0039]優(yōu)選地,觀察列表包括高速緩存的對(duì)象的循環(huán)列表,并且監(jiān)視觀察列表中的數(shù)據(jù)包括從循環(huán)列表驅(qū)逐(evict)在給定的時(shí)間段期間尚未被請(qǐng)求訪問的最舊的高速緩存的對(duì)象。
[0040]在實(shí)施例中,該方法還包括在用已經(jīng)駐留于高速緩存存儲(chǔ)器中的數(shù)據(jù)填充高速緩存存儲(chǔ)器之前過濾這樣的數(shù)據(jù)。
[0041]聚合的高速緩存數(shù)據(jù)信息可以例如以比在高速緩存存儲(chǔ)器的任何后續(xù)更新使用的粒度更大的粒度被聚合。
[0042]根據(jù)其它方面,實(shí)現(xiàn)本發(fā)明為一種包括如上文回顧的一個(gè)或者多個(gè)部件(即至少共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)和/或(本地)服務(wù)器)的計(jì)算機(jī)化的系統(tǒng),該系統(tǒng)被配置為根據(jù)上述實(shí)施例中的任一實(shí)施例的方法中的所述一個(gè)或者多個(gè)部件執(zhí)行的步驟中的每個(gè)步驟。
[0043]最后,根據(jù)又一方面,可以實(shí)現(xiàn)本發(fā)明為一種用于管理高速緩存存儲(chǔ)器的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有隨之實(shí)現(xiàn)的計(jì)算機(jī)可讀程序代碼,該計(jì)算機(jī)可讀程序代碼被配置為實(shí)施根據(jù)上述實(shí)施例中的每個(gè)實(shí)施例的方法的步驟中的每個(gè)步驟。
[0044]現(xiàn)在將通過非限制例子并且參照附圖描述實(shí)現(xiàn)本發(fā)明的方法、系統(tǒng)及其部件。
【專利附圖】
【附圖說明】
[0045]-圖1示意地代表適于實(shí)施根據(jù)本發(fā)明的實(shí)施例的方法的計(jì)算機(jī)化的系統(tǒng);
[0046]-圖2是代表如在實(shí)施例中涉及到的高層步驟的流程圖;
[0047]-圖3是示出在根據(jù)實(shí)施例的本地高速緩存填充邏輯和填充機(jī)制中涉及到的部件和步驟的圖;以及
[0048]-圖4是聚焦于根據(jù)實(shí)施例的如圖3中那樣的本地高速緩存填充邏輯的特定方面的圖。
【具體實(shí)施方式】
[0049]構(gòu)造以下描述如下。首先描述一般實(shí)施例和高層變化(第I節(jié))。下一節(jié)解決更具體實(shí)施例和技術(shù)實(shí)施細(xì)節(jié)(第2節(jié))。
[0050]1.一般實(shí)施例和高層變化
[0051 ] 在這一節(jié)中描述涉及用于管理高速緩存存儲(chǔ)器的方法的本發(fā)明的一般方面。由于本發(fā)明涉及在客戶端LS1、LS2與中央服務(wù)器CS之間、即在客戶端-服務(wù)器架構(gòu)內(nèi)的交互,參見圖1,所以可以根據(jù)采用的角度給出本發(fā)明的不同描述。因此在下文中首先描述如在包括客戶端和服務(wù)器CS 二者的全局系統(tǒng)中實(shí)現(xiàn)的本發(fā)明的一般方面。然后討論如從客戶端或者服務(wù)器CS的角度來看的相同發(fā)明的方面。當(dāng)然,這些方面僅在采用的角度(即,全局或者如從圖1的部件之一來看)有不同并且涉及同一項(xiàng)發(fā)明。
[0052]首先參照?qǐng)D1-2,該方法總體在計(jì)算機(jī)化的系統(tǒng)I中操作,該系統(tǒng)在全局角度中包括服務(wù)器和客戶端、即共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS和若干本地服務(wù)器LS1、LS2 二者。因此形式上說,該方法的第一步驟SlOO相應(yīng)地包括提供比如圖1中所示的計(jì)算機(jī)化的系統(tǒng)I。在這一系統(tǒng)I中,共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS被配置為與若干本地服務(wù)器交互,在最小配置中即與至少兩個(gè)本地服務(wù)器LS1、LS2交互。后者使用相應(yīng)高速緩存存儲(chǔ)器CMl、CM2來服務(wù)應(yīng)用A1、A2。每個(gè)本地服務(wù)器可以訪問共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)D。恰如在本發(fā)明通常應(yīng)用于的SAN環(huán)境中那樣,本地服務(wù)器通常在它服務(wù)的應(yīng)用進(jìn)行請(qǐng)求時(shí)請(qǐng)求訪問所述數(shù)據(jù)D。出于明顯原因,下文也將共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS稱為“中央系統(tǒng)”。這一系統(tǒng)CS通常由SAN存儲(chǔ)服務(wù)器管理。因此,本地和中央系統(tǒng)二者通常是“服務(wù)器”。中央系統(tǒng)CS充當(dāng)用于本地服務(wù)器LS1、LS2的數(shù)據(jù)服務(wù)器,而本地服務(wù)器LSn使用特別相應(yīng)高速緩存存儲(chǔ)器CMn來服務(wù)相應(yīng)應(yīng)用An。為了消除歧義,將中央系統(tǒng)CS稱為“系統(tǒng)”,而將本地服務(wù)器稱為“服務(wù)器”。注意在最小配置中,計(jì)算機(jī)化的系統(tǒng)至少包括中央系統(tǒng)CS、兩個(gè)本地服務(wù)器LSl、LS2、服務(wù)于一個(gè)或者多個(gè)應(yīng)用并且使用兩個(gè)相應(yīng)高速緩存存儲(chǔ)器(或者更多)。事實(shí)上本領(lǐng)域技術(shù)人員應(yīng)當(dāng)清楚,一個(gè)本地服務(wù)器可以服務(wù)多個(gè)應(yīng)用并且這使用多于一個(gè)高速緩存存儲(chǔ)器。
[0053]接著,第二步驟包括從本地服務(wù)器LS1、LS2中的每個(gè)本地服務(wù)器向中央系統(tǒng)CS提供高速緩存數(shù)據(jù)信息。所述高速緩存數(shù)據(jù)信息通常包括高速緩存數(shù)據(jù)統(tǒng)計(jì)。如在現(xiàn)有技術(shù)方法中那樣,這樣的統(tǒng)計(jì)涉及高速緩存未命中M,即代表每個(gè)本地服務(wù)器的高速緩存未命中的數(shù)據(jù)?!案咚倬彺嫖疵小北旧硎且阎?它是指由于在請(qǐng)求時(shí)對(duì)應(yīng)數(shù)據(jù)中的一些或者所有數(shù)據(jù)未被高速緩存而沒有從高速緩存存儲(chǔ)器CMn被服務(wù)的數(shù)據(jù)訪問請(qǐng)求。
[0054]然而,不同于現(xiàn)有技術(shù)方法,在本發(fā)明中向中央系統(tǒng)轉(zhuǎn)發(fā)的高速緩存數(shù)據(jù)信息還包括高速緩存命中數(shù)據(jù)H,即,代表每個(gè)本地服務(wù)器的高速緩存命中。“高速緩存命中”本身也是已知的,它對(duì)應(yīng)于在一個(gè)或者多個(gè)應(yīng)用使用的高速緩存存儲(chǔ)器中高速緩存的、并且響應(yīng)于來自該高速緩存存儲(chǔ)器的數(shù)據(jù)訪問請(qǐng)求而被服務(wù)的給定數(shù)據(jù)。后文將討論部分命中的具體情況。通常在不同時(shí)間發(fā)送高速緩存命中和未命中,因?yàn)榕c高速緩存命中相反,高速緩存未命中可能需要立即響應(yīng),這也是隨后將發(fā)展的事項(xiàng)。因此,可以理解,高速緩存命中數(shù)據(jù)優(yōu)選地獨(dú)立于如圖2中的步驟S200H和S200M所示與高速緩存未命中數(shù)據(jù)而被提供。
[0055]中央系統(tǒng)CS接下來完成的是,步驟S300,將高速緩存命中數(shù)據(jù)H和高速緩存未命中數(shù)據(jù)的至少部分聚合到聚合的高速緩存數(shù)據(jù)信息ACD。共享的高速緩存數(shù)據(jù)信息可以聚合以后將在本地高速緩存存儲(chǔ)器中填充的實(shí)際數(shù)據(jù),或者更簡(jiǎn)單地為數(shù)據(jù)標(biāo)識(shí)符。一旦聚合,然后可以向本地服務(wù)器中的一個(gè)或者多個(gè)本地服務(wù)器提供高速緩存數(shù)據(jù)信息ACD,步驟S400。當(dāng)然,本地高速緩存未命中M、高速緩存命中H和訪問的數(shù)據(jù)D從LSl到LS2應(yīng)當(dāng)可能是不同的。
[0056]最后,本地服務(wù)器應(yīng)當(dāng)例如在從中央系統(tǒng)接收聚合的數(shù)據(jù)時(shí)盡可能快地基于接收的聚合的數(shù)據(jù)ACD來更新(步驟S500)它管理的高速緩存存儲(chǔ)器。
[0057]因而由于在A⑶中捕獲的更多“全局”知識(shí)、即在若干應(yīng)用(包括除了應(yīng)當(dāng)被提供ACD的特定本地應(yīng)用之外的應(yīng)用)處出現(xiàn)的高速緩存未命中和命中的知識(shí),所以本地高速緩存性能可得以提高。因此應(yīng)當(dāng)基于可以可能與給定的本地高速緩存相關(guān)的數(shù)據(jù)更新該給定的本地高速緩存,因?yàn)樗鼈儽蛔C實(shí)在其它位置相關(guān)。所述全局?jǐn)?shù)據(jù)在一些相關(guān)性存在于與一個(gè)位置相關(guān)的高速緩存數(shù)據(jù)和與另一位置相關(guān)的高速緩存數(shù)據(jù)之間時(shí)全部更加相關(guān)。如果相同應(yīng)用在若干客戶端上運(yùn)行并且觸及來自所述若干客戶端的相同數(shù)據(jù),則特別是這種情況。這也是在應(yīng)用從一個(gè)服務(wù)器向某一其它服務(wù)器遷移(例如為了故障保護(hù))時(shí)的情況。反言之,在現(xiàn)有技術(shù)系統(tǒng)中,本地高速緩存不會(huì)“看見”來自所有應(yīng)用服務(wù)器的合并工作量,因此本地高速緩存判決不能是最優(yōu)的,或者至少?gòu)闹醒虢嵌葋砜床皇亲顑?yōu)。
[0058]注意如果通過構(gòu)造步驟S200-S500,聚合的數(shù)據(jù)A⑶包括高速緩存數(shù)據(jù)信息的全局知識(shí),然而這妨礙向本地服務(wù)器提供的聚合的數(shù)據(jù)ACD被進(jìn)行定制,即,被制作成特定于該服務(wù)器。也就是說,向一個(gè)本地服務(wù)器(例如LSI)提供的ACD數(shù)據(jù)可以包括從LSl和LS2 二者捕獲的高速緩存數(shù)據(jù)信息,同時(shí)又仍然強(qiáng)調(diào)數(shù)據(jù)為主要被合并用于LSI。后文將討論這一點(diǎn)。
[0059]有利地,本發(fā)明在SAN環(huán)境中實(shí)施,其中中央系統(tǒng)CS優(yōu)選地利用大型高速緩存和/或分層機(jī)制。此外,優(yōu)選地在中央系統(tǒng)CS和/或在本地服務(wù)器LS1、LS2處利用更快存儲(chǔ)器設(shè)備用于存儲(chǔ)高速緩存,例如基于閃存的SSD。
[0060]至此已經(jīng)描述的內(nèi)容涉及如從全局角度來看的方法的一般方面?,F(xiàn)在可以將相同方法分解成如在涉及到的部件LS1、LS2、CS3中的一個(gè)或者另一部件執(zhí)行的步驟。
[0061]例如,從本地服務(wù)器LSl的角度來看,該方法包括以下步驟:本地服務(wù)器LSl將:
[0062]-使高速緩存數(shù)據(jù)信息可用于中央系統(tǒng)CS;可以例如根據(jù)全局系統(tǒng)配置來發(fā)送或者取回所述高速緩存數(shù)據(jù)信息;
[0063]-然后從中央系統(tǒng)CS接收如上文描述的那樣獲得的聚合的高速緩存數(shù)據(jù)信息ACD ;并且
[0064]-隨后基于接收的A⑶更新它的高速緩存存儲(chǔ)器。
[0065]類似地,從中央系統(tǒng)CS的角度來看,該方法包括:
[0066]-以任何順序從所述本地服務(wù)器LS1、LS2中的每個(gè)本地服務(wù)器接收(或者取回)高速緩存命中數(shù)據(jù)H和高速緩存未命中數(shù)據(jù)M (步驟S210H、S210M);
[0067]-將接收的高速緩存命中數(shù)據(jù)和接收的高速緩存未命中數(shù)據(jù)的至少部分聚合到聚合的高速緩存數(shù)據(jù)信息ACD,步驟S300 ;并且
[0068]-又向本地服務(wù)器LS1、LS2中的一個(gè)或者多個(gè)本地服務(wù)器提供A⑶,用于后續(xù)更新高速緩存存儲(chǔ)器CMl、CM2,步驟S400。
[0069]如果向本地服務(wù)器提供的ACD的結(jié)構(gòu)包括關(guān)于數(shù)據(jù)的相關(guān)度的信息,則可以提高上述方法的性能。為了該目標(biāo),并且參照?qǐng)D4,在實(shí)施例中ACD聚合步驟(即圖2中的步驟S300)可以包括數(shù)據(jù)排序操作。更具體而言,可以根據(jù)高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)的出現(xiàn)對(duì)高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)排序。例如可以基于本地記錄或者優(yōu)選地根據(jù)在中央服務(wù)器CS的先前合并工作來計(jì)算所述出現(xiàn)。因此,聚合的高速緩存數(shù)據(jù)信息ACD的結(jié)構(gòu)可以可能隱式地反映這一排序。例如在圖4中,按照數(shù)據(jù)出現(xiàn)的升序?qū)?shù)據(jù)排序,例如最熱門數(shù)據(jù)(圖4的ACD數(shù)據(jù)中的虛線矩形段)位于向本地服務(wù)器提供的A⑶數(shù)據(jù)結(jié)構(gòu)的一端。
[0070]注意將在廣義上理解“出現(xiàn)”:這可以例如反映這樣的數(shù)據(jù)的出現(xiàn)頻率。它更一般地反映在一個(gè)或者多個(gè)時(shí)間段內(nèi)出現(xiàn)的傾向;它可以簡(jiǎn)單地是所述數(shù)據(jù)的歷史。就這一點(diǎn)而言,注意該過程可以例如需要考慮不同時(shí)間間隔并且將高速緩存數(shù)據(jù)H、M與相應(yīng)時(shí)間間隔相關(guān),以便比較相關(guān)時(shí)間段、即可比較的時(shí)間段,并且在將高速緩存數(shù)據(jù)H、M聚合到圖4的ACD結(jié)構(gòu)之前推斷它們的可比較的出現(xiàn)。有時(shí)在僅針對(duì)高速緩存未命中執(zhí)行這一過程時(shí)提到高速緩存數(shù)據(jù)“合并”。在本發(fā)明的當(dāng)前實(shí)施例中,這一可選步驟的本源來自于高速緩存未命中和高速緩存命中被合并這樣的事實(shí),這些高速緩存未命中和命中屬于若干高速緩存/應(yīng)用/服務(wù)器。
[0071]此外,盡管通常向中央服務(wù)器立即報(bào)告高速緩存未命中,但是高速緩沖命中無需這樣;它們可以例如在本地被收集并且由此定期被報(bào)告對(duì)高速緩沖未命中頻率的必要調(diào)整。在變體中,高速緩存命中可以被不停機(jī)(on-the-fly)報(bào)告(非優(yōu)選),或者仍為一旦已經(jīng)在本地服務(wù)器達(dá)到用于高速緩存命中的定量閾值就被報(bào)告。
[0072]現(xiàn)在可以設(shè)想許多有利設(shè)計(jì)選項(xiàng)。例如可以帶內(nèi)或者帶外執(zhí)行在本地服務(wù)器與中央系統(tǒng)CS之間交換統(tǒng)計(jì)。而且,在合并高速緩存數(shù)據(jù)時(shí),可以優(yōu)選地將用于涉及少量數(shù)據(jù)位的應(yīng)用請(qǐng)求的高速緩存數(shù)據(jù)分組在一起以便隨后將數(shù)據(jù)放在SSD上;也可以對(duì)用于涉及大量比特的請(qǐng)求的高速緩存數(shù)據(jù)分組在一起:更好地在HDD上放置用于更大請(qǐng)求的數(shù)據(jù)。
[0073]根據(jù)考慮的時(shí)間間隔,高速緩存數(shù)據(jù)信息的出現(xiàn)頻率從幾乎瞬時(shí)頻率到用于有效時(shí)間段等的等效平均頻率進(jìn)行變化。無論如何,本發(fā)明人執(zhí)行的仿真憑借的是對(duì)ACD排序并且相應(yīng)地構(gòu)造A⑶允許提高高速緩存數(shù)據(jù)的長(zhǎng)期相關(guān)度,即本地高速緩存CMl、CM2可以隨后更新,以便高速緩存具有在更長(zhǎng)時(shí)間段內(nèi)被相應(yīng)應(yīng)用Al、A2請(qǐng)求的更高可能性的數(shù)據(jù)。
[0074]圖2中的步驟S500 —般地指代高速緩存存儲(chǔ)器更新。在圖3和4中,將高速緩存存儲(chǔ)器更新分解為若干子步驟,即Sll、Slla、Sllb、S121、S122、S23、S450和S550-S580,這些子步驟優(yōu)選地都由本地服務(wù)器或者其部件實(shí)施。這些部件將分解成填充邏輯10和填充機(jī)制24。前者包括部件ll、12、12a、21、22、23。填充機(jī)制涉及到與高速緩存進(jìn)行交互的數(shù)據(jù)移動(dòng)器24,該高速緩存例如直接附著存儲(chǔ)(DAS)高速緩存存儲(chǔ)器26和高速緩存目錄25。如圖1中所指的高速緩存存儲(chǔ)器CM1、CM2最少包括如圖3中所示的存儲(chǔ)器26 (例如DAS高速緩存存儲(chǔ)器),也稱為“CM”。
[0075]—并參照?qǐng)D3和4:優(yōu)選地異步執(zhí)行高速緩存存儲(chǔ)器更新。也就是說,對(duì)給定高速緩存CMl的更新關(guān)于從對(duì)應(yīng)應(yīng)用Al (即,由對(duì)應(yīng)本地服務(wù)器LSl進(jìn)行服務(wù))到所述高速緩存存儲(chǔ)器CMl的用戶請(qǐng)求異步地執(zhí)行。例如高速緩存填充機(jī)制可以由比如圖3中所示異步執(zhí)行單元(例如專用軟件線程)支配。這意味著實(shí)際高速緩存填充步驟可以在關(guān)鍵數(shù)據(jù)路徑以外來操作,該關(guān)鍵數(shù)據(jù)路徑即包含為了從本地高速緩存或者中央系統(tǒng)向應(yīng)用遞送數(shù)據(jù)而需要的步驟的路徑。因此,更新機(jī)制不會(huì)不利地影響本地高速緩存的正常操作。[0076]更具體而言,如圖3-4中的步驟Sll、Sllb、S121特別捕獲的那樣,高速緩存存儲(chǔ)器更新通常涉及到數(shù)據(jù)子集選擇,即選擇向本地服務(wù)器提供的ACD中的數(shù)據(jù)的子集、然后根據(jù)選擇的子集填充對(duì)應(yīng)高速緩存存儲(chǔ)器。例如可以選擇接收的ACD中的數(shù)據(jù)的子集,例如具有最多出現(xiàn)的數(shù)據(jù)子集(或者簡(jiǎn)稱為“熱門數(shù)據(jù)”)以用它直接填充高速緩存存儲(chǔ)器(見圖3或者4的步驟Sll)??紤]剩余數(shù)據(jù),可以例如丟棄、放棄或者仍然監(jiān)視它們。具體而言,如下文將討論的那樣,可以在觀察列表12中放置數(shù)據(jù)子集中的一些數(shù)據(jù)子集用于后續(xù)監(jiān)視。
[0077]所述數(shù)據(jù)子集選擇可以視為過濾步驟。對(duì)于數(shù)據(jù)子集選擇,有利地利用ACD結(jié)構(gòu),這可以隱式地說明哪個(gè)數(shù)據(jù)熱門、哪個(gè)數(shù)據(jù)不是。在變體中,可以顯式地將一些高速緩存數(shù)據(jù)標(biāo)記為“必須有”。類似地,可以將A⑶中的數(shù)據(jù)標(biāo)記為“必須無”。因此,本地填充邏輯可以繼續(xù)根據(jù)數(shù)據(jù)子集的隱式或者顯式等級(jí)選擇它們。例如本地服務(wù)器可以不過濾“必須有”(或者至少不立即過濾);它可以代之以過濾剩余數(shù)據(jù)或者可以甚至保證不會(huì)高速緩存“必須無”。如本領(lǐng)域技術(shù)人員可以理解的那樣,可以設(shè)計(jì)許多其它中間策略。
[0078]現(xiàn)在,由于在ACD中標(biāo)識(shí)的數(shù)據(jù)可以對(duì)應(yīng)于已經(jīng)駐留于高速緩存中的數(shù)據(jù),所以有利地實(shí)施若干附加過濾階段:
[0079]-首先,一旦在本地服務(wù)器接收A⑶就可以從A⑶過濾掉已經(jīng)在高速緩存中的數(shù)據(jù)。例如在接收ACD(例如數(shù)據(jù)范圍的有序列表,各自對(duì)應(yīng)于IMB的段,如圖4中那樣)時(shí),如圖3和4的步驟Sllb中所示,本地高速緩存邏輯10將首先從那些片段過濾掉已經(jīng)在高速緩存中的數(shù)據(jù)片段(或者數(shù)據(jù)片段標(biāo)識(shí)符)。
[0080]-更一般而言,可以在若干點(diǎn)處、例如在過濾器11和/或在數(shù)據(jù)移動(dòng)器24等處,來過濾已經(jīng)在高速緩存中的數(shù)據(jù)。
[0081]事實(shí)上,(在愿意過濾掉已經(jīng)在高速緩存中的那些數(shù)據(jù)時(shí))重要的是保證在用那些數(shù)據(jù)填充高速緩存存儲(chǔ)器之前過濾它們。
[0082]目前,可以設(shè)想不同并發(fā)路線用于高速緩存存儲(chǔ)器填充。例如可以在傳入ACD中標(biāo)識(shí)數(shù)據(jù)的兩個(gè)或者更多相異子集。如圖3-4中所示,填充邏輯10可以指示利用與標(biāo)識(shí)的相異數(shù)據(jù)子集之一對(duì)應(yīng)的數(shù)據(jù)無延遲填充(步驟Sll)高速緩存存儲(chǔ)器CMl,同時(shí)它指示(步驟Slla)在觀察列表12中放置與標(biāo)識(shí)的相異數(shù)據(jù)子集中的另一數(shù)據(jù)子集對(duì)應(yīng)的數(shù)據(jù)。可以隨后監(jiān)視(S120)放置于觀察列表12中的數(shù)據(jù)以確定將在高速緩存中填充S121哪個(gè)數(shù)據(jù)?!盁o延遲”意味著立即或者無進(jìn)一步詢問,例如在邏輯和電路允許的最少合理時(shí)間內(nèi)。例如這可以由允許執(zhí)行填充的最大速率支配。換而言之,可以在高速緩存中立即填充“最熱門”數(shù)據(jù),同時(shí)剩余數(shù)據(jù)可以在觀察列表中的“觀測(cè)”中放置并且如果必要?jiǎng)t以后在高速緩存中填充。
[0083]事實(shí)上,可以在傳入A⑶中標(biāo)識(shí)若干數(shù)據(jù)子集。例如,如圖4中所示,可以標(biāo)識(shí)三個(gè)類型的數(shù)據(jù)子集:(i)立即標(biāo)識(shí)為與已經(jīng)高速緩存的數(shù)據(jù)對(duì)應(yīng)并且因此被丟棄的第一類型的數(shù)據(jù)子集(條紋段),步驟silb;(ii)與熱門數(shù)據(jù)對(duì)應(yīng)的將在高速緩存中立即填充的第二類型的數(shù)據(jù)子集(虛線段)(步驟Sll);以及(iii)與較不熱門數(shù)據(jù)對(duì)應(yīng)的將放置于觀察列表12中的第三類型的數(shù)據(jù)子集(空白段)。如可以實(shí)現(xiàn)的那樣,如果首先過濾ACD數(shù)據(jù)子集(i)以去除已經(jīng)駐留于高速緩存中的數(shù)據(jù),則上述子集(ii)和(iii)得以最高效地處理和管理。[0084]如圖3-4高速緩存更新邏輯10和填充機(jī)制24-25中進(jìn)一步所示,可以在觀察列表12中放置附加數(shù)據(jù),步驟S200Ma。這些數(shù)據(jù)可以例如對(duì)應(yīng)于本地高速緩存未命中數(shù)據(jù),例如本地讀取未命中或者LRM,即代表本地服務(wù)器所收集的高速緩存未命中的數(shù)據(jù)并且這獨(dú)立于接收的ACD。因而,本地高速緩存未命中數(shù)據(jù)LRM和ACD的數(shù)據(jù)子集二者可以在觀察列表中被放置和被監(jiān)視(步驟S120)以確定以后將在高速緩存中填充哪個(gè)數(shù)據(jù),步驟S121。這允許對(duì)本地服務(wù)器上的工作量改變更準(zhǔn)確和更快地做出反應(yīng)。就這一點(diǎn)而言,本地客戶端可以操作更細(xì)粒度的片段而不是范圍(例如IMB而不是1GB,如圖4中所示)?,F(xiàn)在如果單個(gè)片段表現(xiàn)為在整個(gè)范圍內(nèi)“熱門”,則該片段屬于的熱門程度以及在中央系統(tǒng)CS觀測(cè)到的熱門程度可能未高到足以讓它被標(biāo)記為在ACD中熱門(或者甚至被聚合)。然而可以向觀察列表獨(dú)立地添加這一“熱門”片段用于就地(in-situ)監(jiān)視,從而使得有可能讓它隨后被填充于高速緩存中。中央系統(tǒng)可能未“看見”足夠的高速緩存未命中的其它原因在于特定數(shù)據(jù)僅被一個(gè)本地服務(wù)器訪問或者以往尚未見過它,因此歷史數(shù)據(jù)沒有足夠權(quán)重。此夕卜,在ACD由中央系統(tǒng)向本地服務(wù)器提供之前通常需要一些時(shí)間。因此,向觀察列表12獨(dú)立地饋送LRM用于后續(xù)監(jiān)視可以幫助提高反應(yīng)性和/或靈敏性。
[0085]現(xiàn)在考慮如何監(jiān)視觀察列表中的數(shù)據(jù),這可以特別地使用高速緩存的對(duì)象的循環(huán)列表12a來執(zhí)行。具體而言,高效算法包括從循環(huán)列表12a驅(qū)逐最舊的高速緩存的對(duì)象,只要在給定的時(shí)間段、例如上一時(shí)鐘圈期間尚未請(qǐng)求訪問這一最舊的高速緩存的對(duì)象。這可以例如使用時(shí)鐘算法的修改版本來實(shí)施。在本文中,這一算法可以實(shí)施,以比如在存儲(chǔ)器中保持高速緩存的對(duì)象的循環(huán)列表而迭代器(“鐘針”)指向列表中的最舊頁面。對(duì)于每個(gè)頁面,算法維持參考位,該參考位在被設(shè)置時(shí)表示已經(jīng)在上一時(shí)鐘圈期間訪問頁面。在高速緩存未命中出現(xiàn)時(shí)并且如果在高速緩存中無自由空間(即高速緩存已滿),則在鐘針的位置檢查參考位。如果該位為0(即“未設(shè)置”),則驅(qū)逐“鐘針”指向的高速緩存的對(duì)象,并且因此可以向傳入頁面分配空頁面幀。否則,清除參考位并且遞增鐘針,從而它指向循環(huán)列表中的下一頁面。重復(fù)該過程直至發(fā)現(xiàn)“受害”頁面。在變化中,可以使用其它頁面替換算法(先入先出(FIFO)、第二機(jī)會(huì)等)。然而上述解決方案(修改的時(shí)鐘算法)是FIFO的有效版本(例如比第二機(jī)會(huì)更高效),因?yàn)闊o需在列表中連續(xù)地移位高速緩存的對(duì)象。
[0086]至此已經(jīng)主要在方法步驟方面描述本發(fā)明的實(shí)施例。然而根據(jù)本發(fā)明的其它方面,可以實(shí)現(xiàn)本發(fā)明為一種包括如上文回顧的一個(gè)或者多個(gè)部件(即至少共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(或者簡(jiǎn)稱為“中央系統(tǒng)”)和/或本地服務(wù)器)的計(jì)算機(jī)化的系統(tǒng)。一般而言,這樣的計(jì)算機(jī)化的系統(tǒng)可以適當(dāng)?shù)乇慌渲脼閳?zhí)行向所述部件賦予的方法步驟。
[0087]例如這一計(jì)算機(jī)化的系統(tǒng)可以限于共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS。后者可以特別包括:
[0088]-接收單元(未示出),配置為從本地服務(wù)器LS1、LS2中的每個(gè)本地服務(wù)器(獨(dú)立地或不獨(dú)立地)接收高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù);
[0089]-聚合邏輯單元(未示出),配置為將接收的高速緩未存命中數(shù)據(jù)和接收的高速緩存命中數(shù)據(jù)的至少部分聚合到ACD中;以及
[0090]-接口(未示出),配置為使A⑶能夠向本地服務(wù)器LS1、LS2(中的每個(gè)本地服務(wù)器)發(fā)送。如更早提及的那樣,可以根據(jù)目標(biāo)服務(wù)器定制聚合。
[0091]接著,這一計(jì)算機(jī)化的系統(tǒng)可以相似地限于本地服務(wù)器。后者可以特別包括用于使高速緩存數(shù)據(jù)可用于中央系統(tǒng)CS的接口(未示出)和用于接收聚合的高速緩存數(shù)據(jù)ACD的接收器單元。它還可以包括比如圖3-4中舉例說明的高速緩存填充邏輯10和高速緩存填充工具24。
[0092]當(dāng)然,如更早描述的那樣,計(jì)算機(jī)化的系統(tǒng)可以包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS和一個(gè)或者多個(gè)本地服務(wù)器LS1、LS2。
[0093]最后,本發(fā)明也可以實(shí)現(xiàn)為一種包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有隨之實(shí)現(xiàn)的計(jì)算機(jī)可讀程序代碼,該程序代碼被配置為實(shí)施上文描述的方法的步驟中的每個(gè)步驟。接著將在下一節(jié)中給出所述程序代碼及其算法方面的細(xì)節(jié)。
[0094]已經(jīng)參照附圖簡(jiǎn)潔地描述上述實(shí)施例并且這些實(shí)施例可以適應(yīng)參照本發(fā)明的任何方面描述的多個(gè)變體。在實(shí)施例中,可以設(shè)想上述特征的若干組合。
[0095]因而,根據(jù)本發(fā)明的實(shí)施例的計(jì)算機(jī)化的系統(tǒng)I可以特別包括:
[0096]-本地服務(wù)器LSl,其使用快速設(shè)備作為高速緩存,例如基于閃存的SSD;
[0097]-使用多個(gè)存儲(chǔ)介質(zhì)的共享的數(shù)據(jù)存儲(chǔ)服務(wù)器CS,提供后端存儲(chǔ)裝置;
[0098]-在所述存儲(chǔ)服務(wù)器上的分層模塊T,用于標(biāo)識(shí)熱門數(shù)據(jù)并且用于在快速存儲(chǔ)介質(zhì)上存儲(chǔ)熱門數(shù)據(jù)。
[0099]另一例子是計(jì)算機(jī)化的系統(tǒng)1,該計(jì)算機(jī)化的系統(tǒng)特別包括:一個(gè)或者多個(gè)本地服務(wù)器LS1、LS2和中央分層存儲(chǔ)系統(tǒng)CS,其中中央系統(tǒng):
[0100]-維持粗粒度全局統(tǒng)計(jì)(基于觀測(cè)到的合并的工作量和來自本地服務(wù)器的聚合的本地統(tǒng)計(jì)),
[0101]-基于那些粗粒度全局統(tǒng)計(jì)向具有不同性能特性的存儲(chǔ)介質(zhì)中放置數(shù)據(jù),并且
[0102]-基于全局統(tǒng)計(jì)向個(gè)別本地服務(wù)器提供粗粒度高速緩存統(tǒng)計(jì)A⑶,
[0103]并且其中所述本地服務(wù)器中的每個(gè)本地服務(wù)器:
[0104]-維持細(xì)粒度本地統(tǒng)計(jì)(基于本地觀測(cè)的工作量);并且
[0105]-根據(jù)細(xì)粒度本地和粗粒度全局統(tǒng)計(jì)填充本地高速緩存。
[0106]在下一節(jié)中討論優(yōu)選實(shí)施例的具體例子。
[0107]2.具體實(shí)施例和技術(shù)實(shí)施細(xì)節(jié)
[0108]下文描述的具體實(shí)施例提供一種用于協(xié)調(diào)SAN環(huán)境中的本地高速緩存服務(wù)器和中央高速緩存的機(jī)制。目標(biāo)在于通過杠桿調(diào)節(jié)短期與長(zhǎng)期統(tǒng)計(jì)的組合來提高高速緩存效率。本地高速緩存向中央系統(tǒng)定期報(bào)告高速緩存命中統(tǒng)計(jì)(例如聚合到適當(dāng)粒度,例如用于由中央系統(tǒng)使用的范圍水平),并且中央系統(tǒng)將本地高速緩存命中統(tǒng)計(jì)與它自己的工作量統(tǒng)計(jì)(涉及本地服務(wù)器的高速緩存未命中并且也涉及與本地服務(wù)器的高速緩存命中和未命中對(duì)應(yīng)的歷史數(shù)據(jù))一起合并,并且使合并的統(tǒng)計(jì)可用于每個(gè)本地服務(wù)器。因此可以針對(duì)具體服務(wù)器定制向本地服務(wù)器返回的合并的統(tǒng)計(jì)。每個(gè)本地服務(wù)器然后使用合并的統(tǒng)計(jì)以提高本地高速緩存性能。本地高速緩存通過杠桿調(diào)節(jié)用于組合來自中央統(tǒng)計(jì)的強(qiáng)制高速緩存填充與基于本地和中央統(tǒng)計(jì)的有選擇的高速緩存填充的能力來實(shí)現(xiàn)這一點(diǎn)。
[0109]在圖1中示出并且已經(jīng)在前一節(jié)中討論總架構(gòu)。在本地服務(wù)器LS1、LS2與中央系統(tǒng)CS之間的雙箭頭代表可以用定期或者偶發(fā)方式發(fā)生的統(tǒng)計(jì)交換。
[0110]中央系統(tǒng)可以例如在SAN存儲(chǔ)服務(wù)器中使用如已知的任何高速緩存機(jī)制CC。它也可以使用分層T機(jī)制或者甚至高速緩存與分層機(jī)制的組合cc/τ。而自動(dòng)化分層機(jī)制(例如IBM EasyTier機(jī)制)有利地用來向更快存儲(chǔ)設(shè)備(例如SSD、閃存)分配熱門數(shù)據(jù)并且向HDD分配冷門數(shù)據(jù)或者分別向快速HDD層和慢速HDD層分配熱門和冷門數(shù)據(jù)。中央系統(tǒng)可以在后端存儲(chǔ)裝置上分層布置數(shù)據(jù)以便針對(duì)工作量更好地優(yōu)化數(shù)據(jù)。高速緩存本身未包括層,并且分層是指在后端存儲(chǔ)裝置上重新布置數(shù)據(jù)。如已知的那樣,后端存儲(chǔ)裝置是指實(shí)際持久存儲(chǔ)介質(zhì),例如HDD,其中持久地存儲(chǔ)實(shí)際數(shù)據(jù)。
[0111]在下文中,術(shù)語“中央高速緩存”是指中央系統(tǒng)(即共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)CS)的高速緩存存儲(chǔ)器。引申開來,它可以是指支配中央高速緩存的操作,因此是指中央系統(tǒng)本身。類似地,“本地高速緩存”是指本地服務(wù)器管理的高速緩存存儲(chǔ)器,并且引申開來,它可以是指支配本地高速緩存的操作并且因此是指本地服務(wù)器本身。
[0112]由于工作量的所有本地高速緩存未命中將最終去往SAN服務(wù)器用于取回對(duì)應(yīng)數(shù)據(jù),所以無需本地服務(wù)器報(bào)告關(guān)于高速緩存未命中的統(tǒng)計(jì)(超出向中央服務(wù)器“正?!睂ぶ返母咚倬彺嫖疵姓?qǐng)求)。然而在現(xiàn)有技術(shù)系統(tǒng)中,在中央服務(wù)器中未看見從本地高速緩存服務(wù)的本地高速緩存命中。因此在當(dāng)前實(shí)施例中,本地服務(wù)器現(xiàn)在負(fù)責(zé)收集關(guān)于高速緩存命中的統(tǒng)計(jì)并且向中央系統(tǒng)報(bào)告它們。
[0113]回顧由于中央系統(tǒng)將看見每個(gè)本地高速緩存的所有高速緩存未命中,所以中央系統(tǒng)能夠針對(duì)每個(gè)本地高速緩存組合高速緩存未命中和報(bào)告的高速緩存命中統(tǒng)計(jì)??梢允褂萌缬糜谂c高速緩存未命中對(duì)應(yīng)的數(shù)據(jù)/數(shù)據(jù)標(biāo)識(shí)符和與高速緩存命中對(duì)應(yīng)的數(shù)據(jù)/數(shù)據(jù)標(biāo)識(shí)符的相似合并機(jī)制。中央系統(tǒng)然后使這些統(tǒng)計(jì)可用于每個(gè)本地服務(wù)器。這可以由本地或者中央高速緩存發(fā)起:
[0114]-在拉取(pull)模式中,本地服務(wù)器將發(fā)起向中央系統(tǒng)的通信用于發(fā)送高速緩存命中統(tǒng)計(jì)或者用于請(qǐng)求中央高速緩存的合并的統(tǒng)計(jì)。
[0115]-在推送(push)模式中,中央系統(tǒng)將向本地服務(wù)器定期廣播合并的統(tǒng)計(jì)。
[0116]可以“帶內(nèi)”或者“帶外”執(zhí)行在本地服務(wù)器與中央系統(tǒng)之間的統(tǒng)計(jì)的交換。帶內(nèi)意味著向如下數(shù)據(jù)路徑中嵌入統(tǒng)計(jì)交換,應(yīng)用服務(wù)器通過該數(shù)據(jù)路徑讀取或者存儲(chǔ)數(shù)據(jù),例如光纖信道或者SCSI。帶外意味著統(tǒng)計(jì)交換使用在應(yīng)用服務(wù)器與SAN存儲(chǔ)服務(wù)器之間的獨(dú)立通信信道。
[0117]本地高速緩存經(jīng)常被設(shè)計(jì)為利用本地工作量和工作量的暫時(shí)本地性。在中央系統(tǒng)合并從所有本地高速緩存收集的統(tǒng)計(jì)并且使它們可用于每個(gè)本地高速緩存時(shí),可以大量提高本地高速緩存的高速緩存性能,因?yàn)檫@些統(tǒng)計(jì)代表關(guān)于哪些數(shù)據(jù)范圍值得高速緩存(即“熱門”范圍)的中央以及長(zhǎng)期看法。一種用于提高本地高速緩存性能的可能性是向本地高速緩存中無條件地添加如CS的統(tǒng)計(jì)指示的那些熱門數(shù)據(jù)范圍。注意本地高速緩存可以在與從中央高速緩存接收合并的統(tǒng)計(jì)的頻率不同的頻率報(bào)告高速緩存命中統(tǒng)計(jì)。
[0118]在下文中公開本地高速緩存設(shè)計(jì),這些設(shè)計(jì)利用中央統(tǒng)計(jì)以提高高速緩存性能。
[0119]在優(yōu)選本地高速緩存設(shè)計(jì)實(shí)施例中,本地高速緩存向中央系統(tǒng)報(bào)告高速緩存命中統(tǒng)計(jì),例如每個(gè)范圍的命中計(jì)數(shù)并且以定期方式、例如每15分鐘接收用于IGB數(shù)據(jù)范圍的合并的統(tǒng)計(jì)。本地高速緩存可以例如使用SATA或者SAS閃存SSD或者PCI_e閃寸卡作為高速緩存的數(shù)據(jù)將駐留于其上的存儲(chǔ)介質(zhì)。假設(shè)本地閃存高速緩存在IMB片段中組織高速緩存的數(shù)據(jù),然后高速緩存的實(shí)體的大小是1MB。
[0120]通常,范圍(例如IGB數(shù)據(jù))是指多個(gè)(固定大小的)連續(xù)片段。片段是指范圍的固定大小的部分和塊的固定大小的倍數(shù)。起初在系統(tǒng)中固定塊大小。每個(gè)部分通常被預(yù)先確定并且因此不是動(dòng)態(tài)的。范圍和片段可以是接下來將在本地高速緩存中填充(如果必要)的數(shù)據(jù)。而優(yōu)選地如在前一節(jié)中回顧的那樣使用范圍/片段標(biāo)識(shí)符而不是待填充的數(shù)據(jù)。例如優(yōu)選地在圖3的本地高速緩存填充邏輯10這一級(jí)使用標(biāo)識(shí)符。在所有情況下,范圍/片段無歧義地是指待填充的數(shù)據(jù)。因而將在下文中未進(jìn)行在數(shù)據(jù)的范圍/片段與數(shù)據(jù)的范圍/片段的標(biāo)識(shí)符之間的區(qū)分,因?yàn)樗鼈兪侵赶嗤瑪?shù)據(jù)。
[0121]注意在現(xiàn)有技術(shù)中,范圍有時(shí)被定義為計(jì)算機(jī)文件系統(tǒng)中的為文件而保留的連續(xù)存儲(chǔ)區(qū)域。在當(dāng)前情況下,“范圍”未必被保留用于文件,但是仍然對(duì)應(yīng)于(而未在計(jì)算機(jī)文件系統(tǒng)中、但是在存儲(chǔ)器存儲(chǔ)系統(tǒng)中的)連續(xù)存儲(chǔ)空間區(qū)域。
[0122]在只讀本地高速緩存,即僅高速緩存未修改數(shù)據(jù)的本地高速緩存的情況下,在接收用戶讀取請(qǐng)求時(shí),首先查詢本地高速緩存。如果是高速緩存命中,則可以從本地閃存高速緩存讀取數(shù)據(jù)并且將其發(fā)送回應(yīng)用。否則(高速緩存未命中),向SAN存儲(chǔ)服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求。在從SAN存儲(chǔ)服務(wù)器接收請(qǐng)求的數(shù)據(jù)時(shí),向請(qǐng)求應(yīng)用發(fā)送回?cái)?shù)據(jù)并且根據(jù)它的數(shù)據(jù)大小或者它的熱門度可以向或者可以不向本地閃存高速緩存中填充它。在用戶寫入請(qǐng)求時(shí),使本地高速緩存中的數(shù)據(jù)的舊版本(如果存在)無效,并且向SAN存儲(chǔ)服務(wù)器寫入數(shù)據(jù)。很清楚,可以發(fā)生的是對(duì)于給定的讀取請(qǐng)求,可能在高速緩存中發(fā)現(xiàn)請(qǐng)求的數(shù)據(jù)中的僅一些數(shù)據(jù),也就是說,該請(qǐng)求的部分可以是高速緩存命中而它的部分是高速緩存未命中。這一情況可以稱為“部分命中”。在這樣的情況下,本地高速緩存可以判決服務(wù)來自高速緩存的命中數(shù)據(jù)和來自SAN的未命中數(shù)據(jù)或者服務(wù)來自SAN的所有數(shù)據(jù)——這樣的判決將由稱為部分命中策略的策略支配。在任何情況下,用于供應(yīng)命中和未命中的前述原理分別對(duì)于部分命中和部分未命中仍然成立,因?yàn)榭梢圆糠置锌梢员蛔鳛槊谢蛘咦鳛榛パa(bǔ)未命中和命中來處理。
[0123]如在前一節(jié)中回顧的那樣,高速緩存填充操作中的多數(shù)操作優(yōu)選地由異步執(zhí)行單元10(例如專用軟件線程)支配。這意味著在關(guān)鍵數(shù)據(jù)路徑以外操作實(shí)際高速緩存填充操作。圖3示出異步邏輯填充的總過程,該過程涉及到本地高速緩存監(jiān)管的各種部件、特別是高速緩存填充邏輯10 (后者包括過濾器11、觀察列表12、隊(duì)列21、22和調(diào)度器23)、數(shù)據(jù)移動(dòng)器24、直接附著存儲(chǔ)(DAS)閃存高速緩存26和高速緩存目錄25。
[0124]分別向過濾器11和觀察列表12發(fā)送在步驟S400接收的熱門列表A⑶和在S200Ma接收的本地讀取未命中LRM?;诮邮盏臒衢T列表A⑶和本地讀取未命中LRM,填充邏輯10生成高速緩存填充請(qǐng)求序列(步驟Sll、S121)。如在前一節(jié)中討論的那樣,向由數(shù)據(jù)移動(dòng)器24異步地處理的兩個(gè)隊(duì)列21、22發(fā)送高速緩存填充請(qǐng)求。也優(yōu)選地在與正常用戶讀取/寫入請(qǐng)求比較而言的較低的優(yōu)先級(jí)和/或有限帶寬處理隊(duì)列??梢杂脟?yán)格優(yōu)先級(jí)調(diào)度器23服務(wù)兩個(gè)隊(duì)列。而在變體中,可以代之以使用僅一個(gè)隊(duì)列。然而具有兩個(gè)隊(duì)列會(huì)讓數(shù)據(jù)將更可能在將來更快命中的數(shù)據(jù)帶入高速緩存中,并且使得更易于管理具有高優(yōu)先級(jí)的請(qǐng)求,因?yàn)榭梢栽谝粋€(gè)隊(duì)列中放置高優(yōu)先級(jí)請(qǐng)求并且可以在另一隊(duì)列中放置較低優(yōu)先級(jí)的請(qǐng)求。接著,數(shù)據(jù)移動(dòng)器24將從SAN存儲(chǔ)服務(wù)器CS讀取為高速緩存填充而保持的數(shù)據(jù)(步驟S450)并且在直接附著存儲(chǔ)(DAS)高速緩存26上存儲(chǔ)它(步驟S550);相應(yīng)地更新高速緩存目錄25,步驟S560。外無論本地服務(wù)器LS何時(shí)確認(rèn)本地讀取命中,高速緩存目錄25都可以另外被更新,步驟S200Ha。如更早說明的那樣,過濾器11可以繼續(xù)過濾掉已經(jīng)在高速緩存中的那些數(shù)據(jù),步驟Sllb,也見圖4。盡管最熱門數(shù)據(jù)片段被指示為直接填充到高速緩存中(Sll),但較不熱門數(shù)據(jù)片段被發(fā)送到觀察列表12,步驟Slla。
[0125]因此在若干場(chǎng)合需要SAN存儲(chǔ)服務(wù)器CS:第一次(步驟S400)為提供聚合的高速緩存數(shù)據(jù)信息ACD,即全局統(tǒng)計(jì),并且第二次(S450)為如果需要?jiǎng)t查詢與為了高速緩存填充而保持的那些數(shù)據(jù)對(duì)應(yīng)的實(shí)際數(shù)據(jù)。實(shí)際上,在圖3的實(shí)施例中,填充邏輯10基于數(shù)據(jù)標(biāo)識(shí)符而不是實(shí)際數(shù)據(jù)進(jìn)行判決,使步驟S450在該情況下為必要。這使得有可能明顯減少向本地服務(wù)器轉(zhuǎn)發(fā)的ACD數(shù)據(jù)的數(shù)量,因?yàn)椴⒉皇茿CD數(shù)據(jù)中標(biāo)識(shí)的所有數(shù)據(jù)都應(yīng)被進(jìn)行本地高速緩存。當(dāng)然在變體中,實(shí)際數(shù)據(jù)可以與ACD —起發(fā)送,在該情況下,步驟S450將不再必要。最后也需要系統(tǒng)CS對(duì)來自本地服務(wù)器的“通常”高速緩存未命中請(qǐng)求做出響應(yīng);在附圖中未明示這一點(diǎn),但是對(duì)應(yīng)操作與圖3中的步驟S450、S550和S560相似。
[0126]圖4示出用于本地服務(wù)器的具體過程,該本地服務(wù)器使用中央統(tǒng)計(jì)A⑶、即SAN存儲(chǔ)服務(wù)器CS發(fā)送的熱門范圍列表ACD以進(jìn)行高速緩存填充判決。如圖4中所示,SAN存儲(chǔ)服務(wù)器CS將生成范圍ACD的有序列列表,即其中根據(jù)數(shù)據(jù)范圍的熱門度對(duì)它們排序。這優(yōu)選地通過組合當(dāng)前和以往高速緩存命中以及高速緩存未命中統(tǒng)計(jì)來實(shí)現(xiàn)。ACD中的每個(gè)范圍代表可以以后填充或者不填充的連續(xù)片段標(biāo)識(shí)符的列表。如陳述的那樣,在接收熱門范圍ACD的有序列表時(shí),本地高速緩存將首先從那些片段過濾掉已經(jīng)在高速緩存中、即已經(jīng)存在于高速緩存中或者在填充過程中的片段標(biāo)識(shí)符,步驟Sllb。留下的片段標(biāo)識(shí)符(即非駐留片段的標(biāo)識(shí)符)可能包括少數(shù)“極熱門”片段標(biāo)識(shí)符(虛線矩形段):這些被直接發(fā)送(步驟Sll)到填充隊(duì)列21。如所述的那樣,優(yōu)選地用嚴(yán)格優(yōu)先級(jí)調(diào)度器23服務(wù)圖3的隊(duì)列21、22。填充邏輯執(zhí)行單元10將取得并且異步地執(zhí)行那些填充請(qǐng)求。
[0127]有用于確定‘極熱門’的片段數(shù)目的多種可能機(jī)制;極熱門片段的數(shù)量?jī)?yōu)選地可變。如果例如活躍列表ACD中的數(shù)據(jù)完全歸因于預(yù)測(cè)的或者應(yīng)用發(fā)起的事件則將需要調(diào)整機(jī)制,在該情況下僅需無論度量或者工作量如何都填充片段。注意,這樣的片段標(biāo)識(shí)符可能已經(jīng)在填充觀察列表中。在該情況下,將其從觀察列表去除是有益的。向優(yōu)選地由時(shí)鐘算法的修改版本操作的填充觀察列表12中插入剩余較少熱門片段標(biāo)識(shí)符,以找出值得填充的片段,即根據(jù)某些規(guī)則。
[0128]此外并且如更早已經(jīng)提到的那樣,可以有可以向填充觀察列表12中添加的片段標(biāo)識(shí)符,例如,近期已經(jīng)看見讀取未命中的任何片段標(biāo)識(shí)符LRM的其它流(S200Ma)。
[0129]更具體而言,可以針對(duì)觀察列表12中的每個(gè)片段標(biāo)識(shí)符保持參考偽命中計(jì)數(shù)C。填充觀察列表可以被管理如下:在片段標(biāo)識(shí)符到達(dá)填充觀察列表時(shí),首先檢查片段標(biāo)識(shí)符是否已經(jīng)在填充觀察列表中。這獨(dú)立于片段標(biāo)識(shí)符是否來自熱門范圍有序列表或者歸因于讀取未命中或者另一來源。因此:
[0130]-如果片段標(biāo)識(shí)符是讀取命中并且產(chǎn)生觀察列表上的偽命中,則它的偽命中計(jì)數(shù)C被遞增I。另外,
[0131]-如果其偽命中計(jì)數(shù)C大于(或者等于)閾值T,則從觀察列表取出并且向填充隊(duì)列中放入片段標(biāo)識(shí)符(步驟S121)。
[0132]現(xiàn)在如果片段標(biāo)識(shí)符作為中央系統(tǒng)建議ACD的部分而來并且在觀察列表中,則在該情況下不會(huì)完成任何特定操作。意圖在于不遞增用于ACD建議的偽命中計(jì)數(shù)器,即偽命中僅針對(duì)本地讀取未命中LRM而出現(xiàn),從而ACD列表中的冷門片段與本地讀取未命中LRM相比較不會(huì)獲得額外命中。
[0133]如果片段標(biāo)識(shí)符仍未在觀察列表12中,則通過移動(dòng)時(shí)鐘12a的鐘針經(jīng)過循環(huán)緩沖器并且在循環(huán)中執(zhí)行以下步驟來開始更換過程:
[0134]-如果指向的元素空閑,則該空檔被傳入片段標(biāo)識(shí)符占用,并且初始化它的命中計(jì)數(shù)為O。該過程然后停止。
[0135]-如果指向的元素與在非駐留時(shí)鐘中的平均命中計(jì)數(shù)相比較具有較低的命中計(jì)數(shù)(例如接近O的某值或者T的部分),則去除它并且由傳入片段占用它的空檔,而初始化它的命中計(jì)數(shù)為O。該過程然后停止。
[0136]-否則,重置指向的片段標(biāo)識(shí)符的參考計(jì)數(shù)或者除以衰減因子(比如2或者3),然后鐘針移向下一元素。
[0137]—般可以執(zhí)行循環(huán)直至新片段標(biāo)識(shí)符已經(jīng)在觀察列表中發(fā)現(xiàn)位置。備選地,可以在某一數(shù)目的鐘針移動(dòng)之后停止它,以限制耗費(fèi)的處理循環(huán)。在后一種情況下,必須在最后一圈中判決保持哪個(gè)片段標(biāo)識(shí)符(新片段標(biāo)識(shí)符或者在當(dāng)前鐘針位置處的片段標(biāo)識(shí)符)而放棄哪個(gè)。該判決可以是當(dāng)前C和T值的函數(shù)。
[0138]可以設(shè)置閾值T為可配置值,例如3。該值可以由試錯(cuò)法來細(xì)化這一個(gè)值。由于這一個(gè)值影響高速緩存性能,所以優(yōu)選地利用一種用于如下設(shè)置自適應(yīng)閾值的方法。
[0139]-假如另一時(shí)鐘24a基于駐留片段的參考計(jì)數(shù)管理這些片段,自適應(yīng)閾值方法將保持跟蹤(步驟S580)在步驟S570驅(qū)逐的最新近驅(qū)逐的片段的參考計(jì)數(shù)的(移動(dòng))平均值,比如Ce。
[0140]-然后,針對(duì)兩個(gè)時(shí)鐘(即用于駐留數(shù)據(jù)的時(shí)鐘24a和用于非駐留數(shù)據(jù)(即在觀察列表中)的時(shí)鐘12a)測(cè)量時(shí)鐘移動(dòng)速度。
[0141]例如:在給定的時(shí)間段期間,駐留時(shí)鐘24a移動(dòng)Nr圈,而非駐留時(shí)鐘12a移動(dòng)Nn圈。然后,閾值T被設(shè)置為CeNr/Nn。
[0142]回顧按照定義,T是用于向本地高速緩存中填充非駐留片段的參考計(jì)數(shù)閾值。通過設(shè)置T = CeNr/Nn,預(yù)計(jì)進(jìn)入本地高速緩存26的片段與驅(qū)逐的片段相比而言更有益。
[0143]在極端情況下,可能發(fā)生(至少在理論上)針對(duì)一段時(shí)間無填充請(qǐng)求,然后設(shè)置T為零值,因?yàn)镹r = O。這是不希望的,因?yàn)樵试S填充冷門片段。為了避免這一極端情況,填充邏輯將實(shí)行最小填充速度,即針對(duì)給定的時(shí)間段,填充邏輯將發(fā)出至少Tf個(gè)片段填充請(qǐng)求,其中Tf是預(yù)定義的小數(shù)目。
[0144]為了填充非駐留片段,如果本地高速緩存已滿,則必須驅(qū)逐來自該高速緩存的一個(gè)駐留片段。待驅(qū)逐的駐留片段由驅(qū)逐算法選擇。在一個(gè)優(yōu)選實(shí)施例中,使用時(shí)鐘算法,其中對(duì)于每個(gè)駐留片段,參考計(jì)數(shù)用來記錄高速緩存命中。一旦鐘針指向具有少數(shù)命中的那些片段,它們就被驅(qū)逐。然而SAN存儲(chǔ)服務(wù)器或者應(yīng)用可以規(guī)定特定片段將不會(huì)被驅(qū)逐算法考慮用于驅(qū)逐(例如,即SAN存儲(chǔ)服務(wù)器標(biāo)識(shí)為“極熱門”、即“必須有”的片段)。只要SAN存儲(chǔ)服務(wù)器規(guī)定,則那些“極熱門”片段將會(huì)留在本地高速緩存中。這可以將如下單個(gè)位用于每個(gè)駐留片段來實(shí)現(xiàn),該位指示該片段是否被釘住(即不能從高速緩存去除它)。為了完整,駐留時(shí)鐘24a使用與非駐留時(shí)鐘12a相同的算法以重置或者衰減用于傳遞的片段的參考計(jì)數(shù),因?yàn)閰⒖加?jì)數(shù)不低。
[0145]接下來關(guān)于計(jì)算機(jī)程序代碼實(shí)施例的考慮如下。[0146]可以適當(dāng)?shù)卦O(shè)計(jì)計(jì)算機(jī)化的設(shè)備用于實(shí)施如這里描述的本發(fā)明的實(shí)施例。就這一點(diǎn)而言,可以理解這里描述的方法主要為非交互和自動(dòng)化。在示例實(shí)施例中,可以在交互、部分交互或者非交互系統(tǒng)中實(shí)施這里描述的實(shí)施例??梢栽谲浖?例如固件)、硬件或者其組合中實(shí)施這里描述的方法。在示例實(shí)施例中,在軟件中實(shí)施這里描述的方法為可執(zhí)行程序,后者由適當(dāng)數(shù)字處理設(shè)備執(zhí)行。更一般而言,可以實(shí)施本發(fā)明的實(shí)施例,其中使用通用數(shù)字計(jì)算機(jī)、比如個(gè)人計(jì)算機(jī)、工作站等。
[0147]這里描述的方法可以是以源程序、可執(zhí)行程序(目標(biāo)代碼)、腳本或者包括待執(zhí)行的指令集的任何其它實(shí)體的形式。在以源程序形式時(shí),然后需要經(jīng)由可以在存儲(chǔ)器內(nèi)或者未在存儲(chǔ)器內(nèi)包括的如本身已知的編譯器、匯編器、解譯器等轉(zhuǎn)譯程序以便恰當(dāng)結(jié)合OS來進(jìn)行操作。另外,可以編寫方法為具有數(shù)據(jù)和方法類的面向?qū)ο缶幊陶Z言或者具有例程、子例程和/或函數(shù)的過程編程語言。
[0148]如本領(lǐng)域技術(shù)人員將理解的那樣,可以實(shí)現(xiàn)本發(fā)明的方面為計(jì)算機(jī)化的系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品。因而,本發(fā)明的方面可以采用全硬件實(shí)施例、全軟件實(shí)施例(包括固件、駐留軟件、微代碼等)或者將軟件與硬件方面組合的實(shí)施例的形式。另外,本發(fā)明的方面可以采用在一個(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)中實(shí)現(xiàn)的計(jì)算機(jī)程序產(chǎn)品的形式,該一個(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)具有在其上實(shí)現(xiàn)的計(jì)算機(jī)可讀程序代碼??梢岳靡粋€(gè)或者多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以例如是但不限于電子、磁、光學(xué)、電磁、紅外線或者半導(dǎo)體系統(tǒng)、裝置或者設(shè)備或者前述各項(xiàng)的任何適當(dāng)組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更多具體示例(非窮盡列舉)包括以下各項(xiàng):具有一個(gè)或者多個(gè)接線的電連接、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或者閃存)、光纖、便攜式致密盤只讀存儲(chǔ)器(CD-ROM)、光學(xué)存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備或者前述各項(xiàng)的任何適當(dāng)組合。在本文的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何有形介質(zhì),該有形介質(zhì)可以包含或者存儲(chǔ)用于由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用的或者與指令執(zhí)行系統(tǒng)、裝置或者設(shè)備結(jié)合使用的程序。
[0149]計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括例如在基帶中或者作為載波的部分的傳播數(shù)據(jù)信號(hào),該傳播數(shù)據(jù)信號(hào)具有在其中實(shí)現(xiàn)的計(jì)算機(jī)可讀程序代碼。這樣的傳播信號(hào)可以采用包括但不限于電磁、光學(xué)或者其任何適當(dāng)組合的多種形式中的任何形式。計(jì)算機(jī)可讀信號(hào)介質(zhì)可以是任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)不是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)并且可以傳達(dá)、傳播或者傳送用于由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用的或者與指令執(zhí)行系統(tǒng)、裝置或者設(shè)備結(jié)合使用的程序??梢允褂萌魏芜m當(dāng)介質(zhì)來傳輸在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)的程序代碼,該介質(zhì)包括但不限于無線、有線、光纖線纜、R.F等或者前述各項(xiàng)的任何適當(dāng)組合。
[0150]可以用一種或者多種編程語言的任何組合編寫用于實(shí)現(xiàn)用于本發(fā)明的方面的操作的計(jì)算機(jī)程序代碼,該一種或者多種編程語言包括諸如Java、Smalltalk、C++等面向?qū)ο缶幊陶Z言和比如C編程語言或者相似編程語言這樣的常規(guī)過程編程語言。根據(jù)涉及的本發(fā)明的方面,程序代碼可以完全在一個(gè)本地服務(wù)器上、部分在一個(gè)本地服務(wù)器上而部分在遠(yuǎn)程本地服務(wù)器上執(zhí)行。它可以部分在本地服務(wù)器上而部分在中央系統(tǒng)上或者完全在中央系統(tǒng)上執(zhí)行。
[0151]上文參照根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖圖示和/或框圖描述本發(fā)明的方面。將理解計(jì)算機(jī)程序指令可以實(shí)施流程圖圖示和/或框圖的每個(gè)塊??梢韵蛲ㄓ糜?jì)算機(jī)、專用計(jì)算機(jī)或者其它可編程數(shù)據(jù)處理裝置的處理器提供這些計(jì)算機(jī)程序指令以生產(chǎn)機(jī)器,從而經(jīng)由計(jì)算機(jī)或者其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實(shí)施在流程圖和/或框圖的一個(gè)或者多個(gè)塊中指定的功能/動(dòng)作的裝置。
[0152]也可以向計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或者其它設(shè)備上加載計(jì)算機(jī)程序指令以使系列操作步驟在計(jì)算機(jī)、其它可編程裝置或者其它設(shè)備上執(zhí)行以產(chǎn)生計(jì)算機(jī)實(shí)施的過程,從而在計(jì)算機(jī)或者其它可編程裝置上執(zhí)行的指令提供用于實(shí)施在流程圖和/或框圖的一個(gè)或者多個(gè)塊中指定的功能/動(dòng)作的過程。
[0153]圖中的流程圖和框圖舉例說明根據(jù)本發(fā)明的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)方式的架構(gòu)、功能和操作。就這一點(diǎn)而言,在流程圖或者框圖中的每個(gè)塊可以代表代碼模塊、段或者部分,該代碼模塊、段或者部分包括用于實(shí)施指定的邏輯功能的一個(gè)或者多個(gè)可執(zhí)行指令。也應(yīng)當(dāng)注意,在一些備選實(shí)現(xiàn)方式中,在塊中指出的功能可以不按圖中指出的順序出現(xiàn)。例如事實(shí)上根據(jù)涉及到的功能和算法優(yōu)化可以基本上并行執(zhí)行接連示出的兩個(gè)塊或者有時(shí)可以按相反順序執(zhí)行這些塊。也將注意,框圖和/或流程圖圖示的每個(gè)塊以及在框圖和/或流程圖圖示中的塊組合可以由執(zhí)行指定的功能或者動(dòng)作的基于專用硬件的系統(tǒng)實(shí)施或者由專用硬件與計(jì)算機(jī)指令的組合實(shí)施。
[0154]盡管已經(jīng)參照某些實(shí)施例描述本發(fā)明,但是本領(lǐng)域技術(shù)人員將理解,在不脫離本發(fā)明的范圍的前提下,可以進(jìn)行各種改變并且可以替代等同體。此外,可以進(jìn)行許多修改以使特定情形或者材料適應(yīng)本發(fā)明的教導(dǎo)而不脫離其范圍。因此,旨在于本發(fā)明不限于公開的具體實(shí)施例、但是本發(fā)明將包括落入所附權(quán)利要求的范圍內(nèi)的所有實(shí)施例。就這一點(diǎn)而言,根據(jù)選擇的實(shí)施例,無需涉及到在附圖中描繪的所有部件/步驟。此外,可以設(shè)想除了上文明示的變體之外的許多變體。例如中央服務(wù)器可以獨(dú)自實(shí)施分層機(jī)制,即,無高速緩存機(jī)制。作為另一例子,本地服務(wù)器L1、L2中的每個(gè)本地服務(wù)器可以將細(xì)粒度本地統(tǒng)計(jì)組裝成粗粒度統(tǒng)計(jì),以便使它在更好地適合于中央系統(tǒng)CS的格式中可用于該中央系統(tǒng)。
[0155]標(biāo)號(hào)列表
[0156]I 計(jì)算機(jī)化的系統(tǒng)
[0157]10 本地高速緩存填充邏輯
[0158]11 過濾器
[0159]12 觀察列表
[0160]12a非駐留(觀察列表)時(shí)鐘
[0161]21 本地高速緩存填充邏輯的第一隊(duì)列
[0162]22 本地高速緩存填充邏輯的第二隊(duì)列
[0163]23 本地高速緩存填充邏輯的調(diào)度器
[0164]24 本地高速緩存數(shù)據(jù)移動(dòng)器
[0165]24a駐留時(shí)鐘
[0166]25 本地高速緩存目錄
[0167]26 本地Das高速緩存存儲(chǔ)器
[0168]Al 應(yīng)用 #1[0169]A2應(yīng)用 #2
[0170]A⑶聚合的高速緩存數(shù)據(jù)信息
[0171]BES共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)的后端存儲(chǔ)裝置
[0172]CC共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)的高速緩存
[0173]CMl高速緩存(DAS)存儲(chǔ)器#1
[0174]CM2高速緩存(DAS)存儲(chǔ)器#2
[0175]CM高速緩存(DAS)存儲(chǔ)器
[0176]CS共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(中央系統(tǒng),SAN存儲(chǔ)服務(wù)器)
[0177]D在共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)
[0178]H高速緩存命中數(shù)據(jù)
[0179]H,M 高速緩存數(shù)據(jù)信息 [0180]LRM 本地高速緩存未命中數(shù)據(jù)
[0181]LSl 本地服務(wù)器# I [0182]LS2 本地服務(wù)器#2
[0183]M高速緩存未命中數(shù)據(jù)
[0184]T共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)的分層機(jī)制
【權(quán)利要求】
1.一種用于管理高速緩存存儲(chǔ)器的方法,所述方法包括: 提供(SlOO)計(jì)算機(jī)化的系統(tǒng)(I),所述計(jì)算機(jī)化的系統(tǒng)包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)和若干本地服務(wù)器(LSI,LS2),其中: 所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)被配置為與所述本地服務(wù)器交互; 所述本地服務(wù)器使用相應(yīng)高速緩存存儲(chǔ)器(CM1,CM2)來服務(wù)應(yīng)用(A1,A2);以及 所述本地服務(wù)器中的每個(gè)本地服務(wù)器訪問在所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)(D), 所述方法還包括: 從所述本地服務(wù)器(LSI,LS2)中的每個(gè)本地服務(wù)器向所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)提供(S200H,S200M)高速緩存數(shù)據(jù)信息,提供的所述高速緩存數(shù)據(jù)信息包括: 高速緩存命中數(shù)據(jù)(H),其代表所述本地服務(wù)器中的每個(gè)本地服務(wù)器的高速緩存命中;以及 高速緩存未命中數(shù)據(jù)(M),其代表所述本地服務(wù)器中的每個(gè)本地服務(wù)器的高速緩存未命中; 在所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)處將接收的所述高速緩存未命中數(shù)據(jù)和所述高速緩存命中數(shù)據(jù)的至少部分聚合(S300)到聚合的高速緩存數(shù)據(jù)信息(ACD),并且向所述本地服務(wù)器中的一個(gè)或者多個(gè)本地服務(wù)器提供(S400)所述聚合的高速緩存數(shù)據(jù)信息;以及 在所述本地服務(wù)器中的所述一個(gè)或者多個(gè)本地服務(wù)器處,基于提供的所述聚合的高速緩存數(shù)據(jù)信息(ACD),更新(S500)用以服務(wù)相應(yīng)一個(gè)或者多個(gè)應(yīng)用的相應(yīng)一個(gè)或者多個(gè)高速緩存存儲(chǔ)器。
2.一種用于管理高速緩存存儲(chǔ)器的方法,包括: 提供使用高速緩存存儲(chǔ)器(CMl)來服務(wù)應(yīng)用(Al)的本地服務(wù)器(LSI),所述本地服務(wù)器(LSI)還被配置為與共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)交互,所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)被配置為與訪問在所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)中存儲(chǔ)的數(shù)據(jù)的若干本地服務(wù)器(LS1,LS2)交互, 所述方法還包括,在所述本地服務(wù)器(LSI)處: 使得(S200H,S200M)高速緩存數(shù)據(jù)信息可用于所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS),所述高速緩存數(shù)據(jù)信息包括: 高速緩存命中數(shù)據(jù),其代表所述每個(gè)本地服務(wù)器的高速緩存命中;以及 高速緩存未命中數(shù)據(jù),其代表所述每個(gè)本地服務(wù)器的高速緩存未命中; 從所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)接收通過聚合(S300)從若干本地服務(wù)器獲得的高速緩存命中數(shù)據(jù)和高速緩存未命中數(shù)據(jù)而獲得的聚合的高速緩存數(shù)據(jù)信息(ACD);以及 基于接收的所述聚合的高速緩存數(shù)據(jù)信息(ACD),來更新(S500)所述高速緩存存儲(chǔ)器。
3.一種用于管理高速緩存存儲(chǔ)器的方法,包括: 提供(SlOO)包括共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)的計(jì)算機(jī)化的系統(tǒng)(I),所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)被配置為與使用相應(yīng)高速緩存存儲(chǔ)器(CM1,CM2)來服務(wù)應(yīng)用(A1,A2)的若干本地服務(wù)器(LSI,LS2)交互,其中所述本地服務(wù)器優(yōu)選地在所述應(yīng)用請(qǐng)求時(shí)訪問在所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)中存儲(chǔ)的數(shù)據(jù),所述方法還包括在所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)處: 以任何順序從所述本地服務(wù)器(LSI,LS2)中的每個(gè)本地服務(wù)器接收(S210H,S210M,S400): 高速緩存命中數(shù)據(jù),其代表所述每個(gè)本地服務(wù)器的高速緩存命中;以及 高速緩存未命中數(shù)據(jù),其代表所述每個(gè)本地服務(wù)器的高速緩存未命中; 將接收的所述高速緩存命中數(shù)據(jù)和接收的所述高速緩存未命中數(shù)據(jù)的至少部分聚合(S300)到聚合的高速緩存數(shù)據(jù)信息(ACD)中;以及 向所述本地服務(wù)器(LSI,LS2)中的一個(gè)(LSI)或者多個(gè)本地服務(wù)器提供(S400)所述聚合的高速緩存數(shù)據(jù)信息,用于隨后基于所述聚合的高速緩存數(shù)據(jù)信息(ACD)來更新(S500)用以服務(wù)相應(yīng)應(yīng)用的相應(yīng)高速緩存存儲(chǔ)器(CMl,CM2)。
4.根據(jù)權(quán)利要求1至3中的任一權(quán)利要求所述的方法,其中聚合(S300)還包括:根據(jù)所述高速緩存命中數(shù)據(jù)和所述高速緩存未命中數(shù)據(jù)的出現(xiàn)對(duì)所述高速緩存命中數(shù)據(jù)和所述高速緩存未命中數(shù)據(jù)排序,以使得所獲得的所述聚合的高速緩存數(shù)據(jù)信息的結(jié)構(gòu)反映所述排序。
5.根據(jù)權(quán)利要求1或者2所述的方法,其中關(guān)于來自由相應(yīng)本地服務(wù)器(LSI)服務(wù)的相應(yīng)應(yīng)用(Al)的、對(duì)高速緩存存儲(chǔ)器(CMl)的請(qǐng)求,異步地執(zhí)行更新(S500)所述高速緩存存儲(chǔ)器(CMl)。
6.根據(jù)權(quán)利要求1至5中的任一權(quán)利要求所述的方法,其中更新(S500)高速緩存存儲(chǔ)器(CMl)包括:選擇所述聚合的 高速緩存數(shù)據(jù)信息(ACD)中的數(shù)據(jù)子集,并且根據(jù)選擇的所述數(shù)據(jù)子集填充(S11,S121)所述高速緩存存儲(chǔ)器(CMl)。
7.根據(jù)權(quán)利要求6所述的方法,其中更新(S500)高速緩存存儲(chǔ)器(CMl)包括:選擇所述聚合的高速緩存數(shù)據(jù)信息中的至少兩個(gè)相異數(shù)據(jù)子集;指示(Sll)利用與所述相異數(shù)據(jù)子集之一對(duì)應(yīng)的數(shù)據(jù)無延遲地填充(Sll)所述高速緩存存儲(chǔ)器(CMl);以及指示(Slla)在觀察列表(12)中放置與所述相異數(shù)據(jù)子集中的另一數(shù)據(jù)子集對(duì)應(yīng)的數(shù)據(jù), 所述方法還包括步驟: 監(jiān)視(S120)所述觀察列表中的數(shù)據(jù),以確定將在所述高速緩存存儲(chǔ)器(CMl)中填充(S121)的數(shù)據(jù);以及 在所述高速緩存存儲(chǔ)器(CMl)中填充(S121)相應(yīng)地確定的所述數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的方法,其中所述方法還包括:指示(S200Ma)在觀察列表(12)中放置與本地高速緩存未命中數(shù)據(jù)(LRM)對(duì)應(yīng)的附加數(shù)據(jù),所述本地高速緩存未命中數(shù)據(jù)代表由本地服務(wù)器獨(dú)立于所述聚合的高速緩存數(shù)據(jù)信息(ACD)而收集的高速緩存未命中數(shù)據(jù),以使得所述本地高速緩存未命中數(shù)據(jù)和與所述兩個(gè)相異數(shù)據(jù)子集中的第二數(shù)據(jù)子集對(duì)應(yīng)的所述數(shù)據(jù)二者能夠被監(jiān)視,以確定哪個(gè)數(shù)據(jù)將在所述高速緩存存儲(chǔ)器(CMl)中被填充(S121)。
9.根據(jù)權(quán)利要求7或者8所述的方法,其中所述觀察列表包括高速緩存的對(duì)象的循環(huán)列表(12a),并且監(jiān)視(S120)所述觀察列表中的數(shù)據(jù)包括:從所述循環(huán)列表(12a)驅(qū)逐最舊的高速緩存的對(duì)象,所述最舊的高速緩存的對(duì)象在給定的時(shí)間段期間未曾被請(qǐng)求進(jìn)行訪問。
10.根據(jù)權(quán)利要求7至9中的任一權(quán)利要求所述的方法,其中所述方法還包括:在利用已經(jīng)駐留于高速緩存存儲(chǔ)器中的數(shù)據(jù)填充高速緩存存儲(chǔ)器之前,過濾(Sllb)這樣的數(shù)據(jù)。
11.根據(jù)權(quán)利要求1至10中的任一權(quán)利要求所述的方法,其中聚合的高速緩存數(shù)據(jù)信息以比在高速緩存存儲(chǔ)器的任何后續(xù)更新處使用的粒度更大的粒度被聚合。
12.—種共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS),被配置為執(zhí)行根據(jù)權(quán)利要求1至11所述的方法中的任一方法中的所述共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)執(zhí)行的步驟中的每個(gè)步驟。
13.一種服務(wù)器(LSI,LS2),被配置為執(zhí)行根據(jù)權(quán)利要求1至11所述的方法中的任一方法中的單個(gè)本地服務(wù)器執(zhí)行的步驟中的每個(gè)步驟。
14.一種計(jì)算機(jī)化的系統(tǒng)(I),包括根據(jù)權(quán)利要求12所述的共享的數(shù)據(jù)存儲(chǔ)系統(tǒng)(CS)以及各自根據(jù)權(quán)利要求1`3所述的若干本地服務(wù)器(LSI,LS2)。
【文檔編號(hào)】H04L29/08GK103513935SQ201310246644
【公開日】2014年1月15日 申請(qǐng)日期:2013年6月20日 優(yōu)先權(quán)日:2012年6月21日
【發(fā)明者】胡曉宇, R·哈斯, I·科爾特西達(dá)斯, R·普萊特卡, P·H·明奇, S·L·布林尼克, Y-C·蘇, E·S·埃萊夫特里烏, L·Y·邱 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司