持久存儲器上的頁面高速緩存的製作方法
2023-09-11 23:18:35 1

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