專利名稱:采用多個頁替換算法的高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高速緩存,尤其涉及采用多個頁替換算法的高速緩存。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)及相關(guān)技術(shù)影響社會的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已轉(zhuǎn)變了我們生活和工作的方式。現(xiàn)在,計(jì)算機(jī)系統(tǒng)如今通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)以前手動執(zhí)行的許多任務(wù)(例如,文字處理、日程安排、會計(jì)等)。最近,計(jì)算機(jī)系統(tǒng)彼此耦合并耦合到其他電子設(shè)備以形成計(jì)算機(jī)系統(tǒng)及其他電子設(shè)備可在其上傳輸電子數(shù)據(jù)的有線和無線計(jì)算機(jī)網(wǎng)絡(luò)。因此,許多計(jì)算任務(wù)的執(zhí)行分布在多個不同的計(jì)算機(jī)系統(tǒng)和/或多個不同的計(jì)算環(huán)境中。計(jì)算機(jī)系統(tǒng)采用高速緩存來加速對文件的訪問。在一應(yīng)用請求訪問盤上的文件時,計(jì)算機(jī)系統(tǒng)(例如,操作系統(tǒng))可以檢索該文件(或該文件的所請求的部分(頁))并將該文件(或該部分)存儲在高速緩存中(例如,在系統(tǒng)存儲器中)。對該文件的后續(xù)訪問隨后可通過訪問高速緩存中(而非來自盤)的文件來執(zhí)行。因?yàn)樵L問高速緩存大大快于訪問盤,所以尤其是在頻繁訪問文件時,性能得到改進(jìn)??梢允褂酶鞣N不同的頁替換算法來實(shí)現(xiàn)高速緩存。一種常見的算法是最久未使用(LRU)算法。在LRU算法中,各頁基于它們被訪問的最后時間而被存儲在高速緩存中。在要對一個頁進(jìn)行高速緩存(并且高速緩存已經(jīng)充滿)時,LRU算法將確定高速緩存中哪一頁是最久未使用的并且丟棄該頁來為要進(jìn)行高速緩存的頁騰出空間。例如,情況可以是:高速緩存存儲了三個頁:10秒之前訪問過的頁1、20秒之前訪問過的頁2、以及30秒之前訪問過的頁3。因而,在要對新頁進(jìn)行高速緩存時,頁3將被丟棄來為該要被高速緩存的新頁騰出空間,因?yàn)轫?是最久未訪問的。另一常見算法是LRU2算法,它是LRU算法的變型。除了對頁的倒數(shù)第二次訪問被用來確定要從高速緩存中丟棄哪一頁之外,LRU2算法類似于LRU算法。使用與以上相同的示例,情況是:10秒和2分鐘之前訪問過的頁1、20秒和21秒之前訪問過的頁2、以及30秒和35秒之前訪問過的頁3。如此,在要對新頁進(jìn)行高速緩存時,使用LRU2算法,頁I將被丟棄,因?yàn)轫?的倒數(shù)第二次訪問是最久的。LRU算法的另外變型包括LRU3 (它使用倒數(shù)第三次訪問)、LRU4 (它使用倒數(shù)第四次訪問),等等。在單次訪問許多文件時,如在執(zhí)行文件掃描時,LRU算法發(fā)生了一個問題。例如,在文件掃描期間(例如,惡意軟件掃描),每一文件都被訪問。因而,在短期內(nèi)不太可能被再次訪問的文件的各頁被高速緩存。對這些頁進(jìn)行的高速緩存使得可能被再次訪問的其他頁被從高速緩存中丟棄。出于這一原因,通常使用LRU2而非LRU,因?yàn)長RU2查看倒數(shù)第二次訪問而非最后訪問來確定從高速緩存中丟棄哪一頁。對于高速緩存,操作系統(tǒng)提供兩個一般的I/O模式,在本說明書中它們被稱為緩沖I/o和無緩沖I/O。緩沖I/O指的是由操作系統(tǒng)通過使用高速緩存技術(shù)(即I/O獲得的數(shù)據(jù)被高速緩存在存儲器中)來處理的I/o請求。無緩沖I/O指的是由操作系統(tǒng)在不采用高速緩存的情況下(即,所請求的數(shù)據(jù)總是從盤獲取的)處理的I/o請求。因此,一應(yīng)用可以請求操作系統(tǒng)通過使用緩沖I/o請求或無緩沖I/O請求來獲得數(shù)據(jù)。—些類型的文件總是經(jīng)由無緩沖I/O來訪問的。例如,在主存了虛擬機(jī)的系統(tǒng)中,虛擬機(jī)經(jīng)由無緩沖I/O來訪問虛擬盤。在一個環(huán)境中,存在著許多虛擬機(jī)從中執(zhí)行的父虛擬盤。父虛擬盤存儲了每一虛擬機(jī)所使用的操作系統(tǒng)和應(yīng)用。另外,可為每一虛擬機(jī)創(chuàng)建子虛擬盤。每一虛擬機(jī)使用它的子虛擬盤來存儲虛擬機(jī)專用數(shù)據(jù)(如在該虛擬機(jī)上創(chuàng)建的文字處理文檔或該虛擬機(jī)想要對父虛擬盤作出的任何其他變更)。換言之,父虛擬盤是只讀虛擬盤。相反,每當(dāng)虛擬機(jī)必須修改父虛擬盤的內(nèi)容(例如,在虛擬盤上存儲新文件)時,對該虛擬機(jī)的子虛擬盤作出該修改。子虛擬盤還可被稱為差別(differencing)盤。虛擬機(jī)經(jīng)由無緩沖I/O訪問父虛擬盤以及其子虛擬盤。因此,這些虛擬盤的被訪問的各頁沒有被高速緩存在其中主存這些虛擬機(jī)的計(jì)算機(jī)系統(tǒng)上。因?yàn)樵谕环?wù)器上執(zhí)行的許多虛擬機(jī)從父虛擬盤中訪問許多相同的頁,所以I/o性能可能受損。換言之,每一次虛擬機(jī)從父虛擬盤訪問特定頁時,該頁必須被從物理盤(而不是從高速緩存)訪問。在虛擬機(jī)環(huán)境中,物理盤通常在物理上與該計(jì)算機(jī)系統(tǒng)分開(例如,在通過網(wǎng)絡(luò)連接到服務(wù)器的存儲陣列中),從而造成更大的性能下降。圖1 (現(xiàn)有技術(shù))示出了用于主存虛擬機(jī)的典型的計(jì)算機(jī)環(huán)境100。環(huán)境100包括各自連接到存儲陣列102的多個服務(wù)器節(jié)點(diǎn)(101a-101n)。服務(wù)器節(jié)點(diǎn)IOla-1Oln中的每一個主存了通過連接103訪問存儲在存儲陣列102中的父虛擬盤104的多個虛擬機(jī)。連接103可以是服務(wù)器節(jié)點(diǎn)與存儲陣列102之間的任何類型的連接,包括直接連接或網(wǎng)絡(luò)連接。除了父虛擬盤104之外,服務(wù)器節(jié)點(diǎn)IOla-1Oln中的每一個上的每一虛擬機(jī)的子虛擬盤也被存儲在存儲陣列102上。在虛擬機(jī)訪問虛擬盤(父或子虛擬盤)時,經(jīng)由無緩沖I/O執(zhí)行該訪問(B卩,通過訪問存儲陣列102,而不是本地存儲器中的高速緩存)。因?yàn)樵S多虛擬機(jī)(例如,每服務(wù)器節(jié)點(diǎn)1000個虛擬機(jī))訪問存儲在存儲陣列102上的父虛擬盤和它們各自的子虛擬盤,所以通過連接103對存儲陣列102進(jìn)行了大量的I/O請求。即使同一服務(wù)器節(jié)點(diǎn)上的各虛擬機(jī)訪問父虛擬盤的相同頁時,情況也是如此,因?yàn)檫@些訪問是經(jīng)由無緩沖I/O執(zhí)行的,使得所訪問的頁沒有被高速緩存在對應(yīng)的服務(wù)器節(jié)點(diǎn)的存儲器中。
發(fā)明內(nèi)容
本發(fā)明延及用于實(shí)現(xiàn)使用多個頁替換算法的高速緩存的方法、系統(tǒng)以及計(jì)算機(jī)程序產(chǎn)品。通過實(shí)現(xiàn)多個算法,可以實(shí)現(xiàn)更高效的高速緩存,其中最可能被再次訪問的各頁被保留在高速緩存中。多個頁替換算法可被用于任何高速緩存中,包括用于對經(jīng)由緩沖I/o訪問的各頁進(jìn)行高速緩存的操作系統(tǒng)高速緩存以及用于對經(jīng)由無緩沖I/o訪問的各頁(如虛擬機(jī)作出的對虛擬盤的訪問)進(jìn)行高速緩存的高速緩存。 在一個實(shí)施例中,通過使用第一頁替換算法替換高速緩存的第一邏輯部分中的頁來維護(hù)該第一邏輯部分,實(shí)現(xiàn)了采用多個頁替換算法的高速緩存。使用第二頁替換算法替換高速緩存的第二邏輯部分中的頁,該第二邏輯部分也得到維護(hù)。在要替換第一邏輯部分中的第一頁時,如果第一頁至少被訪問了要被認(rèn)為能高速緩存在第二邏輯部分中所需的最少次數(shù),則將該第一頁從高速緩存的第一邏輯部分移至第二邏輯部分。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下的具體實(shí)施例中進(jìn)一步描述的一些概念。本概述不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。本發(fā)明的附加特征和優(yōu)點(diǎn)將在以下描述中敘述,且其一部分根據(jù)本說明書將是顯而易見的,或可通過對本發(fā)明的實(shí)踐來獲知。本發(fā)明的特征和優(yōu)點(diǎn)可通過在所附權(quán)利要求書中特別指出的工具和組合來實(shí)現(xiàn)和獲得。本發(fā)明的這些和其他特征將通過以下描述和所附權(quán)利要求書變得更加顯而易見,或可通過對下文中所述的本發(fā)明的實(shí)踐來領(lǐng)會。
為了描述可獲得本發(fā)明的上述和其它優(yōu)點(diǎn)和特征的方式,將通過引用附圖中示出的本發(fā)明的具體實(shí)施例來呈現(xiàn)以上簡要描述的本發(fā)明的更具體描述??梢岳斫猓@些附圖僅描述本發(fā)明的典型實(shí)施例,從而不被認(rèn)為是對其范圍的限制,本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和說明,在附圖中:圖1示出了其中主存了虛擬機(jī)的現(xiàn)有技術(shù)計(jì)算機(jī)環(huán)境;圖2示出了便于實(shí)現(xiàn)使用多個頁替換算法的高速緩存的示例計(jì)算機(jī)體系結(jié)構(gòu);圖3A和3B示出了采用多個頁替換算法的高速緩存的示例性邏輯安排;圖4示出了用于實(shí)現(xiàn)采用多個頁替換算法的高速緩存的示例性方法的流程圖;以及圖5示出了其中可以使用采用多個頁替換算法的高速緩存的示例性服務(wù)器體系結(jié)構(gòu)。
具體實(shí)施例方式本發(fā)明延及用于實(shí)現(xiàn)使用多個頁替換算法的高速緩存的方法、系統(tǒng)以及計(jì)算機(jī)程序產(chǎn)品。通過實(shí)現(xiàn)多個算法,可以實(shí)現(xiàn)更高效的高速緩存,其中最可能被再次訪問的各頁被保留在高速緩存中。多個頁替換算法可被用于任何高速緩存中,包括用于對經(jīng)由緩沖I/o訪問的各頁進(jìn)行高速緩存的操作系統(tǒng)高速緩存以及用于對經(jīng)由無緩沖I/o訪問的各頁(如虛擬機(jī)作出的對虛擬盤的訪問)進(jìn)行高速緩存的高速緩存。在一個實(shí)施例中,通過使用第一頁替換算法替換高速緩存的第一邏輯部分中的頁來維護(hù)該第一邏輯部分,實(shí)現(xiàn)了采用多個頁替換算法的高速緩存。使用第二頁替換算法替換高速緩存的第二邏輯部分中的頁,該第二邏輯部分也得到維護(hù)。在要替換第一邏輯部分中的第一頁時,如果第一頁至少被訪問了要被認(rèn)為能高速緩存在第二邏輯部分中所需的最少次數(shù),則將該第一頁從高速緩存的第一邏輯部分移至第二邏輯部分。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個或多個處理器和系統(tǒng)存儲器等計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于承載或存儲計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。存儲計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是計(jì)算機(jī)存儲介質(zhì)(設(shè)備)。承載計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種顯著不同的計(jì)算機(jī)可讀介質(zhì):計(jì)算機(jī)存儲介質(zhì)(設(shè)備)和傳輸介質(zhì)。計(jì)算機(jī)存儲介質(zhì)(設(shè)備)包括RAM、ROM、EEPROM、CD-ROM、固態(tài)驅(qū)動器(SSD)(如基于RAM)、閃存、相變存儲器(PCM)、其他類型的存儲器、其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于存儲計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時,該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置并可由通用或?qū)S糜?jì)算機(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動傳輸?shù)接?jì)算機(jī)存儲介質(zhì)(設(shè)備)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈接接收到 的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲介質(zhì)(設(shè)備)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲介質(zhì)(設(shè)備)可被包括在還利用(甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。計(jì)算機(jī)可執(zhí)行指令例如包括,當(dāng)在處理器處執(zhí)行時使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個人計(jì)算機(jī)、臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動電話、PDA、平板、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)施。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。圖2示出了便于實(shí)現(xiàn)使用多個頁替換算法的高速緩存的示例計(jì)算機(jī)體系結(jié)構(gòu)200。參考圖2,計(jì)算機(jī)體系結(jié)構(gòu)200包括計(jì)算機(jī)系統(tǒng)201。計(jì)算機(jī)系統(tǒng)201可以通過諸如例如局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)以及甚至因特網(wǎng)等網(wǎng)絡(luò)被連接到其他計(jì)算機(jī)系統(tǒng)。因此,計(jì)算機(jī)系統(tǒng)201以及任何其他連接的計(jì)算機(jī)系統(tǒng)及其組件都可以創(chuàng)建消息相關(guān)數(shù)據(jù)并通過網(wǎng)絡(luò)交換消息相關(guān)數(shù)據(jù)(例如,網(wǎng)際協(xié)議(“IP”)數(shù)據(jù)報(bào)和利用IP數(shù)據(jù)報(bào)的其他更高層協(xié)議,如傳輸控制協(xié)議(“ TCP ”)、超文本傳輸協(xié)議(“HTTP ”)、簡單郵件傳輸協(xié)議(“ SMTP ”)
O計(jì)算機(jī)系統(tǒng)201包括存儲202或連接到存儲202。例如,存儲202可以是內(nèi)部硬盤驅(qū)動器或存儲陣列。存儲202可以儲存任何類型的數(shù)據(jù),包括操作系統(tǒng)文件、應(yīng)用文件、虛擬硬盤鏡像,等等。計(jì)算機(jī)系統(tǒng)201還包括高速緩存203。高速緩存203可以是用任何類型的快速訪問存儲介質(zhì)來實(shí)現(xiàn)的,但通常被實(shí)現(xiàn)在存儲器(例如,存儲器204)中。計(jì)算機(jī)系統(tǒng)201可以表示典型的臺式、膝上型、平板、或其他便攜式計(jì)算機(jī),在這些情況下,存儲202可以是內(nèi)部硬盤驅(qū)動器。計(jì)算機(jī)系統(tǒng)201還可以表示服務(wù)器集群的節(jié)點(diǎn),在這種情況下,存儲202可以是一個或多個其他節(jié)點(diǎn)被連接到的存儲陣列(例如,類似于圖1的存儲陣列102)。因而,本發(fā)明的高速緩存技術(shù)可以應(yīng)用于采用高速緩存的任何計(jì)算機(jī)環(huán)境內(nèi)。圖3A示出了根據(jù)第一實(shí)施例的、高速緩存203如何可在邏輯上被配置成使用多個頁替換算法。雖然圖3描繪了鄰近存儲器的兩個部分,但各頁被高速緩存的實(shí)際位置并不重要。換言之,圖3A只描繪了高速緩存的邏輯結(jié)構(gòu)。用于將各頁高速緩存在存儲器中的實(shí)際物理放置方案將取決于所使用的硬件的類型以及其他因素而變化。圖3A還示出了第一和第二部分是相同的大小,然而,在一些實(shí)施例中,各自的大小可以不同。圖3A中描繪的實(shí)施例采用了兩個頁替換算法。在第一邏輯級(301)上,使用LRU,并且在第二邏輯級(302)上,使用LRU2。第一邏輯級實(shí)現(xiàn)LRU (即,在一個頁是第一邏輯級中最久未使用的頁時,該頁被從第一邏輯級移除)。然而,在要替換第一邏輯級中的頁時,并非將該頁從高速緩存203中丟棄,而是首先檢查該頁以查看該頁的第二最近訪問何時發(fā)生?;谶@一第二最近訪問并根據(jù)LRU2算法,該頁可被置于高速緩存203的第二邏輯級中。否則,如果第一邏輯級中的該頁在所監(jiān)視的時間段期間尚未被訪問至少兩次,則該頁將被從高速緩存中丟棄。在圖3A中,頁的最近訪問被縮寫為MRA并且第二最近訪問被縮寫為2MRA。圖3A使用自一個訪問以來的持續(xù)時間(以秒為單位)來表示該訪問的發(fā)生,然而,同樣可以使用時間戳或標(biāo)識訪問何時發(fā)生的其他方式。同樣,標(biāo)識頁何時被訪問的信息可結(jié)合該頁來儲存(例如,作為元數(shù)據(jù))、與該頁分開儲存(例如,在集中式數(shù)據(jù)結(jié)構(gòu)中)、或以任何其他合適的方式來儲存。此外,另外的較不新近的訪問的發(fā)生也可被儲存(例如,在實(shí)現(xiàn)更高階的LRU(LRU3、LRU4等)時)。在其他實(shí)現(xiàn)中,可以采用鏈表,其中一個邏輯級中的頁在該列表內(nèi)基于每一頁被最后訪問的時間來排序。在這樣的實(shí)現(xiàn)中,鏈表中的最后的頁是最久未使用的頁。因此,在邏輯級內(nèi)實(shí)現(xiàn)每一頁替換算法的方式對本發(fā)明而言并非是必需的。如圖3A中所示,頁310被從盤訪問,并且待被高速緩存在高速緩存203中。對盤的訪問可以是讀或?qū)戫?10。注意,頁310還可來自高速緩存203的另一邏輯級,諸如,在請求該頁時它已經(jīng)被高速緩存在第二邏輯級的情況下。因?yàn)楦咚倬彺?03的第一邏輯級已充滿,所以必須丟棄來自第一邏輯級的頁來為頁310騰出空間。為了確定丟棄哪一頁,應(yīng)用LRU算法來丟棄最久未使用的頁。在圖3A中,最久未使用的頁是頁1,因?yàn)轫揑的MRA是11毫秒,這是第一邏輯級中的所有其他頁的MRA的最久值。并非從高速緩存203中丟棄頁1,而是首先將基于LRU2算法來確定頁I是否應(yīng)被高速緩存在高速緩存203的第二邏輯級中。這通過比較頁I的第二最近訪問(2MRA)與第二邏輯級中高速緩存的其他頁的2MRA來完成。如果頁I不包括2MRA(例如,如果頁I在所監(jiān)視的時間期間只被訪問了一次)或者如果它的2MRA是第二邏輯級中的其他頁的2MRA中的最久值,則它將被從高速緩存203中丟棄。否則,具有作為第二邏輯級中的其他頁的2MRA中的最久值的2MRA的頁將被丟棄來在第二邏輯級內(nèi)為頁I騰出空間。
如圖3A所示,頁16具有作為第二邏輯級中的頁的最久值的2MRA (2秒)。另外,頁I的2MRA比頁16的2MRA更新近(12毫秒)。因此,頁I將被高速緩存在第二邏輯級中并且頁16將被丟棄。圖3B示出了在對頁310進(jìn)行了高速緩存之后的高速緩存203。如圖所示,頁310出現(xiàn)在第一邏輯級,頁I已被移至第二邏輯級,并且頁16不再被高速緩存。作為另一示例,如果在對頁310進(jìn)行了高速緩存之后要高速緩存另一頁,則頁2會被從第一邏輯級移除,因?yàn)樗腗RA (10毫秒)是最久未使用的。因?yàn)轫?在所監(jiān)視的時間期間尚未被訪問兩次,所以它不具有2MRA。因此,頁2會被從高速緩存203丟棄,而非被移至第二邏輯級。如果頁2具有大于I秒的2MRA,則將發(fā)生類似結(jié)果,因?yàn)榈诙壿嫾壷械淖罹?MRA是I秒(頁11)。因此,在該示例中,LRU2算法會指示頁2將不被高速緩存在第二邏輯級中。注意,圖3A-3B只表示在邏輯上各頁如何被移至高速緩存203、在高速緩存203內(nèi)轉(zhuǎn)移、以及從高速緩存203移除。在一些實(shí)施例中,在將頁從一個邏輯級移至另一個時,該頁在物理上實(shí)際上將不會移動。換言之,該頁在物理上將保留在高速緩存中的相同位置,但將在邏輯上移至另一位置(例如,通過與表示第二邏輯級的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表)相關(guān)聯(lián)并從表示第一邏輯級的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表)中移除)。在這樣的實(shí)施例中,圖3A-3B的示例可通過將頁16從高速緩存203中丟棄、將頁310高速緩存在頁16曾被高速緩存過的位置、并相應(yīng)地更新任何數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)。在一些實(shí)施例中,可使用附加的邏輯級。例如,可在高速緩存203中實(shí)現(xiàn)采用LRU3算法(它使用第三最近訪問來確定頁替換)的第三邏輯級。在這樣的實(shí)施例中,從第二邏輯級丟棄的各頁可根據(jù)LRU3算法(假定這些頁被訪問了足夠次數(shù)(即,3次))被高速緩存在第三邏輯級。也可使用分別實(shí)現(xiàn)LRU4、LRU5的第四邏輯級、第五邏輯級等。在任何情況下,在將一個頁從一個級移除時,如果它被訪問了所需次數(shù)(例如,對于LRU2是兩次,對于LRU3是三次,對于LRU4是四次,等等),則它可被認(rèn)為能被高速緩存在下一級。在一些實(shí)施例中,在高速緩存203內(nèi)實(shí)現(xiàn)的邏輯級的數(shù)量可以是可配置的設(shè)置。圖4示出了用于實(shí)現(xiàn)采用多個頁替換算法的高速緩存的示例性方法400的流程圖。將參考圖2、3A和3B來描述方法400。方法400包括使用第一頁替換算法來替換高速緩存的第一邏輯部分中的頁以維護(hù)該第一邏輯部分的動作401。例如,存儲器204中實(shí)現(xiàn)的高速緩存203可包括實(shí)現(xiàn)了諸如LRU算法等第一頁替換算法的第一邏輯部分301。方法400包括使用第二頁替換算法來替換高速緩存的第二邏輯部分中的頁以維護(hù)該第二邏輯部分的動作402。例如,高速緩存203可包括實(shí)現(xiàn)了諸如LRU2算法等第二頁替換算法的第二邏輯部分302。方法400包括確定第一邏輯部分中的第一頁要被替換的動作403。例如,響應(yīng)于訪問來自盤的未經(jīng)高速緩存的頁310的請求,可以確定第一邏輯部分301中的頁I要從該第一邏輯部分中被丟棄來為頁310騰出空間??赏ㄟ^應(yīng)用LRU算法來確定頁I是第一邏輯部分301中的最久未使用的頁來將頁I標(biāo)識為要被替換。方法400包括確定第一頁至少已被訪問了要被認(rèn)為能高速緩存在第二邏輯部分中所需的最小次數(shù)的動作404。例如,可以確定頁I已被訪問了至少兩次,如在第二邏輯部分302中實(shí)現(xiàn)的LRU2算法所需的。方法400包括將第一頁從高速緩存的第一邏輯部分移至第二邏輯部分的動作405。例如,頁I可從第一邏輯部分301移至第二邏輯部分302。移動頁I可包括在物理上將頁310在高速緩存內(nèi)重新定位,或可包括在邏輯上移動頁I (如通過改變標(biāo)識高速緩存的特定部分中的頁的數(shù)據(jù)結(jié)構(gòu)內(nèi)的指針或其他數(shù)據(jù)值)。雖然主要使用LRU和LRU2算法作為第一和第二頁替換算法的示例來描述了方法410,但本發(fā)明延及在方法400中使用任何其他兩種(或更多種)頁替換算法。例如,可以使用LRU、LRU2、LRU3、LRU4等的任何組合。此外,可在任何計(jì)算機(jī)環(huán)境內(nèi)采用方法400以實(shí)現(xiàn)任何高速緩存。以下服務(wù)器集群環(huán)境的示例只是其中可以采用本發(fā)明的高速緩存技術(shù)的環(huán)境的類型的一個示例。圖5示出了其中可以使用采用多個頁替換算法的高速緩存的示例性服務(wù)器體系結(jié)構(gòu)500。圖5包括服務(wù)器501、502和503以及每一服務(wù)器連接到的存儲陣列504。服務(wù)器501-503中的每一個分別包括其中可實(shí)現(xiàn)高速緩存的存儲器501a-503a。在一些實(shí)施例中,服務(wù)器501、502和503中的每一個可以是集群的節(jié)點(diǎn)。例如,每一服務(wù)器可以主存多個虛擬機(jī),每一虛擬機(jī)是從存儲在存儲陣列504上的父虛擬硬盤部署的。因?yàn)槎鄠€(例如,100個)虛擬機(jī)可能在給定服務(wù)器上執(zhí)行,所以父虛擬硬盤(它儲存每一虛擬機(jī)的操作系統(tǒng)鏡像)可能被頻繁訪問。具體而言,虛擬機(jī)中的許多可能頻繁訪問虛擬硬盤的相同頁。如上所述,對虛擬硬盤的訪問可作為(并且通常是作為)無緩沖I/o來執(zhí)行的(意味著所訪問的頁未被進(jìn)行高速緩存)。在本發(fā)明中,對虛擬硬盤的這些訪問是經(jīng)由無緩沖I/o執(zhí)行的,然而,可以實(shí)現(xiàn)一高速緩存(與用于緩沖I/O的高速緩存分開)(在此稱為塊高速緩存(block cache))來對經(jīng)由無緩沖I/O訪問的各頁進(jìn)行高速緩存。在使用Windows操作系統(tǒng)的一個示例中,緩沖I/O被使用LRU算法高速緩存在操作系統(tǒng)高速緩存(即,文件高速緩存)中。本發(fā)明可以實(shí)現(xiàn)分開的高速緩存(塊高速緩存),以用于對經(jīng)由無緩沖I/o訪問的各頁(如虛擬機(jī)所訪問的虛擬硬盤(父或子)的各頁)進(jìn)行高速緩存。這些技術(shù)可同樣應(yīng)用于其他操作系統(tǒng)或高速緩存方案。換言之,根據(jù)本發(fā)明,對無緩沖I/o的高速緩存可以在任何環(huán)境/操作系統(tǒng)中執(zhí)行。如上所述,可以實(shí)現(xiàn)用于對經(jīng)由無緩沖I/O訪問的各頁進(jìn)行高速緩存的塊高速緩存以使用多個頁替換算法。在服務(wù)器集群示例中,實(shí)現(xiàn)多個頁替換算法提高了塊高速緩存的效率(即,虛擬硬盤的被最頻繁訪問的更大數(shù)量的頁被維護(hù)在高速緩存中)。以此方式,對存儲陣列504的每秒I/O (IOPS)的數(shù)量在集群中得到了減少,因?yàn)橐坏拇鎯﹃嚵?04訪問了一個頁,它將被高速緩存在該節(jié)點(diǎn)上的塊高速緩存中,使得訪問該頁的后續(xù)請求(無論是由同一虛擬機(jī)還是該節(jié)點(diǎn)上的另一虛擬機(jī))可通過訪問被高速緩存的頁而非訪問存儲陣列504上的頁來得到滿足。存儲陣列504可被通過網(wǎng)絡(luò)(或與高速緩存相比其他相對慢的連接)連接到服務(wù)器501-503。這可減少1/0,從而極大地改進(jìn)集群中虛擬機(jī)的性能。圖5示出了虛擬硬盤510被存儲在存儲陣列504上,且虛擬硬盤510的各部分(即,各頁)510a-510c被分別高速緩存在服務(wù)器501-503中的每一個上。例如,部分510a可表示虛擬硬盤510的已被高速緩存以供在服務(wù)器501上執(zhí)行的虛擬機(jī)訪問的各頁。盡管并未示出,但服務(wù)器501-503上的每一虛擬機(jī)的子虛擬盤也可被存儲在存儲陣列504上。與父虛擬盤的被高速緩存的各部分一起,這些子虛擬盤的各部分也可被高速緩存在對應(yīng)虛擬機(jī)在其上執(zhí)行的節(jié)點(diǎn)上。在本發(fā)明的各實(shí)施例中,各高速緩存可被同步。例如,因?yàn)榇鎯υ诖鎯﹃嚵?04上的數(shù)據(jù)的相同頁可被高速緩存在不同節(jié)點(diǎn)處,所以對各節(jié)點(diǎn)之間的高速緩存進(jìn)行同步是必要的。例如,如果一個頁被高速緩存在兩個或更多個節(jié)點(diǎn)上,并且被高速緩存的頁在這些節(jié)點(diǎn)之一上被更新,則其他節(jié)點(diǎn)上的高速緩存將需要被同步。高速緩存的同步可通過將對被高速緩存的頁的更新發(fā)送到其中對該同一頁進(jìn)行了高速緩存的節(jié)點(diǎn)來執(zhí)行,以使得這些更新被反映在該頁的每一高速緩存副本中。在其他實(shí)施例中,在所高速緩存的頁被更新時,這些更新可被寫到存儲陣列504中的虛擬盤,并且可以向該集群中的其他節(jié)點(diǎn)發(fā)送通知,以指示經(jīng)更新的所高速緩存的頁的任何副本應(yīng)被丟棄,從而使得對該頁的后續(xù)請求要通過從存儲陣列504訪問該頁來得到滿足。因此,本發(fā)明的技術(shù)可被用來實(shí)現(xiàn)用于對服務(wù)器集群環(huán)境中的無緩沖I/O進(jìn)行高速緩存的分布式高速緩存。這一同步可以按與在共同擁有的專利申請?zhí)?2/97132、題為“Volumes And FileSystem In Cluster Shared Volumes (集群共享卷中的卷和文件系統(tǒng))”中描述的類似方式來實(shí)現(xiàn),該申請描述了用于使用oplock來協(xié)調(diào)集群的不同節(jié)點(diǎn)上的高速緩存的各實(shí)施例。在那一申請中描述的技術(shù)適用于緩沖I/O內(nèi)容的高速緩存。類似技術(shù)可被應(yīng)用在本發(fā)明中以對無緩沖I/O內(nèi)容的高速緩存進(jìn)行同步。本發(fā)明可具體化為其他具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.一種用于實(shí)現(xiàn)采用多個頁替換算法的高速緩存的方法,所述方法包括: 使用第一頁替換算法來替換高速緩存的第一邏輯部分中的頁以維護(hù)所述第一邏輯部分; 使用第二頁替換算法來替換所述高速緩存的第二邏輯部分中的頁以維護(hù)所述第二邏輯部分; 確定所述第一邏輯部分中的第一頁要被替換; 確定所述第一頁至少已被訪問了要被認(rèn)為能高速緩存在所述第二邏輯部分中所需的最小次數(shù);以及 將所述第一頁從所述高速緩存的所述第一邏輯部分移至所述第二邏輯部分
2.如權(quán)利要求1所述的方法,其特征在于,所述第一頁替換算法是最久未使用(LRU)算法,并且所述第二頁替換算法是最久未使用2 (LRU2)算法。
3.如權(quán)利要求2所述的方法,其特征在于,確定所述第一邏輯部分中的所述第一頁要被替換包括確定新頁要被添加到所述高速緩存的所述第一邏輯部分并且確定所述第一頁是所述第一邏輯部分中的最久未使用的頁。
4.如權(quán)利要求2所述的方法,其特征在于,所述最小訪問次數(shù)是兩次,所述方法還包括: 在將所述第一頁從所述高速緩存的所述第一邏輯部分移至所述第二邏輯部分之前,確定所述第一頁的倒數(shù)第二次訪問比所述第二邏輯部分中的至少一個其他頁的倒數(shù)第二次訪問更加新近。
5.如權(quán)利要求4所述的方法,其特征在于,將所述第一頁從所述高速緩存的所述第一邏輯部分移至所述第二邏輯部分包括從所述第二邏輯部分中移除另一個頁,其中所述另一個頁的倒數(shù)第二次訪問是所述第二邏輯部分中所有其他頁中的最久的。
6.如權(quán)利要求1所述的方法,其特征在于,還包括: 維護(hù)所述高速緩存的一個或多個附加邏輯部分,其中所述高速緩存的所述一個或多個附加邏輯部分中的每一個附加邏輯部分使用與該附加邏輯部分之上的每一邏輯部分所不同的頁替換算法。
7.如權(quán)利要求6所述的方法,其特征在于,所述高速緩存的所述一個或多個附加邏輯部分包括使用最久未使用3 (LRU3)頁替換算法的第三邏輯部分。
8.如權(quán)利要求1所述的方法,其特征在于,所述高速緩存包括用于對由多個虛擬機(jī)訪問的一個或多個虛擬硬盤的部分進(jìn)行高速緩存的塊高速緩存。
9.如權(quán)利要求1所述的方法,其特征在于,維護(hù)所述高速緩存的第一和第二邏輯部分包括在經(jīng)由無緩沖I/o訪問頁時,對這些頁進(jìn)行高速緩存。
10.如權(quán)利要求8所述的方法,其特征在于,所述塊高速緩存是在集群的節(jié)點(diǎn)上維護(hù)的。
11.一種包括一個或多個存儲有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)存儲設(shè)備的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可執(zhí)行指令在被一個或多個處理器執(zhí)行時,執(zhí)行一種用于實(shí)現(xiàn)采用多個頁替換算法的高速緩存的方法,所述方法包括: 在邏輯上將高速緩存劃分成第一和第二邏輯部分; 在儲存在所述第一邏輯部分中的頁上實(shí)現(xiàn)最久未使用(LRU)頁替換算法;在儲存在所述第二邏輯部分中的頁上實(shí)現(xiàn)最久未使用2 (LRU2)頁替換算法; 其中如果根據(jù)所述LRU算法從所述第一邏輯部分移除的頁在所監(jiān)視的時間跨度期間已被訪問了至少兩次,則這些頁被移至所述第二邏輯部分。
12.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述高速緩存是用于對經(jīng)由無緩沖I/O訪問的頁進(jìn)行高速緩存的塊高速緩存。
13.如權(quán)利要求12所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,每一個頁是虛擬硬盤的頁。
14.如權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述虛擬硬盤是只讀父虛擬硬盤或子虛擬硬盤。
15.如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述高速緩存是在節(jié)點(diǎn)集群的一節(jié)點(diǎn)上維護(hù)的。
全文摘要
采用多個頁替換算法的高速緩存。本發(fā)明延及用于實(shí)現(xiàn)使用多個頁替換算法的高速緩存的方法、系統(tǒng)以及計(jì)算機(jī)程序產(chǎn)品。一示例性高速緩存可包括兩個邏輯部分,其中第一部分實(shí)現(xiàn)最久未使用(LRU)算法并且第二部分實(shí)現(xiàn)最久未使用2(LRU2)算法以執(zhí)行相應(yīng)部分中的頁替換。通過實(shí)現(xiàn)多個算法,可以實(shí)現(xiàn)更高效的高速緩存,其中最可能被再次訪問的各頁被保留在高速緩存中。多個頁替換算法可被用于任何高速緩存中,包括用于對經(jīng)由緩沖I/O訪問的各頁進(jìn)行高速緩存的操作系統(tǒng)高速緩存以及用于對經(jīng)由無緩沖I/O訪問的各頁(如虛擬機(jī)作出的對虛擬盤的訪問)進(jìn)行高速緩存的高速緩存。
文檔編號G06F12/12GK103218316SQ20131005641
公開日2013年7月24日 申請日期2013年2月21日 優(yōu)先權(quán)日2012年2月21日
發(fā)明者N·P·科斯特斯, A·達(dá)馬托, V·R·尚卡爾 申請人:微軟公司