背景技術(shù):
利用各種基于存儲器的技術(shù)來改善可以從文件系統(tǒng)訪問文件的速度。例如,使用存儲器映射來提供對文件的訪問允許一個(gè)應(yīng)用訪問文件的映射部分,就像它們是在主存儲器中一樣,這可以在訪問文件時(shí)——特別是當(dāng)該文件大小很大時(shí)——改善輸入/輸出(i/o)性能。
附圖說明
在以下參考附圖的詳細(xì)描述中描述了某些示例。
圖1和圖2圖示出了用于在文件的存儲器映射訪問期間使用持久存儲器進(jìn)行頁面高速緩存的示例頁面高速緩存系統(tǒng)。
圖3圖示出了包括示例頁面高速緩存系統(tǒng)的示例計(jì)算機(jī)系統(tǒng)。
圖4圖示出了包括示例頁面高速緩存系統(tǒng)的示例計(jì)算環(huán)境中的示例數(shù)據(jù)流。
圖5圖示出了用于在文件的存儲器映射訪問期間使用持久存儲器進(jìn)行頁面高速緩存的示例計(jì)算機(jī)系統(tǒng)。
圖6和圖7圖示出了由示例計(jì)算機(jī)系統(tǒng)執(zhí)行的示例方法,以在文件的存儲器映射訪問期間使用持久存儲器來促進(jìn)頁面高速緩存。
具體實(shí)施方式
雖然傳統(tǒng)的基于存儲器的技術(shù)的使用可以改善對文件系統(tǒng)上的文件的訪問,但它們也有其缺點(diǎn)。例如,利用非易失性存儲器(nvm)來改善文件的存儲器映射訪問的應(yīng)用通常需要修改應(yīng)用以同步或清空(flush)對nvm的寫入,或者需要應(yīng)用使用庫來這樣做。關(guān)于使用存儲器映射來訪問文件,各種數(shù)據(jù)儲存設(shè)備不允許直接存儲器映射,并且通過分配易失性存儲器(例如,動態(tài)隨機(jī)存取存儲器[dram])并將數(shù)據(jù)同步到非易失性數(shù)據(jù)存儲器(例如,硬盤驅(qū)動器或固態(tài)驅(qū)動器)來實(shí)現(xiàn)存儲器映射。使用易失性存儲器進(jìn)行頁面高速緩存通常導(dǎo)致頁面數(shù)據(jù)從易失性存儲器重復(fù)寫入到非易失性數(shù)據(jù)存儲器,這部分地是由于在易失性存儲器上缺少持久的數(shù)據(jù)(例如,當(dāng)不再對易失性存儲器供電時(shí),在其上頁面數(shù)據(jù)丟失)。
本文所描述的各種示例提供了在存儲在非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)上并從其訪問的文件的存儲器映射訪問期間使用持久存儲器用于進(jìn)行頁面高速緩存。根據(jù)一些示例,當(dāng)確定在從非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)訪問文件時(shí)文件已被存儲器映射時(shí),利用持久存儲器用于高速緩存在文件的存儲器映射訪問中所涉及的頁面。以這種方式,各種示例使用文件的存儲器映射作為觸發(fā)器,用于當(dāng)文件存儲在諸如基于硬盤驅(qū)動器的文件系統(tǒng)之類的非持久存儲器文件系統(tǒng)或諸如通過通信網(wǎng)絡(luò)訪問的文件系統(tǒng)(例如,持久或非持久存儲器文件系統(tǒng))之類的遠(yuǎn)程文件系統(tǒng)上并且從其訪問時(shí)選擇持久存儲器來對文件的一部分進(jìn)行頁面高速緩存。
在一些示例中,檢測來自非持久存儲器文件系統(tǒng)或具有非持久存儲器頁面高速緩存的遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問,確定用于對與存儲器映射訪問相關(guān)聯(lián)的頁面進(jìn)行高速緩存的持久存儲器的可用性,并且基于該可用性,將頁面高速緩存在該持久存儲器上。取決于示例,在其中頁面是新頁面,并且存儲器映射訪問包括高速緩存與存儲器映射訪問相關(guān)聯(lián)的新頁面的請求的情況下,可以響應(yīng)于該請求將該頁面高速緩存在持久存儲器上。因此,可以響應(yīng)于用于高速緩存與文件的存儲器映射訪問相關(guān)聯(lián)的新頁面的請求來確定持久存儲器的可用性。在頁面可以是高速緩存在非持久存儲器頁面高速緩存上的現(xiàn)有頁面并且存儲器映射訪問包括訪問與存儲器映射訪問相關(guān)聯(lián)的現(xiàn)有頁面的請求的情況下,可以響應(yīng)于頁面的訪問(例如,由應(yīng)用讀取或?qū)懭耄┒鴮⒃擁撁娓咚倬彺嬖诔志么鎯ζ魃?。在頁面是現(xiàn)有頁面的情況下,對頁面進(jìn)行高速緩存可以涉及將頁面從非持久存儲器頁面高速緩存遷移到持久存儲器。因此,可以響應(yīng)于非持久性頁面高速緩存上的現(xiàn)有頁面被訪問(例如,由應(yīng)用讀取或?qū)懭耄﹣泶_定持久存儲器的可用性。
對于一些示例,高速緩存在持久存儲器上的頁面從持久存儲器清空到非持久存儲器文件系統(tǒng)或從其訪問文件的遠(yuǎn)程文件系統(tǒng)。另外,對于一些示例,當(dāng)持久存儲器經(jīng)歷資源壓力(例如,缺少數(shù)據(jù)儲存空間)時(shí),當(dāng)文件的存儲器映射訪問被解除(例如,未映射)時(shí),當(dāng)文件關(guān)閉時(shí),或者當(dāng)(例如,由包括持久存儲器的計(jì)算機(jī)系統(tǒng))確定持久存儲器的其他使用將提供優(yōu)于將其用于頁面高速緩存的操作優(yōu)勢時(shí),可以清空持久存儲器上高速緩存的與文件的存儲器映射訪問相關(guān)聯(lián)的頁面。另外,對于一些示例,替代可基于易失性存儲器(例如,dram)的非持久存儲器頁面高速緩存或者除了其之外,可以利用持久存儲器用于頁面高速緩存。
與由傳統(tǒng)存儲器映射使用的基于易失性存儲器(例如,動態(tài)隨機(jī)存取存儲器[dram])的頁面高速緩存不同,持久存儲器是非易失性的,并且因此,高速緩存在持久存儲器上的頁面固有地獲得持久性,而避免、減少或至少延遲將高速緩存的頁面(例如,通過msync系統(tǒng)調(diào)用)寫入(例如,清空)回到非持久存儲器儲存設(shè)備(例如,硬盤驅(qū)動器或固態(tài)驅(qū)動器)或遠(yuǎn)程文件系統(tǒng)的需要。通過避免、減少或延遲將高速緩存的頁面寫入非持久存儲器儲存設(shè)備的需要,可以加速對文件的存儲器映射訪問并可以減少非持久存儲器設(shè)備或遠(yuǎn)程文件系統(tǒng)底層的儲存設(shè)備(例如,固態(tài)驅(qū)動器[ssd]))上的磨損。
如本文所使用的,持久存儲器可以包括持久存儲器設(shè)備,諸如相變存儲器(pcm)設(shè)備。如本文所使用的,非持久存儲器文件系統(tǒng)可以包括這樣的文件系統(tǒng):其使用諸如硬盤驅(qū)動器(hdd)、固態(tài)驅(qū)動器(ssd)或一些其他非易失性存儲器設(shè)備之類的非持久存儲器設(shè)備來實(shí)現(xiàn)并且能夠使用非持久存儲器頁面高速緩存來提供對存儲在其上的文件的存儲器映射訪問。如本文所使用的,文件的訪問可以包括從文件的一部分讀取數(shù)據(jù)或向文件的一部分寫入數(shù)據(jù)。
還如本文所使用的,遠(yuǎn)程文件系統(tǒng)可以是在通信網(wǎng)絡(luò)上并且通過維護(hù)遠(yuǎn)程文件系統(tǒng)的第二計(jì)算機(jī)系統(tǒng)而可由第一計(jì)算機(jī)系統(tǒng)訪問的文件系統(tǒng)。遠(yuǎn)程文件系統(tǒng)可以與可以是第二計(jì)算機(jī)系統(tǒng)本地的持久存儲器設(shè)備或非持久存儲器設(shè)備相關(guān)聯(lián)(例如,使用其來實(shí)現(xiàn))。對于各種示例,當(dāng)使用存儲器映射來訪問存儲在遠(yuǎn)程文件系統(tǒng)上的文件時(shí),第一計(jì)算機(jī)系統(tǒng)利用本文所描述的頁面高速緩存技術(shù)。
以下描述了在特定文件的示例生命周期的上下文中的示例頁面高速緩存系統(tǒng)。示例生命周期可以從存儲在非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)上的特定文件開始,并且(例如,由應(yīng)用)從非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)訪問(例如,打開)特定文件。非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)可以包括能夠使用非持久存儲器頁面高速緩存來提供對文件的存儲器映射訪問的文件系統(tǒng)。對于示例頁面高速緩存系統(tǒng),當(dāng)檢測到特定文件的存儲器映射訪問時(shí),頁面高速緩存系統(tǒng)確定用于對與存儲器映射訪問相關(guān)聯(lián)的頁面進(jìn)行高速緩存的持久存儲器的可用性(例如,在持久存儲器上用于頁面高速緩存的數(shù)據(jù)儲存空間的可用性),并且基于可用性,將頁面高速緩存在持久存儲器上。確定持久存儲器的可用性和頁面的高速緩存可以響應(yīng)于高速緩存與存儲器映射訪問相關(guān)聯(lián)地生成的新頁面的請求,或者響應(yīng)于在非持久存儲器頁面高速緩存上的現(xiàn)有頁面被訪問。
因此,在打開特定文件并且在與特定文件的存儲器映射訪問(例如,使用mmap系統(tǒng)調(diào)用)相關(guān)聯(lián)的新頁面需要高速緩存的時(shí)候,持久存儲器可用,則示例頁面高速緩存系統(tǒng)可以將新頁面高速緩存在持久存儲器上。在持久存儲器在那時(shí)不可用的情況下,示例頁面高速緩存系統(tǒng)可以將新頁面高速緩存在非持久存儲器頁面高速緩存上。在已經(jīng)將與特定文件的存儲器映射訪問相關(guān)聯(lián)的現(xiàn)有頁面高速緩存在非持久存儲器頁面高速緩存上之后持久存儲器變得可用的情況下,示例頁面高速緩存系統(tǒng)可以將現(xiàn)有頁面從非持久存儲器頁面高速緩存遷移到持久存儲器。可以在現(xiàn)有頁面的后續(xù)訪問(例如,由涉及非持久存儲器頁面高速緩存的先前的mmap請求所要求的訪問虛擬存儲區(qū)域)之后或之時(shí)將該現(xiàn)有頁面遷移到持久存儲器。將現(xiàn)有頁面從非持久存儲器頁面高速緩存遷移到持久存儲器可以涉及將頁面從非持久存儲器頁面高速緩存復(fù)制到持久存儲器,并且然后從非持久存儲器頁面高速緩存中移除該頁面。
在已經(jīng)將頁面高速緩存在持久存儲器上之后,可以通過與持久存儲器的直接存儲器映射來從持久存儲器訪問該頁面,其中存儲器地址可以直接映射到持久存儲器設(shè)備上的其中存儲該頁面的位置。這樣的直接映射可以允許(例如,應(yīng)用)使用處理器(例如,中央處理單元[cpu])的負(fù)載(例如,ld)和存儲(例如,st)機(jī)器碼指令來訪問頁面,并且也可以允許在不需要非持久存儲器頁面高速緩存(從而避免與其相關(guān)的缺點(diǎn))的情況下訪問頁面。
以下提供由圖1-圖7所圖示的示例的詳細(xì)描述。
圖1圖示出了用于在文件的存儲器映射訪問期間使用持久存儲器進(jìn)行頁面高速緩存的示例頁面高速緩存系統(tǒng)100。如所示,頁面高速緩存系統(tǒng)100包括存儲器映射訪問檢測模塊102、持久存儲器可用性模塊104和持久存儲器頁面高速緩存模塊106。取決于示例,頁面高速緩存系統(tǒng)100可以是諸如臺式機(jī)、筆記本電腦、手持計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理、智能手機(jī)、平板電腦等)、工作站、服務(wù)器或包括處理器的其他設(shè)備之類的計(jì)算機(jī)系統(tǒng)的一部分。在各種示例中,頁面高速緩存系統(tǒng)100中的組件或組件的布置可以不同于圖1中所描繪的。
如本文所使用的,各種示例的模塊和其他組件可以全部或部分地包括機(jī)器可讀指令或電子電路。例如,模塊可以包括可由處理器執(zhí)行以根據(jù)本文所描述的各種示例執(zhí)行一個(gè)或多個(gè)功能的計(jì)算機(jī)可讀指令。類似地,在另一種實(shí)例中,模塊可以包括根據(jù)本文所描述的各種示例執(zhí)行一個(gè)或多個(gè)功能的電子電路。模塊的元件可以組合在單個(gè)封裝中、保持在多個(gè)封裝中、或分開保持。
存儲器映射訪問檢測模塊102可以促進(jìn)由計(jì)算機(jī)系統(tǒng)檢測來自具有非持久存儲器頁面高速緩存的非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問。對于各種示例,非持久存儲器頁面高速緩存有助于非持久存儲器文件系統(tǒng)提供對存儲在其上的文件的存儲器映射訪問。計(jì)算機(jī)系統(tǒng)可以通過打開文件并建立該文件的存儲器映射訪問來啟動文件的存儲器映射訪問,這可以導(dǎo)致與存儲器映射訪問相關(guān)聯(lián)地分配新頁面。由存儲器映射訪問檢測模塊102檢測到的存儲器映射訪問可以包括:計(jì)算機(jī)系統(tǒng)建立文件的新的存儲器映射,或者計(jì)算機(jī)系統(tǒng)請求訪問存儲在非持久存儲器頁面高速緩存上并與現(xiàn)有(例如,先前建立的)存儲器映射相關(guān)聯(lián)的頁面的存儲器地址(例如,虛擬存儲器地址)。
持久存儲器可用性模塊104可以促進(jìn)確定在計(jì)算機(jī)系統(tǒng)上用于頁面高速緩存的持久存儲器的可用性。對于一些示例,在將與文件的存儲器映射訪問相關(guān)聯(lián)的頁面高速緩存在持久存儲器上之前,持久存儲器可用性模塊104確定持久存儲器的可用性。取決于該示例,持久存儲器可用性模塊104可以響應(yīng)于高速緩存與存儲器映射訪問相關(guān)聯(lián)的新頁面的請求或者響應(yīng)于訪問非持久存儲器頁面高速緩存上的與存儲器映射訪問相關(guān)聯(lián)的現(xiàn)有頁面來確定持久存儲器的可用性。
取決于該示例,用于高速緩存與存儲器映射訪問相關(guān)聯(lián)的頁面的持久存儲器的可用性可以基于計(jì)算機(jī)系統(tǒng)上是否存在持久存儲器。用于高速緩存與存儲器映射訪問相關(guān)聯(lián)的頁面的持久存儲器的可用性可以基于持久存儲器是否被啟用用于頁面高速緩存(例如,持久存儲器對于頁面高速緩存而言可以被禁用,但是對于長期文件儲存而言可以被啟用)。此外,用于高速緩存與存儲器映射訪問相關(guān)聯(lián)的頁面的持久存儲器的可用性可以基于持久存儲器是否具有可用數(shù)據(jù)儲存空間來高速緩存與文件的存儲器映射訪問相關(guān)聯(lián)的頁面。
持久存儲器頁面高速緩存模塊106可以促進(jìn)將與文件的存儲器映射訪問相關(guān)聯(lián)的頁面高速緩存在計(jì)算機(jī)系統(tǒng)的持久存儲器上。在頁面是新頁面并且存儲器映射訪問包括高速緩存與存儲器映射訪問相關(guān)聯(lián)的新頁面的請求的情況下,持久存儲器頁面高速緩存模塊106可以響應(yīng)于該請求而將頁面高速緩存在持久存儲器上。在頁面是現(xiàn)有頁面并且存儲器映射訪問包括訪問與存儲器映射訪問相關(guān)聯(lián)的現(xiàn)有頁面的情況下,持久存儲器頁面高速緩存模塊106可以響應(yīng)于現(xiàn)有頁面被(例如,被應(yīng)用)訪問而將頁面高速緩存在持久存儲器上。
對于一些示例,頁面可以構(gòu)成經(jīng)由存儲器映射訪問進(jìn)行訪問的文件的至少一部分——如果不是全部。在由計(jì)算機(jī)系統(tǒng)打開該文件的情況下,文件由計(jì)算機(jī)系統(tǒng)進(jìn)行存儲器映射,并且當(dāng)需要(例如,作為使用mmap系統(tǒng)調(diào)用的結(jié)果)與存儲器映射關(guān)聯(lián)地高速緩存新頁面時(shí),(例如,由持久存儲器可用性模塊104)確定持久存儲器為可用,持久存儲器頁面高速緩存模塊106可以使新頁面被高速緩存在持久存儲器上。在當(dāng)需要高速緩存新頁面時(shí)確定持久存儲器為不可用的情況下,持久存儲器頁面高速緩存模塊106可以使新頁面被高速緩存在計(jì)算機(jī)系統(tǒng)的非持久存儲器頁面高速緩存上。在已經(jīng)將現(xiàn)有頁面高速緩存在計(jì)算機(jī)系統(tǒng)的非持久存儲器頁面高速緩存上之后確定持久存儲器為可用的情況下,持久存儲器頁面高速緩存模塊106可以使現(xiàn)有頁面從非持久存儲器頁面高速緩存遷移到持久存儲器。持久存儲器頁面高速緩存模塊106可以在現(xiàn)有頁面(例如,由涉及非持久存儲器頁面高速緩存的先前的mmap請求所要求的訪問虛擬存儲器區(qū)域)的后續(xù)訪問之后或之時(shí)引起該遷移。如本文所描述的,將現(xiàn)有頁面從非持久存儲器頁面高速緩存遷移到持久存儲器可以涉及將頁面從非持久存儲器頁面高速緩存復(fù)制到持久存儲器,并且然后從非持久存儲器頁面高速緩存移除頁面。
圖2圖示出了用于在文件的存儲器映射訪問期間使用持久存儲器進(jìn)行頁面高速緩存的示例頁面高速緩存系統(tǒng)200。如所示,頁面高速緩存系統(tǒng)200包括存儲器映射訪問檢測模塊202、持久存儲器可用性模塊204、持久存儲器頁面高速緩存模塊206和持久存儲器頁面清空模塊208。取決于示例,頁面高速緩存系統(tǒng)200可以是諸如臺式機(jī)、筆記本電腦、手持計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理、智能手機(jī)、平板電腦等)、工作站、服務(wù)器或包括處理器的其他設(shè)備之類的計(jì)算機(jī)系統(tǒng)的一部分。在各種示例中,頁面高速緩存系統(tǒng)200中的組件或組件的布置可以不同于圖2中所描繪的。
存儲器映射訪問檢測模塊202、持久存儲器可用性模塊204和持久存儲器頁面高速緩存模塊206可以分別類似于上面關(guān)于圖1的頁面高速緩存系統(tǒng)100所描述的存儲器映射訪問檢測模塊102、持久存儲器可用性模塊104和持久存儲器頁面高速緩存模塊106。
持久存儲器頁面清空模塊208可以促進(jìn)將頁面從持久存儲器清空到非持久存儲器文件系統(tǒng),其中清空可以基于一組準(zhǔn)則。頁面可以是由持久性存儲器頁面高速緩存模塊206先前高速緩存在持久存儲器上的頁面。如本文所描述的,持久存儲器頁面高速緩存模塊206可以響應(yīng)于存儲器映射訪問檢測模塊202檢測到文件的存儲器映射訪問而已將頁面高速緩存在持久存儲器上,其中頁面與存儲器映射訪問相關(guān)聯(lián)。還如本文所描述的,持久存儲器頁面高速緩存模塊206可以基于由持久存儲器可用性模塊204確定的持久存儲器的可用性而已將頁面高速緩存在持久存儲器上。
取決于示例,用于清空頁面的該組準(zhǔn)則可以包括與存儲器映射訪問的條件有關(guān)的準(zhǔn)則,諸如存儲器映射訪問是否已經(jīng)被解除(例如,解映射)、存儲器映射訪問的使用頻率、或用于存儲器映射訪問的持久存儲器的數(shù)據(jù)儲存空間。例如,當(dāng)文件的存儲器映射訪問被解除時(shí),持久存儲器頁面清空模塊208可以使頁面從持久存儲器清空到非持久存儲器文件系統(tǒng),這可能在計(jì)算機(jī)系統(tǒng)顯式地執(zhí)行解映射系統(tǒng)調(diào)用時(shí)發(fā)生。該組準(zhǔn)則可以包括與計(jì)算機(jī)系統(tǒng)是否關(guān)閉與存儲器映射訪問相關(guān)聯(lián)的文件相關(guān)的準(zhǔn)則。例如,持久存儲器頁面清空模塊208可以在計(jì)算機(jī)系統(tǒng)關(guān)閉文件之時(shí)使頁面從持久存儲器清空到非持久存儲器文件系統(tǒng),其中可以由持久存儲器頁面清空模塊208來檢測此類關(guān)閉。另外,該組準(zhǔn)則可以包括與持久存儲器的條件相關(guān)的準(zhǔn)則。例如,當(dāng)(例如由持久存儲器可用性模塊204)確定持久存儲器的可用性受限或用盡時(shí),持久存儲器頁面清空模塊208可以使頁面從持久存儲器清空到非持久存儲器文件系統(tǒng)。在另一實(shí)例中,當(dāng)(例如由持久存儲器頁面清空模塊208)確定被頁面在持久存儲器上占用的數(shù)據(jù)儲存空間可以更好地用于計(jì)算機(jī)系統(tǒng)上的另一個(gè)用途時(shí),持久存儲器頁面清空模塊208可以使頁面從持久存儲器清空到非持久存儲器文件系統(tǒng)。持久存儲器的更好的利用可以包括持久存儲器的任何替代使用,其將提供超過使用它來專門高速緩存被清空的頁面——或者通常超過將其用于頁面高速緩存——的操作優(yōu)勢。替代利用的示例可以包括:文件(例如,與存儲器映射訪問相關(guān)聯(lián)的文件)的長期儲存、(例如,與存儲器映射訪問相關(guān)聯(lián)的)新頁面的高速緩存、當(dāng)前在非持久存儲器頁面高速緩存上的現(xiàn)有頁面的高速緩存、或與較高優(yōu)先級存儲器映射訪問相關(guān)聯(lián)的頁面的高速緩存。
圖3圖示出了包括頁面高速緩存系統(tǒng)100的示例計(jì)算機(jī)系統(tǒng)300。計(jì)算機(jī)系統(tǒng)300可以是具有處理器和存儲器的任何計(jì)算設(shè)備,諸如臺式機(jī)、筆記本電腦、手持計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理、智能手機(jī)、平板電腦等)、工作站、服務(wù)器或包括處理器的其他設(shè)備。如所示,計(jì)算機(jī)系統(tǒng)300包括應(yīng)用模塊302、持久存儲器模塊304、頁面高速緩存系統(tǒng)200、文件系統(tǒng)模塊306和通信模塊308。在各種示例中,在計(jì)算機(jī)系統(tǒng)300中的組件或組件的布置可以不同于圖3中所描繪的。
應(yīng)用模塊302表示在計(jì)算機(jī)系統(tǒng)300上可操作并且能夠訪問(例如,讀取、寫入或修改)存儲在文件系統(tǒng)上的文件的任何固件或軟件(例如,軟件應(yīng)用或操作系統(tǒng))。對于一些示例,當(dāng)應(yīng)用模塊302希望訪問文件時(shí),應(yīng)用模塊302打開來自文件系統(tǒng)的文件,并且一旦應(yīng)用模塊302已經(jīng)完成其對該文件的訪問,則最終可以關(guān)閉該文件。當(dāng)應(yīng)用模塊302訪問來自非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)的文件時(shí),可以使用由計(jì)算機(jī)系統(tǒng)300(未示出)所包括的非持久存儲器頁面高速緩存(例如,基于易失性存儲器)來對文件進(jìn)行存儲器映射。
持久存儲器模塊304可以包括用于存儲頁面的持久存儲器。頁面可以是由頁面高速緩存系統(tǒng)200高速緩存在持久存儲器上的新頁面,或者可以是由頁面高速緩存系統(tǒng)200從由計(jì)算機(jī)系統(tǒng)300所包括的非持久存儲器頁面高速緩存遷移到持久存儲器的新頁面。
文件系統(tǒng)模塊306可以向應(yīng)用模塊302提供對計(jì)算機(jī)系統(tǒng)300的本地非持久存儲器文件系統(tǒng)的訪問,或者提供對相對于計(jì)算機(jī)系統(tǒng)300遠(yuǎn)離的遠(yuǎn)程文件系統(tǒng)的訪問。計(jì)算機(jī)系統(tǒng)300的本地非持久存儲器文件系統(tǒng)可以包括這樣的文件系統(tǒng):其使用計(jì)算機(jī)系統(tǒng)300本地的非持久存儲器設(shè)備(例如,硬盤驅(qū)動器[hdd]或固態(tài)驅(qū)動器[ssd])來實(shí)現(xiàn),并且能夠使用計(jì)算機(jī)系統(tǒng)300的非持久存儲器頁面高速緩存來提供對存儲在其上的文件的存儲器映射訪問。遠(yuǎn)程文件系統(tǒng)可以是這樣的文件系統(tǒng):其由計(jì)算機(jī)系統(tǒng)300可以(例如,通過通信網(wǎng)絡(luò))與之通信的另一個(gè)計(jì)算機(jī)系統(tǒng)維護(hù),并且能夠使用計(jì)算機(jī)系統(tǒng)300的非持久存儲器頁面高速緩存來提供對存儲在其上的文件的存儲器映射訪問。遠(yuǎn)程文件系統(tǒng)的文件系統(tǒng)可以與由另一個(gè)計(jì)算機(jī)系統(tǒng)可訪問的非持久存儲器設(shè)備或持久存儲器設(shè)備相關(guān)聯(lián)。
頁面高速緩存系統(tǒng)200促進(jìn)了在計(jì)算機(jī)系統(tǒng)300上在本文所描述的各種操作。例如,頁面高速緩存系統(tǒng)200可以由應(yīng)用模塊302通過文件系統(tǒng)模塊306檢測來自計(jì)算機(jī)系統(tǒng)300的本地非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問。作為響應(yīng),頁面高速緩存系統(tǒng)200可以確定可通過持久存儲器模塊304訪問的計(jì)算機(jī)系統(tǒng)300的持久存儲器的可用性?;谠摯_定,頁面高速緩存系統(tǒng)200可以將與存儲器映射訪問相關(guān)聯(lián)的頁面高速緩存在計(jì)算機(jī)系統(tǒng)300的持久存儲器上。如本文所描述的,對頁面進(jìn)行高速緩存可以涉及在計(jì)算機(jī)系統(tǒng)300的持久存儲器上高速緩存與存儲器映射訪問相關(guān)聯(lián)的新頁面,或?qū)⒋嬖谟谟?jì)算機(jī)系統(tǒng)300的非持久存儲器頁面高速緩存上的頁面遷移到持久存儲器。最終,基于一組準(zhǔn)則,頁面高速緩存系統(tǒng)200可以將頁面從計(jì)算機(jī)系統(tǒng)300的持久存儲器清空到非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng),從其中可由計(jì)算機(jī)系統(tǒng)300訪問該文件。
對于一些示例,文件系統(tǒng)模塊306可以包括促進(jìn)頁面高速緩存系統(tǒng)200將頁面高速緩存在計(jì)算機(jī)系統(tǒng)300的持久存儲器上的虛擬文件系統(tǒng)模塊。虛擬文件系統(tǒng)可以向應(yīng)用模塊302提供具有單個(gè)文件命名空間但是(例如,基于)與相似類型(例如,兩個(gè)或多個(gè)非持久存儲器文件系統(tǒng))或不同類型(例如,非持久存儲器文件系統(tǒng)和持久存儲器文件系統(tǒng))的多個(gè)單獨(dú)文件系統(tǒng)相關(guān)聯(lián)的虛擬文件系統(tǒng)。
通信模塊308可以促進(jìn)計(jì)算機(jī)系統(tǒng)300通過允許數(shù)據(jù)通信的通信網(wǎng)絡(luò)與另一計(jì)算機(jī)系統(tǒng)的通信。通信網(wǎng)絡(luò)可以包括一個(gè)或多個(gè)本地或廣域通信網(wǎng)絡(luò),諸如互聯(lián)網(wǎng)、wifi網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)、專用網(wǎng)絡(luò)、公共網(wǎng)絡(luò)等。如本文所描述的,計(jì)算機(jī)系統(tǒng)300可以訪問由另一計(jì)算機(jī)系統(tǒng)維護(hù)的遠(yuǎn)程文件系統(tǒng),并且通信模塊308可以促進(jìn)計(jì)算機(jī)系統(tǒng)300與促進(jìn)訪問的另一計(jì)算機(jī)系統(tǒng)之間的網(wǎng)絡(luò)數(shù)據(jù)分組的交換。
圖4圖示出了包括頁面高速緩存系統(tǒng)200的示例計(jì)算環(huán)境400中的示例數(shù)據(jù)流。如所示,計(jì)算環(huán)境400包括應(yīng)用402、虛擬文件??系統(tǒng)模塊404、頁面高速緩存系統(tǒng)200、非持久存儲器頁面高速緩存406、文件系統(tǒng)408、非易失性存儲器設(shè)備410和持久存儲器412。根據(jù)一些示例,虛擬文件??系統(tǒng)模塊404至少基于與非易失性存儲器設(shè)備410相關(guān)聯(lián)的文件系統(tǒng)408而向應(yīng)用402提供具有單個(gè)文件命名空間的虛擬文件系統(tǒng)。非持久存儲器頁面高速緩存406可以支持應(yīng)用402對存儲在文件系統(tǒng)408上的文件的存儲器映射訪問。
在計(jì)算環(huán)境400中的操作期間,應(yīng)用402可以打開并訪問作為單個(gè)命名空間的一部分由虛擬文件系統(tǒng)模塊404提供并存儲在文件系統(tǒng)408上的給定文件。當(dāng)由應(yīng)用402通過虛擬文件系統(tǒng)模塊404訪問給定文件時(shí),給定文件可以是存儲器映射的。頁面高速緩存系統(tǒng)200可以檢測給定文件的存儲器映射訪問,并且作為響應(yīng),確定用于高速緩存與給定文件的存儲器映射訪問相關(guān)聯(lián)的頁面的持久存儲器412的可用性。在頁面高速緩存系統(tǒng)200確定持久存儲器412可用的情況下,頁面高速緩存系統(tǒng)200可以將頁面高速緩存在持久存儲器412上。在頁面高速緩存系統(tǒng)200確定持久存儲器412可用的情況下,頁面高速緩存系統(tǒng)200可以將頁面高速緩存在非持久存儲器頁面高速緩存406上。
如本文所描述的,在由頁面高速緩存系統(tǒng)200檢測到的存儲器映射訪問包括高速緩存與存儲器映射訪問相關(guān)聯(lián)的新頁面的請求的情況下,可以將新頁面高速緩存到持久存儲器412并且應(yīng)用402可以經(jīng)由到持久存儲器412的直接存儲器映射(如圖4中所圖示)從持久存儲器412訪問新頁面。在由頁面高速緩存系統(tǒng)200檢測到的存儲器映射訪問包括(例如,由應(yīng)用402)訪問非持久存儲器頁面高速緩存406上的現(xiàn)有頁面的請求的情況下,頁面高速緩存系統(tǒng)200可以將現(xiàn)有頁面高速緩存在持久存儲器412上,并且可以通過將現(xiàn)有頁面從非持久存儲器頁面高速緩存406遷移到持久存儲器412來這樣做(如圖4中所圖示)。在將現(xiàn)有頁面遷移到持久存儲器412之后,可以(例如,由應(yīng)用402)經(jīng)由到持久存儲器412的直接存儲器映射來訪問現(xiàn)有頁面。最終,基于本文所描述的一組準(zhǔn)則,頁面高速緩存系統(tǒng)200可以將持久存儲器412上高速緩存的頁面從持久存儲器412清空到文件系統(tǒng)408,從而使頁面被存儲在非易失性存儲器設(shè)備410上。
關(guān)于計(jì)算機(jī)系統(tǒng),非持久存儲器頁面高速緩存406和持久存儲器412可以是計(jì)算機(jī)系統(tǒng)本地的。對于一些示例,文件系統(tǒng)408是計(jì)算機(jī)系統(tǒng)的本地非持久存儲器文件系統(tǒng),并且與文件系統(tǒng)408相關(guān)聯(lián)的非易失性存儲器設(shè)備410也是計(jì)算機(jī)系統(tǒng)本地的。對于各種示例,文件系統(tǒng)408是由另一計(jì)算機(jī)系統(tǒng)維護(hù)的遠(yuǎn)程文件系統(tǒng),并且與文件系統(tǒng)408相關(guān)聯(lián)的非易失性存儲器設(shè)備410相對于計(jì)算機(jī)系統(tǒng)是遠(yuǎn)程的。
圖5圖示出了用于在文件的存儲器映射訪問期間使用持久存儲器進(jìn)行頁面高速緩存的示例計(jì)算機(jī)系統(tǒng)500。如所示,計(jì)算機(jī)系統(tǒng)500包括計(jì)算機(jī)可讀介質(zhì)502、處理器504、持久存儲器506和非持久存儲器508。在各種示例中,計(jì)算機(jī)系統(tǒng)500的組件或組件的布置可以不同于圖5中所描繪的。例如,計(jì)算機(jī)系統(tǒng)500可以包括與圖5中所描繪的那些相比更多或更少的組件。
計(jì)算機(jī)可讀介質(zhì)502可以是存儲可執(zhí)行指令的任何電、磁、光或其他物理儲存設(shè)備。例如,計(jì)算機(jī)可讀介質(zhì)502可以是隨機(jī)存取存儲器(ram)、電可擦除可編程只讀存儲器(eeprom)、儲存驅(qū)動器、光盤等。計(jì)算機(jī)可讀介質(zhì)502可以被編碼以存儲使處理器504根據(jù)本文所描述的各種示例執(zhí)行操作的可執(zhí)行指令。在各種示例中,計(jì)算機(jī)可讀介質(zhì)502是非暫時(shí)的。如圖5中所示,計(jì)算機(jī)可讀介質(zhì)502包括存儲器映射訪問檢測指令510和持久存儲器頁面高速緩存指令512。
處理器504可以是一個(gè)或多個(gè)中央處理單元(cpu)、微處理器或適于檢索和執(zhí)行存儲在計(jì)算機(jī)可讀介質(zhì)502中的一個(gè)或多個(gè)指令的其他硬件設(shè)備。處理器504可以取得、解碼并且執(zhí)行指令510和512以使得計(jì)算機(jī)系統(tǒng)500能夠根據(jù)本文所描述的各種示例來執(zhí)行操作。對于一些示例,處理器504包括一個(gè)或多個(gè)電子電路,其包括用于執(zhí)行一個(gè)或多個(gè)指令510和512的功能性的多個(gè)電子組件。
持久存儲器506可以包括諸如相變存儲器(pcm)設(shè)備之類的持久存儲器設(shè)備。在一些示例中,持久存儲器506可以支持計(jì)算機(jī)系統(tǒng)500處的本地持久存儲器文件系統(tǒng),可以將其作為虛擬文件系統(tǒng)的一部分提供給計(jì)算機(jī)系統(tǒng)500上的應(yīng)用。
非持久存儲器508可以包括諸如動態(tài)隨機(jī)存取存儲器(dram)之類的隨機(jī)存取存儲器設(shè)備,其可以用作計(jì)算機(jī)系統(tǒng)500上的非持久存儲器頁面高速緩存的基礎(chǔ)。如本文所描述的,基于非持久存儲器508,非持久存儲器頁面高速緩存可以支持來自由計(jì)算機(jī)系統(tǒng)500可訪問的文件系統(tǒng)(例如,非持久存儲器文件系統(tǒng)或遠(yuǎn)程文件系統(tǒng))的文件的存儲器映射訪問。
存儲器映射訪問檢測指令510可以使處理器504檢測來自具有非持久存儲器頁面高速緩存的遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問。如本文所描述的,遠(yuǎn)程文件系統(tǒng)可以是由與計(jì)算機(jī)系統(tǒng)500遠(yuǎn)離的計(jì)算機(jī)系統(tǒng)來維護(hù)的文件系統(tǒng),并且遠(yuǎn)程文件系統(tǒng)上的文件的存儲器映射訪問可以由非持久存儲器頁面高速緩存基于非持久存儲器508來支持。持久存儲器頁面高速緩存指令512可以使處理器504基于用于高速緩存與文件的存儲器映射訪問相關(guān)聯(lián)的頁面的持久存儲器506的可用性來將頁面高速緩存在持久存儲器506上。
圖6圖示出了由示例計(jì)算機(jī)系統(tǒng)執(zhí)行的示例方法600,以在文件的存儲器映射訪問期間使用持久存儲器來促進(jìn)頁面高速緩存。盡管下面參照圖1的頁面高速緩存系統(tǒng)100和計(jì)算機(jī)系統(tǒng)來描述方法600的執(zhí)行,但是由其他合適的系統(tǒng)或設(shè)備執(zhí)行方法600可以是可能的。方法600可以以電子電路形式和/或以存儲在機(jī)器可讀存儲介質(zhì)上的可執(zhí)行指令的形式來實(shí)現(xiàn)。
在圖6中,方法600開始于框602,存儲器映射訪問檢測模塊102由計(jì)算機(jī)系統(tǒng)檢測來自具有非持久存儲器頁面高速緩存的遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問。在框604處,方法600繼續(xù),持久存儲器頁面高速緩存模塊106基于用于頁面高速緩存的持久存儲器的可用性,在計(jì)算機(jī)系統(tǒng)的持久存儲器上高速緩存與文件的存儲器映射訪問相關(guān)聯(lián)的頁面。如本文所描述的,對于一些示例,計(jì)算機(jī)系統(tǒng)上的持久存儲器的可用性由持久存儲器可用性模塊104確定。
圖7圖示出了由示例計(jì)算機(jī)系統(tǒng)執(zhí)行的示例方法700,以在文件的存儲器映射訪問期間使用持久存儲器來促進(jìn)頁面高速緩存。盡管下面參照圖2的頁面高速緩存系統(tǒng)200和計(jì)算機(jī)系統(tǒng)來描述方法700的執(zhí)行,但是由其他合適的系統(tǒng)或設(shè)備執(zhí)行方法700可以是可能的。方法700可以以電子電路形式和/或以存儲在機(jī)器可讀存儲介質(zhì)上的可執(zhí)行指令的形式來實(shí)現(xiàn)。
在圖7中,方法700開始于框702,存儲器映射訪問檢測模塊202由計(jì)算機(jī)系統(tǒng)檢測來自具有非持久存儲器頁面高速緩存的遠(yuǎn)程文件系統(tǒng)的文件的存儲器映射訪問。在框704處,方法700繼續(xù),持久存儲器可用性模塊204確定用于頁面高速緩存的計(jì)算機(jī)系統(tǒng)的持久存儲器的可用性。在框706處,方法700繼續(xù),基于在框704處確定的可用性,持久存儲器頁面高速緩存模塊206在持久存儲器上高速緩存與文件的存儲器映射訪問相關(guān)聯(lián)的頁面。在框708處,方法700繼續(xù),持久存儲器頁面清空模塊208將與文件的存儲器映射訪問相關(guān)聯(lián)的頁面從持久存儲器清空到遠(yuǎn)程文件系統(tǒng)。
在前面的描述中,闡述了許多細(xì)節(jié)以提供對本文所公開的主題的理解。然而,可以在沒有這些細(xì)節(jié)中的一些或全部的情況下實(shí)踐各種示例。一些示例可以包括從上面討論的細(xì)節(jié)的修改和變型。旨在所附權(quán)利要求覆蓋這些修改和變型。