背景技術(shù):
在計算系統(tǒng)中,文件系統(tǒng)用于控制數(shù)據(jù)如何被存儲和被取回。文件系統(tǒng)管理存儲介質(zhì)中的用戶數(shù)據(jù)。存在許多不同種類的文件系統(tǒng)(例如,磁盤文件系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng)和專用文件系統(tǒng))。每個文件系統(tǒng)可以具有不同的結(jié)構(gòu)和邏輯、速度性質(zhì)、靈活性、安全性、大小等。文件系統(tǒng)涉及各個方面(包括例如空間管理、維護(hù)完整性)。
大部分文件系統(tǒng)被設(shè)計用于個人計算機(jī)(pc)類系統(tǒng)。通常,存在針對pc類系統(tǒng)的兩個主要文件系統(tǒng)要求:可靠性和讀/寫吞吐量??煽啃砸员WC的一致性和耐用來性保持?jǐn)?shù)據(jù)安全??煽啃蕴貏e地涉及在不期望的系統(tǒng)崩潰(例如,電源故障)的情況下的數(shù)據(jù)損耗。讀/寫吞吐量涉及用戶應(yīng)用的輸入/輸出(i/o)響應(yīng)。
技術(shù)實現(xiàn)要素:
然而,非pc設(shè)備(包括但不限于便攜式或移動設(shè)備(諸如智能電話、平板計算機(jī)、便攜式數(shù)字助理(pda)等))和一些小型固定設(shè)備的當(dāng)前用戶經(jīng)歷由數(shù)據(jù)存儲裝置和底層傳統(tǒng)文件系統(tǒng)引起的應(yīng)用和高能損耗的非響應(yīng)性。這樣的非pc設(shè)備顯著地呈現(xiàn)由于某些基本上不同的限制和使用場景的文件系統(tǒng)的不同的挑戰(zhàn)。在一個方面中,這些設(shè)備通常具有由于電池供電的有限能量并且因此能量消耗應(yīng)當(dāng)是盡可能低的。在另一方面中,高響應(yīng)應(yīng)用交互的用戶體驗最大程度上驅(qū)動移動生態(tài)系統(tǒng)中的應(yīng)用的成功。因此,適于這樣的設(shè)備的文件系統(tǒng)的能量高效并且高響應(yīng)可以是期望的。
在此所描述的主題的實施例通常涉及具有自適應(yīng)地存儲到、寫到或沖刷(flush)到針對電子設(shè)備的存儲裝置的能力的文件系統(tǒng)。通常地,要被寫入的數(shù)據(jù)將被存儲在存儲器內(nèi)的緩沖區(qū)中,而不是直接被寫到持久存儲。沖刷操作包括通過將當(dāng)前駐留在緩沖區(qū)中的數(shù)據(jù)寫或存儲到持久存儲裝置并且清理與寫數(shù)據(jù)相關(guān)聯(lián)的緩沖區(qū)來沖刷緩沖區(qū)。為了實現(xiàn)能量效率或高響應(yīng),可以采取以下方式:減少要被沖刷到持久存儲裝置的數(shù)據(jù)量,這是因為要被沖刷的數(shù)據(jù)量是確定寫能量效率的主導(dǎo)因素;和/或減少存儲i/o完成上的應(yīng)用等待時間,換句話說,應(yīng)用的用戶必須等待直到應(yīng)用變?yōu)轫憫?yīng)的時間量。為了實現(xiàn)那個目的,可以采用設(shè)備隨機(jī)存取存儲器(ram)上的大規(guī)模和長實況高速緩存,以便減少需要被沖刷到持久存儲裝置的數(shù)據(jù)量并且減少存儲i/o完成的應(yīng)用等待時間。
將存儲器內(nèi)寫高速緩存沖刷到存儲裝置的文件系統(tǒng)的策略可以是應(yīng)用可知的和/或自適應(yīng)的。策略可以至少部分地基于以下各項中的一項或多項:應(yīng)用的訪問特性、與電子設(shè)備的用戶交互的狀態(tài)、和電子設(shè)備的狀態(tài)。更特別地,可以根據(jù)應(yīng)用的訪問特性確定準(zhǔn)備沖刷的高速緩存的寫請求序列的塊。另外,可以靈活地選擇沖刷定時,使得沖刷不影響設(shè)備能量消耗和應(yīng)用響應(yīng)。例如,當(dāng)電子設(shè)備空閑時的狀態(tài)可以是執(zhí)行沖刷的適當(dāng)?shù)臅r間,這是因為其可以導(dǎo)致對應(yīng)用響應(yīng)的較少的影響。
應(yīng)注意到,提供該概述以簡化形式引入概念的選擇。下面在詳細(xì)描述中進(jìn)一步描述了概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或基本特征,其也不旨在被用于限制所要求保護(hù)的主題的范圍。
優(yōu)點(diǎn)可以從當(dāng)結(jié)合附圖取得時的以下詳細(xì)描述變得明顯。
附圖說明
本公開以示例而非以限制的方式圖示在附圖中,其中相同參考數(shù)字指示相同元件,并且其中:
圖1圖示了在其中可以實現(xiàn)在此所描述的主題的實施例的計算環(huán)境的塊圖;
圖2圖示了示出用于實現(xiàn)文件系統(tǒng)中的沖刷的示例部件的示意性塊圖;
圖3圖示了示出能量改進(jìn)潛在性比如何隨著數(shù)據(jù)陳舊度增加而變化的若干應(yīng)用的能量改進(jìn)潛在性曲線;
圖4圖示了根據(jù)在此所描述的主題的實施例的用于沖刷用于電子設(shè)備的文件系統(tǒng)中的數(shù)據(jù)的方法的流程圖;
圖5圖示了在寫出現(xiàn)時如何將數(shù)據(jù)緩沖在存儲器中的示例性流程圖;
圖6圖示了示出沖刷器可以如何根據(jù)如本文所公開的沖刷策略操作的示例性流程圖;
圖7圖示了用于預(yù)測適于沖刷的間隔的簡單狀態(tài)機(jī)模型;以及
圖8示出了示例性基于優(yōu)先級的調(diào)度機(jī)制。
具體實施方式
現(xiàn)在將參考若干示例實施例討論在此所描述的主題。應(yīng)當(dāng)理解,僅出于使得本領(lǐng)域的技術(shù)人員能夠更好地理解并且因此實現(xiàn)在此所描述的主題,討論了這些實施例,而不是提出對主題的范圍的任何限制。
如本文所使用的,術(shù)語“包括”和其變型將被讀作意味著“包括但不限于”的開放式術(shù)語。除非上下文以其他方式清楚地指示,否則術(shù)語“或”將被讀作“和/或”。術(shù)語“基于”將被讀作“至少部分地基于”。術(shù)語“一個實施例”和“,實施例”將被讀作“至少一個實施例”。術(shù)語“另一實施例”將被讀作“至少一個其他實施例”。下面可以包括明確和隱含的其他定義。
圖1圖示了在其中實現(xiàn)所描述的主題的一個或多個實施例的計算環(huán)境100的示例。計算環(huán)境100不旨在提出關(guān)于在此所描述的主題的使用或功能性的范圍的任何限制,這是因為各種實施例可以實現(xiàn)在不同的通用或?qū)S糜嬎悱h(huán)境中。
參考圖1,計算環(huán)境100包括至少一個處理單元(或處理器)110和存儲器120。處理單元110執(zhí)行計算機(jī)可執(zhí)行指令并且可以是現(xiàn)實或虛擬處理器。在多處理系統(tǒng)中,多個處理單元執(zhí)行計算機(jī)可執(zhí)行指令以增加處理能力。存儲器120可以是易失性存儲器(例如,寄存器、高速緩存、ram)、非易失性存儲器(例如,rom、eeprom、閃速存儲器)或兩者的某種組合。存儲器120存儲用于在文件系統(tǒng)中的沖刷的沖刷模塊170的指令的至少一部分。
計算環(huán)境100可以具有附加部件或特征。在圖1中所示的示例中,計算環(huán)境100包括存儲裝置130、一個或多個輸入設(shè)備140、一個或多個輸出設(shè)備150和一個或多個通信連接160?;ミB機(jī)構(gòu)(未示出)(諸如總線、控制器或網(wǎng)絡(luò))將計算環(huán)境100的部件相互連接。通常,操作系統(tǒng)軟件(未示出)提供針對在計算環(huán)境100中執(zhí)行的其他軟件的操作環(huán)境,并且協(xié)調(diào)計算環(huán)境100的部件的活動。
存儲裝置130可以是可移除或不可移除的,并且可以包括計算機(jī)可讀存儲介質(zhì),諸如閃速驅(qū)動器、磁盤、磁帶或卡式磁帶、cd-rom、cd-rw、dvd或可以被用于存儲信息并且可以在計算環(huán)境100內(nèi)訪問的任何其他介質(zhì)。存儲裝置130可以存儲針對沖刷模塊170的指令的至少一部分。
應(yīng)當(dāng)注意,沖刷模塊170可以采取完全硬件實施方式的形式、完全軟件實施方式(包括固件、常駐軟件、微代碼等)或組合可以全部一般地在本文中被稱為“模塊”或“機(jī)制”的軟件和硬件方面的實施方式的形式。此外,沖刷模塊170的各方面可以采取實現(xiàn)在具有實現(xiàn)在其上的計算機(jī)可讀程序指令的一個或多個計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品的形式。針對沖刷模塊170的指令可以完全地包含在存儲器120中、完全在存儲裝置130中或部分在與存儲器裝置130通信的存儲器120中并且部分在存儲裝置130中。
(一個或多個)輸入設(shè)備140可以是各種不同的輸入設(shè)備中的一個或多個。例如,(一個或多個)輸入設(shè)備140可以包括用戶設(shè)備(諸如鼠標(biāo)、鍵盤、軌跡球等)。(一個或多個)輸入設(shè)備140可以實現(xiàn)一個或多個自然用戶接口技術(shù)(諸如語音識別、觸摸和觸筆識別、與(一個或多個)輸入設(shè)備140接觸并且在(一個或多個)輸入設(shè)備140附近的手勢的識別)、空氣手勢的識別、頭眼跟蹤、聲音和語音識別、感測用戶大腦活動和機(jī)器智能。作為其他示例,(一個或多個)輸入設(shè)備140可以包括掃描設(shè)備;網(wǎng)絡(luò)適配器;cd/dvd閱讀器;或?qū)⑤斎胩峁┙o計算環(huán)境100的另一設(shè)備。(一個或多個)輸出設(shè)備150可以是顯示器、打印機(jī)、揚(yáng)聲器、cd/dvd刻錄機(jī)、網(wǎng)絡(luò)適配器或提供來自計算環(huán)境100的輸出的另一設(shè)備。(一個或多個)輸入設(shè)備140和(一個或多個)輸出設(shè)備150可以被包含在單個系統(tǒng)或設(shè)備(諸如觸摸屏、虛擬現(xiàn)實系統(tǒng)、包括頭戴式設(shè)備的可穿戴計算設(shè)備)。
(一個或多個)通信連接160使能通過通信介質(zhì)到另一計算實體的通信。此外,計算環(huán)境100的部件的功能可以被實現(xiàn)在能夠通過通信連接通信的單個計算機(jī)器或多個計算機(jī)器中。因此,計算環(huán)境100可以使用對一個或多個遠(yuǎn)程計算設(shè)備(諸如手持式計算設(shè)備、個人計算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)pc、對等設(shè)備或另一共同網(wǎng)絡(luò)節(jié)點(diǎn))的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。通信介質(zhì)在經(jīng)調(diào)制的數(shù)據(jù)信號中傳達(dá)諸如數(shù)據(jù)或計算機(jī)可執(zhí)行指令或請求的信息。經(jīng)調(diào)制的數(shù)據(jù)信號是具有以關(guān)于將信息編碼在信號中的這樣的方式設(shè)定或改變的其特性的一個或多個的信號。以示例而非限制的方式,通信介質(zhì)包括利用電、光、rf、紅外、聲音或其他載體實現(xiàn)的有線或無線技術(shù)。
可以在可以是存儲介質(zhì)或通信介質(zhì)的計算機(jī)可讀介質(zhì)的一般上下文中描述主題的實施例。計算機(jī)可讀存儲介質(zhì)是可以在計算環(huán)境中訪問的任何可用的存儲介質(zhì),但是術(shù)語計算機(jī)可讀存儲介質(zhì)不指代暫態(tài)傳播信號自身或其他信號自身。以示例而非限制的方式,利用計算環(huán)境100,計算機(jī)可讀存儲介質(zhì)包括存儲器120、存儲裝置130和其組合。
可以在被執(zhí)行在目標(biāo)現(xiàn)實或虛擬處理器上的計算環(huán)境中的計算機(jī)可執(zhí)行指令(諸如包括在程序模塊中的那些計算機(jī)可執(zhí)行指令)的一般上下文中描述主題的實施例。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、庫、對象、類、組件、數(shù)據(jù)結(jié)構(gòu)等。程序模塊的功能可以在如在各種實施例中期望的程序模塊之間被組合或被分割??梢栽诒镜鼗蚍植际接嬎悱h(huán)境中執(zhí)行用于程序模塊的計算機(jī)可執(zhí)行指令。在分布式計算環(huán)境中,程序模塊可以定位在本地計算機(jī)存儲介質(zhì)和遠(yuǎn)程計算機(jī)存儲介質(zhì)二者中。
雖然本文所公開的沖刷機(jī)制對于包括但不限于智能電話的便攜式設(shè)備或移動設(shè)備而言可以是有益的,但是本領(lǐng)域的技術(shù)人員可以理解,還可以在其他非移動設(shè)備(諸如pc)中實現(xiàn)沖刷機(jī)制。因此,上文所描述的計算環(huán)境100可以被實現(xiàn)在各種計算設(shè)備中,包括但不限于移動或便攜式設(shè)備(諸如智能電話、平板計算機(jī)、便攜式數(shù)字助理(pda)、包括頭戴式設(shè)備的可穿戴計算設(shè)備等)和非移動設(shè)備(諸如臺式電腦和服務(wù)器)或一些小型固定設(shè)備。出于說明性和簡化目的,其在下文中在電子設(shè)備(諸如智能電話)的上下文中進(jìn)行描述。
在以下描述中,在此使用的“數(shù)據(jù)一致性”指代在系統(tǒng)崩潰的存在的情況下維護(hù)數(shù)據(jù)版本的方面。更特別地,使用時間點(diǎn)一致性,其意味著持久存儲裝置中的數(shù)據(jù)總是對應(yīng)于寫歷史或?qū)懜咚倬彺嬷械臅r間點(diǎn)處的數(shù)據(jù),使得在時間之前的任何寫已經(jīng)到達(dá)存儲裝置并且其之后的任何寫未到達(dá)存儲裝置。如本文使用的“數(shù)據(jù)陳舊度”意味著當(dāng)前存儲器內(nèi)數(shù)據(jù)與存儲中的持久數(shù)據(jù)之間的距離。直觀地,數(shù)據(jù)陳舊度是其多久返回以在系統(tǒng)崩潰之后恢復(fù)。換句話說,數(shù)據(jù)陳舊度是當(dāng)前存儲器數(shù)據(jù)與持久存儲裝置中的持久數(shù)據(jù)之間的距離??梢酝ㄟ^許多度量(諸如時間或版本)測量數(shù)據(jù)陳舊度。在該上下文中,通過尚未沖刷到持久存儲裝置的總數(shù)據(jù)量來測量數(shù)據(jù)陳舊度?!皵?shù)據(jù)耐用性”是保證所提交的數(shù)據(jù)將持久地存在的特性??梢酝ㄟ^沖刷存儲器對非易失性或持久存儲裝置中的數(shù)據(jù)實現(xiàn)耐用性。本文所使用的“事務(wù)”指代一個或多個個體操作的集合。
如先前所提到的,傳統(tǒng)的文件系統(tǒng)使用兩種方式限制數(shù)據(jù)陳舊度并且在改進(jìn)i/o性能時保證一致性。首先,在小的固定時間間隔之后,將臟(dirty)比特或尚未已經(jīng)寫到持久存儲器的比特從存儲器寫到持久存儲裝置。日志文件系統(tǒng)是一種磁盤文件系統(tǒng),其跟蹤在將他們提交給持久存儲裝置之前在日志中將做出的改變。為了限制數(shù)據(jù)陳舊度和維護(hù)一致性,規(guī)則日志文件系統(tǒng)周期性地將存儲器內(nèi)寫高速緩存沖刷到持久存儲裝置或?qū)嵤┽槍γ總€文件同步(sync)的沖刷。在系統(tǒng)崩潰或電源故障的事件中,這樣的文件系統(tǒng)迅速地返回在線并且不太可能變?yōu)閾p壞。例如,默認(rèn)linuxext4每隔5秒進(jìn)行沖刷(即,用戶在系統(tǒng)崩潰之后丟失至多5秒的歷史)。第二,文件同步(表示為“fsync”)接口提供保證一致性的方式。寫操作在不影響持久存儲裝置中的主數(shù)據(jù)庫文件的情況下首先被輸出到分離的日志,然后在日志上調(diào)用fsync。最后,日志改變被轉(zhuǎn)換為主數(shù)據(jù)庫文件。
然而,傳統(tǒng)文件系統(tǒng)和文件同步中的周期性沖刷對應(yīng)用響應(yīng)和能量效率產(chǎn)生重要的影響。當(dāng)發(fā)出fsync時,設(shè)備中的應(yīng)用必須等待直到所有數(shù)據(jù)被寫到存儲裝置。頻繁沖刷(其中的每個沖刷可以引起重要的cpu利用)可以延遲系統(tǒng)并且基本上直接或間接地影響設(shè)備的能量消耗。
在此所描述的技術(shù)的各方面一般地涉及具有針對電子設(shè)備的自適應(yīng)沖刷的文件系統(tǒng)。為了實現(xiàn)能量效率或高響應(yīng),可以采取以下方式:減小要被沖刷到持久存儲的數(shù)據(jù)量;和/或減小存儲i/o完成上的應(yīng)用等待時間。
據(jù)發(fā)現(xiàn),寫操作比讀操作消耗更多能量,同時要被沖刷的數(shù)據(jù)量是確定寫能量效率的主導(dǎo)因素。如果一些數(shù)據(jù)保持在存儲器中并且重寫超過一次,則重寫數(shù)據(jù)不需要被沖刷,其導(dǎo)致能量節(jié)省。研究顯示不同的應(yīng)用具有極大地不同的數(shù)據(jù)讀/寫訪問類型。例如,一個應(yīng)用可能頻繁地寫到存儲器中的相同地址,同時另一應(yīng)用可以總是將不同的地址寫在存儲器中。這樣的不同的數(shù)據(jù)讀/寫訪問模式可以指示不同的能量效率改進(jìn)潛在性。換句話說,基于應(yīng)用的特定寫模式,可以確定準(zhǔn)備沖刷的高速緩存的寫請求序列塊。以上文所描述的應(yīng)用為例。對于將數(shù)據(jù)頻繁地寫到存儲器中的相同地址的應(yīng)用而言,與在長周期期間發(fā)生的該應(yīng)用相關(guān)聯(lián)的寫請求序列可以被確定為準(zhǔn)備沖刷的高速緩存的寫請求序列的塊。在長周期期間,與寫請求序列有關(guān)的寫數(shù)據(jù)可以保持在存儲器中,并且頻繁地重寫由寫請求序列頻繁地尋址的地點(diǎn)中的數(shù)據(jù)。因此,可以盡可能地降低要被沖刷的數(shù)據(jù)??梢酝ㄟ^隨時間變化的該應(yīng)用的寫模式確定長周期的長度。相比之下,對于總是將不同的地址寫在存儲器中的應(yīng)用而言,與在任何短周期期間發(fā)生的該應(yīng)用相關(guān)聯(lián)的寫請求序列可以被確定為準(zhǔn)備沖刷的高速緩存的寫請求序列塊,這是因為存在如由該應(yīng)用的寫模式所指示的很少重寫并且其具有很少空間來降低待沖刷的數(shù)據(jù)。這樣,基于不同的應(yīng)用訪問特性降低待沖刷的數(shù)據(jù)量并且從而實現(xiàn)能量效率是可能的。在該方面,沖刷機(jī)制具有應(yīng)用適應(yīng)性。稍后將描述用于基于應(yīng)用的特定寫類型確定準(zhǔn)備沖刷的高速緩存寫請求序列塊的細(xì)節(jié),例如,參考圖3和圖4中的步驟430。
此外,可以應(yīng)用許多適當(dāng)?shù)臋C(jī)制以便保證一致性。例如,可以在寫高速緩存中應(yīng)用事務(wù)處理。事務(wù)處理鏈接單個不可分的事務(wù)中的多個個體操作并且確保事務(wù)中的所有操作在沒有誤差的情況下完成或其都沒有完成。如果操作中的一些操作完成但是誤差在嘗試其他時發(fā)生,事務(wù)處理系統(tǒng)“回滾”事務(wù)的所有操作(包括成功操作),從而擦除事務(wù)的所有跡線并且將系統(tǒng)恢復(fù)到在事務(wù)的處理開始之前的一致的已知狀態(tài)。如果事務(wù)的所有操作成功地完成,則事務(wù)由系統(tǒng)提交,并且使對數(shù)據(jù)文件的所有改變變得持久;一旦這被完成,則事務(wù)不能回滾。
事務(wù)處理機(jī)制可以與上文所描述的應(yīng)用可知的機(jī)制組合以便提供數(shù)據(jù)一致性和能量效率兩者。在一些實施方式中,將操作(諸如高速緩存的寫請求序列)分為事務(wù)可以是應(yīng)用可知的(即,取決于應(yīng)用的數(shù)據(jù)讀/寫訪問模式)。
在另一方面中,可以靈活地選擇沖刷定時,使得沖刷不影響設(shè)備能量消耗和應(yīng)用響應(yīng)。通常,當(dāng)電子設(shè)備空閑時,其是進(jìn)行對應(yīng)用響應(yīng)產(chǎn)生較少影響的沖刷的適當(dāng)?shù)亩〞r。
可以設(shè)備隨機(jī)存取存儲器(ram)上的采用大規(guī)模和長實況高速緩存,以便減少需要被沖刷到持久存儲裝置的數(shù)據(jù)量并且減少存儲i/o完成的應(yīng)用等待時間。在一些實例中,出于以下原因,寫性能和能量效率有利于數(shù)據(jù)耐用性和數(shù)據(jù)陳舊度可以是優(yōu)選的。第一,關(guān)于現(xiàn)代容量的隨機(jī)存取存儲器(ram)已經(jīng)顯著地生長。例如,2gb是現(xiàn)今標(biāo)準(zhǔn)。第二,現(xiàn)代智能電話具有電池電源。這種支持電池的ram(bbram)被認(rèn)為在正常pc或服務(wù)器設(shè)置中是可靠的。第三,大多數(shù)應(yīng)用數(shù)據(jù)甚至在損耗之后是可取回的。如果例如電子郵件丟失,則其可以簡單地從服務(wù)器重新加載;并且對于其他流行應(yīng)用(諸如社交網(wǎng)絡(luò)應(yīng)用、數(shù)字地圖等)同樣如此。因此,甚至在存儲器損耗的最壞情況下,數(shù)據(jù)可以簡單地從遠(yuǎn)程服務(wù)器重新加載。因此,考慮到用于改進(jìn)能量效率和響應(yīng)的所得潛在性可以是實質(zhì)的,折中針對性能的數(shù)據(jù)耐用性(即,冒在某種程度上增加數(shù)據(jù)陳舊度的風(fēng)險)可以是可行并且有益的。
通常,與傳統(tǒng)的文件系統(tǒng)相比較,根據(jù)本公開的一些方面的文件系統(tǒng)釋放來自靜態(tài)小間隔或文件同步的沖刷、將更長得保持存儲器中的數(shù)據(jù),并且其用于將存儲器內(nèi)寫高速緩存沖刷到存儲裝置的策略是應(yīng)用可知和自適應(yīng)的。策略可以至少部分地基于以下各項中的一項或多項:應(yīng)用的訪問特性、與電子設(shè)備的用戶交互的狀態(tài)和電子設(shè)備的狀態(tài)。更特別地,可以根據(jù)應(yīng)用的訪問特性確定準(zhǔn)備沖刷的高速緩存的數(shù)據(jù)的什么部分(即,準(zhǔn)備被沖刷的高速緩存的寫請求序列塊)。另外,可以至少部分地基于與電子設(shè)備的應(yīng)用或與電子設(shè)備的用戶輸入交互,靈活地選擇指示何時執(zhí)行沖刷的沖刷定時。進(jìn)一步地,可以采用用于調(diào)度準(zhǔn)備被沖刷的數(shù)據(jù)單元的多優(yōu)先級調(diào)度機(jī)制,其確保應(yīng)用中間的公平性并且進(jìn)一步改進(jìn)沖刷性能。
圖2圖示了示出用于實現(xiàn)文件系統(tǒng)中的沖刷的示例部件的示意性塊圖。如在此所公開的沖刷機(jī)制可以被包含有任何適當(dāng)?shù)奈募到y(tǒng)(不管當(dāng)前已知或在將來開發(fā)的)以便補(bǔ)充文件系統(tǒng)。雖然將結(jié)合以下中的某個特定部件討論一些實施例,但是在不提出在此所描述的主題的范圍的任何限制的提出的情況下,這僅出于說明的目的。
參考圖2,文件系統(tǒng)中的沖刷中所涉及的五個主要部件可以包括緩沖區(qū)管理器202、緩沖區(qū)203、沖刷器204、策略引擎205和文件系統(tǒng)存儲206。
緩沖區(qū)管理器202可以被配置為管理數(shù)據(jù)的緩沖。緩沖區(qū)管理器202可以被用于實現(xiàn)如本文所公開的應(yīng)用可知的機(jī)制。緩沖區(qū)管理器202管理并且更長地保持緩沖區(qū)203中的數(shù)據(jù)以便獲得能量改進(jìn)機(jī)會。為此目的,緩沖區(qū)管理器202可以被配置為根據(jù)如由策略引擎205所提供的事務(wù)策略212,來將緩沖數(shù)據(jù)組織為準(zhǔn)備沖刷的區(qū)段。許多適當(dāng)?shù)姆绞娇梢杂删彌_區(qū)管理器202用于實現(xiàn)該目標(biāo)。在一些方面中,緩沖區(qū)管理器202可以包括日志部件216和反向映射部件218。
日志部件216可以被配置為維護(hù)日志(還被稱為寫日志或先前寫日志)。在基本形式中,日志是來自維護(hù)應(yīng)用的寫歷史的應(yīng)用的所有寫請求201的時序記錄。簡而言之,在以下描述中,日志部件216可以被簡稱為“日志”。日志216是由文件系統(tǒng)分配以記錄其將提前做出的改變的特殊區(qū)域。在崩潰之后,恢復(fù)簡單地包含從文件系統(tǒng)讀取日志216并且回放來自該日志216的改變直到文件系統(tǒng)再次是一致的。
可以以許多適當(dāng)?shù)姆绞綄崿F(xiàn)日志216。一些文件系統(tǒng)允許日志增長、收縮并且僅被重新分配為規(guī)則文件,同時他人將日志放在當(dāng)文件系統(tǒng)被安裝時不被保證為移動或改變大小的鄰近區(qū)域或隱藏文件中。一些文件系統(tǒng)還可以允許分離的設(shè)備上的外部日志,諸如固態(tài)磁盤或支持電池的非易失性ram。對日志的改變可以自身針對附加冗余度記錄日志,或者日志可以跨越多個物理體積分布來防止設(shè)備故障。在此的本公開不具有該方面的任何限制。
日志216中的日志條目對應(yīng)于相應(yīng)的寫請求201,并且引用與寫請求201相關(guān)聯(lián)的緩沖區(qū)203的相應(yīng)的地址。如先前所提到的,可以確定特定于應(yīng)用(即,應(yīng)用可知的)高速緩存的寫請求序列塊是否準(zhǔn)備沖刷。在一個實施方式中,日志216中的日志條目可以被組織為:根據(jù)如由策略引擎205所提供的事務(wù)策略212,來準(zhǔn)備準(zhǔn)備沖刷的高速緩存的寫請求序列塊。例如,日志216可以分為有效或開放區(qū)段和封閉區(qū)段,其定義沖刷的范圍。在有效區(qū)段中,可以插入新的日志條目,并且一些性能改進(jìn)裝置(諸如重寫或重排)是允許的。在該示例中,有效區(qū)段中的日志條目可以不被準(zhǔn)備沖刷。在封閉區(qū)段中,新的日志條目可以不被允許添加,并且禁止性能改進(jìn)裝置(諸如重寫和重排)。換句話說,封閉區(qū)段被用于保持高速緩存的數(shù)據(jù)的不同版本。日志216的封閉區(qū)段中的所有日志條目準(zhǔn)備沖刷、等待被調(diào)度以沖刷到存儲裝置。在一個實施例中,存儲包括持久存儲裝置(諸如文件系統(tǒng)存儲206)。在一些實施例中,確定高速緩存的數(shù)據(jù)的什么部分準(zhǔn)備沖刷(即,區(qū)段的封閉)可以跟隨至少部分地基于應(yīng)用的訪問特性的事務(wù)策略212(更特別地,基于應(yīng)用的數(shù)據(jù)讀/寫訪問模式),從而改進(jìn)寫吞吐量和能量效率。稍后將詳細(xì)描述事務(wù)策略212的細(xì)節(jié)。
此外,可以應(yīng)用許多適當(dāng)?shù)臋C(jī)制以便保證一致性。例如,可以在寫高速緩存中應(yīng)用事務(wù)處理。事務(wù)處理機(jī)制可以與上文所描述的應(yīng)用知道的機(jī)制組合,以便提供數(shù)據(jù)一致性和能量效率二者。在這樣的實施例中,將操作(諸如高速緩存的寫請求序列)分為事務(wù)可以是應(yīng)用可知的(即,取決于應(yīng)用的數(shù)據(jù)讀/寫訪問類型)。因此,日志216中的區(qū)段還可以被稱為事務(wù)。
如可以理解,可以存在等待被沖刷的若干封閉區(qū)段或事務(wù)。換句話說,日志216可以具有高速緩存的頁面的不同版本。出于說明性和簡化目的,版本化高速緩存事務(wù)(vct)可以用于采集該信息。通常地,vct在其生命周期內(nèi)經(jīng)歷三個狀態(tài):當(dāng)其打開或有效時,其覆蓋有效區(qū)段中的條目并且可以連續(xù)地包括新的附加條目;當(dāng)其封閉時,其結(jié)束位置是固定的,并且所有其條目被輸入到封閉區(qū)段中;并且當(dāng)其提交時,沖刷器204挑選其并且將所有其條目原子地寫到持久存儲裝置。此外,事務(wù)和其條目由文件系統(tǒng)刪除。一些性能改進(jìn)手段(諸如重寫和重排)僅被允許在單個事務(wù)的范圍內(nèi)。由于沖刷器204將保證提交的事務(wù)的耐用性和原子性,因而這些改進(jìn)將不離開任何不一致的狀態(tài)。
日志216可以被實現(xiàn)為許多適當(dāng)?shù)男问?,包括但不限于圓形陣列、列表或一些其他形式。在一些實施例中,每個應(yīng)用可以具有其自身的日志并且因此針對應(yīng)用的日志可以具有單個有效區(qū)段。當(dāng)日志216被實現(xiàn)為圓形陣列,新的日志條目可以附加在日志的結(jié)尾處的單個有效區(qū)段中。在一些實施方式中,圓形陣列的尾部可以由自旋鎖保護(hù)以減少新的條目的處理時間。另外,可以通過當(dāng)尾部生長以到達(dá)頭部時僅推遲寫請求的互斥來保護(hù)圓形陣列的頭部?;コ馐潜WC在任何時間僅一個線程可以訪問對應(yīng)于互斥的對象(在該示例中,圓形陣列的頭部)的標(biāo)記。
日志216還可以嵌入一些其他數(shù)據(jù)結(jié)構(gòu)來提供附加改進(jìn)。作為示例,可以嵌入kobject結(jié)構(gòu)(文件系統(tǒng)層次結(jié)構(gòu)的基本構(gòu)建塊),使得文件系統(tǒng)可以將用戶空間接口輸出為在/sys目錄下的文件??梢酝ㄟ^這樣的kobject結(jié)構(gòu)實現(xiàn)至少兩個益處。第一,用戶可以容易地檢查和設(shè)定每個日志的基本特性。第二,其通過在沖刷與附加之間進(jìn)行區(qū)分來支持并行寫,這是因為兩個鎖已經(jīng)被用于保護(hù)日志216的頭部和尾部。
反向映射部件218可以被配置為維護(hù)從緩沖區(qū)203的引用的高速緩存單元到日志216內(nèi)的日志條目的反向映射。反向映射可以被用于兩個目的。第一,當(dāng)刪除來自緩沖區(qū)203的高速緩存單元中的數(shù)據(jù)時,該反向映射可以被用于定位對應(yīng)的條目并且將其標(biāo)記為無效的。第二,當(dāng)新的寫出現(xiàn)時,其可以用于檢查目標(biāo)高速緩存單元是否已經(jīng)由條目引用,并且如果是的話,確定哪個條目對其進(jìn)行引用。該信息可以由緩沖區(qū)管理器202用于組織緩沖數(shù)據(jù)。稍后將描述示例性處理。
可以以許多適合的形式實現(xiàn)反向映射部件218。實現(xiàn)其的一個方法包括自定義散列表,其使用針對每個桶的讀寫器鎖而不是系統(tǒng)范圍的鎖。與條目相關(guān)聯(lián)的頁面使其_count字段遞增,使得頁面高速緩存將不驅(qū)逐他們。這還意味著文件系統(tǒng)必須在存儲器空間運(yùn)行低之前釋放頁面以避免存儲器溢出問題。實現(xiàn)反向映射的另一方法將添加指向頁面結(jié)構(gòu)的引用指針。由于structpage已經(jīng)封裝有許多字段(例如,24+標(biāo)記駐留在32比特變量),因而該方法要求擴(kuò)大變量大小。
緩沖區(qū)203是將文件數(shù)據(jù)存儲在存儲器中和服務(wù)用戶請求的主要形式。緩沖區(qū)203用于托管易失性存儲器中的文件數(shù)據(jù)的一部分以改進(jìn)i/o性能??梢酝ㄟ^任何種類的易失性存儲器(包括但不限于動態(tài)ram(dram)和靜態(tài)(sram))實現(xiàn)緩沖區(qū)203。在一些實施例中,高速緩存可以被用于對待寫的數(shù)據(jù)進(jìn)行緩沖。通常,操作系統(tǒng)(os)幾乎管理了頁面中(例如,在linux系統(tǒng))中的存儲器。出于說明性和簡化的目的,術(shù)語“頁面高速緩存”在本文中將用于表示緩沖區(qū)203,并且高速緩存頁面指代高速緩存中的管理單元。然而,本領(lǐng)域的技術(shù)人員可以理解,可以在除頁面外的任何其他適當(dāng)?shù)膯卧泄芾泶鎯ζ?,并且本文中的本公開不具有該方面的限制。頁面高速緩存203可以是與os和/或其他安裝文件系統(tǒng)共享的任何現(xiàn)有頁面高速緩存或針對在此所公開的沖刷特別地分配的頁面高速緩存。
如果已經(jīng)寫入或修改高速緩存頁面,則其將被標(biāo)記為臟的,其指示高速緩存頁面已經(jīng)修改并且尚未保存到存儲裝置。大容量的頁面高速緩存具有支持長實況存儲器高速緩存的優(yōu)點(diǎn),從而提供用于改進(jìn)能量效率和應(yīng)用響應(yīng)的機(jī)會。
沖刷器204是管理易失性存儲器與非易失性存儲之間的數(shù)據(jù)流的通信機(jī)制。沖刷器204可以具有兩個職責(zé)。第一,其調(diào)用管理將數(shù)據(jù)持久存儲到存儲裝置的潛在的存儲部件。第二,當(dāng)文件系統(tǒng)被加載時,沖刷器204檢查目標(biāo)分區(qū)并且嘗試任何數(shù)據(jù)不一致性的恢復(fù)。
當(dāng)頁面高速緩存203中的一些高速緩存頁面是臟的時,沖刷器204負(fù)責(zé)將頁面數(shù)據(jù)寫回到持久存儲裝置(諸如文件系統(tǒng)206)。在一些實施例中,沖刷器204根據(jù)如由策略引擎205所提供的沖刷策略214進(jìn)行沖刷。更特別地,在由沖刷策略214引導(dǎo)的情況下,沖刷器204執(zhí)行一些適當(dāng)?shù)臎_刷定時中的沖刷(例如,當(dāng)電子設(shè)備是空閑的時)。進(jìn)一步地,在沖刷策略214的控制下,沖刷器204調(diào)度準(zhǔn)備參考日志216沖刷的頁面高速緩存203中的高速緩存的數(shù)據(jù)。
沖刷器204可以基于原子地沖刷任何事務(wù)的任何適當(dāng)?shù)拇鎯Σ考?。各種閃速數(shù)據(jù)格式可以與沖刷器204一起使用,本公開不具有該方面的限制。例如,許多文件系統(tǒng)(諸如ext4和btrfs)的存儲管理部件可以容易地采取以支持沖刷器204。
策略引擎205用于提供針對沖刷的各種策略。策略引擎205可以是可擴(kuò)展框架,因此可以使用各種備選或附加策略。在一些實施方式中,策略引擎205提供用于將緩沖的數(shù)據(jù)組織成準(zhǔn)備沖刷的區(qū)段的緩沖區(qū)管理器202的事務(wù)策略212,即,確定高速緩存的數(shù)據(jù)的什么部分可以準(zhǔn)備沖刷。換句話說,事務(wù)策略212確定何時關(guān)閉有效區(qū)段或事務(wù)。事務(wù)策略212可以是應(yīng)用特定的,其基于應(yīng)用的數(shù)據(jù)讀/寫訪問模式。
不同的應(yīng)用具有極大地不同的數(shù)據(jù)讀/寫訪問模式。例如,一個應(yīng)用可以頻繁地寫到存儲器中的相同地址或相同高速緩存頁面,同時另一應(yīng)用可以總是將不同的地址或高速緩存頁面寫在存儲器中。這樣的不同的數(shù)據(jù)讀/寫訪問模式可以指示不同的能量效率改進(jìn)潛在性。為了采集重寫數(shù)據(jù)可以改進(jìn)能量效率的程度,許多度量可以被用于表示能量效率改進(jìn)潛在性。作為示例,能量改進(jìn)潛在性比例r的度量被用于根據(jù)重寫表示能量效率改進(jìn)潛在性,其被定義為r=o/s,其中s是指示頁面高速緩存中的臟數(shù)據(jù)量的數(shù)據(jù)陳舊度,并且o是自從上次沖刷已經(jīng)重寫的累積的總數(shù)據(jù)量。
圖3圖示了示出能量改進(jìn)潛在性比如何隨著數(shù)據(jù)陳舊度增加變化的若干應(yīng)用的能量改進(jìn)潛在性曲線。在圖3中,x軸表示數(shù)據(jù)陳舊度s,并且其范圍在應(yīng)用中間統(tǒng)一以便描繪一個圖表中的所有曲線。沿著僅針對數(shù)據(jù)規(guī)模的意義的應(yīng)用名稱指示范圍值。y軸表示能量改進(jìn)潛在性比例r。在圖3中示出四個曲線,其中曲線301表示游戲應(yīng)用,曲線302表示數(shù)字地圖應(yīng)用,曲線303表示瀏覽器應(yīng)用,并且曲線304表示社交網(wǎng)絡(luò)應(yīng)用。
如從圖3可見,不同的應(yīng)用具有極大地不同的曲線形狀,這指示其能量改進(jìn)潛在性中的極大差異。例如,一些曲線(例如,曲線301、303)是相當(dāng)平坦的,同時其他曲線(例如,曲線302、304)單調(diào)地增加或具有平緩的峰。這樣的多樣性隱含針對這些應(yīng)用的不同的能量改進(jìn)機(jī)會。例如,對于曲線(例如,曲線301)中的峰的應(yīng)用而言,關(guān)閉有效區(qū)段或事務(wù)的一個示例性適合的機(jī)會是峰,這是因為此后能量效率改進(jìn)潛在性下降。對于具有增加的曲線(例如,曲線302、304)的應(yīng)用而言,增加的趨勢變得平緩的點(diǎn)是關(guān)閉的好機(jī)會,這是因為超過該點(diǎn)能量效率改進(jìn)潛在性僅增加很少,同時陳舊度數(shù)據(jù)繼續(xù)占據(jù)頁面高速緩存中的越來越多的空間。對于具有平坦曲線(例如,曲線303)的應(yīng)用而言,機(jī)會是相當(dāng)靈活的。
因此,事務(wù)策略212可以是應(yīng)用可知的并且基于應(yīng)用的數(shù)據(jù)讀/寫訪問模式。在一些實施方式中,給定頁面高速緩存203中的未沖刷的數(shù)據(jù)的當(dāng)前數(shù)量,事務(wù)策略212使用例如上文所描述的能量改進(jìn)潛在性曲線來根據(jù)未來的重寫估計可能的改進(jìn)程度。換句話說,事務(wù)策略212的特征是將能量改進(jìn)曲線的峰定位為可能的。
另外,電子設(shè)備中的應(yīng)用數(shù)據(jù)路徑的隔離使能軟件可知的事務(wù)策略212的可行性。不像在pc或服務(wù)器上那樣,移動設(shè)備用戶很少地選擇在何處應(yīng)用被安裝或在設(shè)備上的目錄之間直接移動文件,其避免交叉應(yīng)用路徑的一致性問題。這樣的移動設(shè)備上的應(yīng)用的數(shù)據(jù)路徑具有使得文件系統(tǒng)能夠通過路徑區(qū)分應(yīng)用并且自動地改進(jìn)針對不同的應(yīng)用的策略的規(guī)定。在一些實施例中,由單個應(yīng)用接觸的所有數(shù)據(jù)路徑可以被設(shè)定為應(yīng)用適應(yīng)性的基本單元。
策略引擎205還提供用于沖刷器204確定適當(dāng)?shù)臎_刷定時且調(diào)度準(zhǔn)備沖刷的高速緩存的數(shù)據(jù)的沖刷策略214。換句話說,沖刷策略214決定何時沖刷哪些區(qū)段或事務(wù)。
沖刷策略214可以包括決定何時沖刷的定時策略。存在可以觸發(fā)沖刷的許多條件。在一些方面中,定時策略可以至少部分地基于與設(shè)備的應(yīng)用或與設(shè)備的用戶輸入交互來確定沖刷定時。在其他方面中,沖刷定時策略可以基于何時設(shè)備目前處于空閑狀態(tài)。設(shè)備可以具有數(shù)個不同的狀態(tài):待機(jī)的、空閑的和忙碌的?!按龣C(jī)的”指代設(shè)備的屏幕何時關(guān)斷并且設(shè)備進(jìn)入暫停狀態(tài);“空閑的”意味著屏幕打開并且設(shè)備是有效的但是沒有用戶操作的情況下或具有例如小于預(yù)定閾值的較少的用戶操作;以及“忙碌的”意味著屏幕打開并且在例如高于預(yù)定閾值的頻繁的用戶操作的情況下設(shè)備是有效的。例如,當(dāng)用戶在交互期間對屏幕內(nèi)容進(jìn)行讀取或反映時,這樣的間隔可以表示用于沖刷的有益時間。可以以許多適當(dāng)?shù)姆绞筋A(yù)測這樣的間隔。例如,在一個實施方式中,當(dāng)與設(shè)備的應(yīng)用或與設(shè)備的用戶輸入交互的活動的程度低于預(yù)定義閾值,可以決定設(shè)備是空閑的并且其是用于沖刷的有益時間。稍后將描述定時策略的示例性實施方式。
本領(lǐng)域的技術(shù)人員可以理解,存在觸發(fā)沖刷而不管其是否是適合的時間(例如,當(dāng)頁面高速緩存變得太大并且存儲器利用率太高時)的一些其他條件??蛇x地,當(dāng)設(shè)備處于待機(jī)時,由于對應(yīng)用響應(yīng)的較少或沒有影響,還可以執(zhí)行沖刷。那些條件可以與基于用戶交互的條件組合,如上文所描述的。
沖刷策略214可以進(jìn)一步包括調(diào)度策略,其決定沖刷準(zhǔn)備或準(zhǔn)備沖刷的那些高速緩存的數(shù)據(jù)中間的哪些區(qū)段或事務(wù)。
通常,在應(yīng)用內(nèi),使事務(wù)按順序沖刷可以是優(yōu)選的。因此,在一個實施方式中,針對調(diào)度策略的一般考慮是在給定空閑間隔期間沖刷盡可能多的事務(wù)。各種適當(dāng)?shù)恼{(diào)度機(jī)制可以被用于實現(xiàn)調(diào)度策略。當(dāng)考慮來自多個應(yīng)用的未決的事務(wù)時,多優(yōu)先級調(diào)度機(jī)制可以用于確保應(yīng)用中間的公平性并且進(jìn)一步改進(jìn)沖刷性能。稍后將描述調(diào)度策略的示例實施方式。
文件系統(tǒng)存儲裝置206被用于持久地存儲文件數(shù)據(jù)。存儲裝置206可以由任何種類的非易失性存儲器實現(xiàn),該非易失性存儲器包括但不限于各種只讀存儲器(rom)(諸如可編程rom(prom)、電可改寫rom(earom)、可擦可編程rom(eprom)和電可擦可編程rom(eeprom)、閃速存儲器、磁盤,等等)。如上文所提到的,由于沖刷器204未與特定存儲數(shù)據(jù)格式組合,文件系統(tǒng)存儲206可以是具有任何數(shù)據(jù)格式的任何持久存儲裝置。
在一些實施例中,每個應(yīng)用可以具有其自身的日志或?qū)懭罩?16,同時反向映射部件218、策略引擎205和沖刷器204可以在文件系統(tǒng)中的多個應(yīng)用的各種實例中間共享。
因此,上文已經(jīng)描述用于實現(xiàn)如本文所公開的沖刷機(jī)制的示例性部件。本領(lǐng)域的技術(shù)人員可以理解,在未提出在此所描述的主題的范圍的任何限制的情況下,以上描述僅出于說明的目的,附加或備選的部件也是可能的。
圖4圖示了根據(jù)在此所描述的主題的實施例的用于沖刷用于電子設(shè)備的文件系統(tǒng)中的數(shù)據(jù)的方法的流程圖。應(yīng)理解到,不必以圖4中所示的順序執(zhí)行步驟。相反,可以以任何其他適合的順序或并行執(zhí)行那些步驟。
方法400進(jìn)入步驟410,其中接收寫請求(例如,圖2中的寫請求201)。寫請求中的每個寫請求可以與設(shè)備的應(yīng)用相關(guān)聯(lián)。寫請求可以包括如由該操作所要求的信息,諸如待寫到的目標(biāo)頁面、與寫請求相關(guān)聯(lián)的待寫數(shù)據(jù)、待寫的數(shù)據(jù)的大小等。
然后,在步驟420處,待寫的數(shù)據(jù)可以被緩沖在易失性存儲器中(諸如如圖2中所示的頁面高速緩存203)。鼓勵數(shù)據(jù)在頁面高速緩存中存活更長以便獲得能量效率機(jī)會。在用于寫到存儲裝置的頁面高速緩存203中已經(jīng)修改的頁面被標(biāo)記為“臟的”。日志(諸如如圖2中所示的日志216)可以用于記錄應(yīng)用的寫歷史。圖5圖示了稍后將描述的示出當(dāng)寫出現(xiàn)時如何將數(shù)據(jù)緩沖在存儲器中的流程圖。
在步驟430處,高速緩存或緩沖的數(shù)據(jù)被組織成準(zhǔn)備沖刷的塊。在由如在圖2中所示的策略引擎205所提供的事務(wù)策略212的控制下,高速緩存的數(shù)據(jù)的組織由緩沖區(qū)管理器202執(zhí)行。
如先前所描述的,事務(wù)策略212用于確定高速緩存的數(shù)據(jù)的什么部分可以準(zhǔn)備沖刷。事務(wù)策略212至少部分地基于應(yīng)用的數(shù)據(jù)讀/寫訪問模式。在一些實施例中,能量改進(jìn)比例r曲線(如在圖3中所示)用于指示應(yīng)用的不同的能量效率改進(jìn)潛在性。直觀地,選擇事務(wù)的最佳點(diǎn)是具有最高r的點(diǎn)。因此,事務(wù)策略212的目標(biāo)是找到接近如可能的能量改進(jìn)最佳點(diǎn)的適當(dāng)?shù)膶懻埱笠员憬Y(jié)束或關(guān)閉當(dāng)前有效區(qū)段或事務(wù)。每個新的寫請求可以表示能量改進(jìn)比例曲線中的點(diǎn)。各種適當(dāng)?shù)姆绞?諸如各種曲線擬合方法、線性擬合或高階非線性擬合)可以適于找到或估計這樣的適合的寫請求或點(diǎn)以關(guān)閉有效事務(wù)。
在一些實施例中,在線方法可以被用于估計出現(xiàn)的寫請求或點(diǎn)是否應(yīng)當(dāng)被認(rèn)為是關(guān)閉當(dāng)前有效事務(wù)的適合的寫請求。由于未來的寫請求是未知的,并且曲線中的波動可以導(dǎo)致選擇本地最佳點(diǎn),因而在一個實施方式中,滑動窗口內(nèi)的線性擬合被用于減輕波動。例如,線性擬合方法可以記憶最新k個點(diǎn)、擬合線并且經(jīng)由線的梯度判斷峰。
由于用于估計適合的寫請求的方法在每個寫上運(yùn)行,因而其計算復(fù)雜度對于降低cpu開銷和結(jié)果的能量成本應(yīng)當(dāng)是簡單的??梢詫€性擬合方法做出一些調(diào)節(jié)。例如,可以從法線擬合公式獲得增量版本。其針對每個新點(diǎn)增量地更新,并且計算僅要求幾個基本算術(shù)運(yùn)算。兩個因素可以被用于控制該擬合方法的有效性。第一是歷史的長度k。較小的k將使擬合方法對波動更靈敏,同時較大的k導(dǎo)致長的檢測延遲。為了限制延遲,可以調(diào)整第二因素g。擬合方法等待直到梯度下降到小于g,其不必是零。
在步驟440處,根據(jù)由如圖2中所示的策略引擎205所提供的沖刷策略214,沖刷器204可以沖刷存儲器中的數(shù)據(jù)(例如,準(zhǔn)備沖刷到持久存儲裝置(例如,文件系統(tǒng)存儲206)的頁面高速緩存)。
沖刷策略214指導(dǎo)沖刷器204確定適當(dāng)?shù)臎_刷定時并且調(diào)度準(zhǔn)備沖刷的高速緩存數(shù)據(jù)。稍后將參考圖6描述關(guān)于步驟440的更詳細(xì)操作。
圖5圖示了在寫出現(xiàn)時如何將數(shù)據(jù)緩沖在存儲器中的示例性流程圖。在圖5中所示的示例中,事務(wù)處理被用于保證一致性。本領(lǐng)域的技術(shù)人員可以理解,許多適當(dāng)?shù)姆椒梢杂糜诰彌_數(shù)據(jù),在未提出對在此所描述的主題的范圍的任何限制的情況下,這僅出于圖示的目的。此外,應(yīng)理解到,不必以圖5中所示的順序執(zhí)行步驟。相反,可以以任何其他適合的順序或并行執(zhí)行那些步驟。
方法500進(jìn)入步驟510,其中接收寫請求。寫請求可以與設(shè)備的應(yīng)用相關(guān)聯(lián)。寫請求可以包括如由該操作所要求的信息,諸如待寫到的目標(biāo)頁面、與寫請求相關(guān)聯(lián)的待寫數(shù)據(jù)、待寫的數(shù)據(jù)的大小等。
在一個實施例中,在步驟520處,例如基于從頁面高速緩存203中的臟頁面到日志216中的日志條目的反向映射來檢查與所接收的寫請求相關(guān)聯(lián)的目標(biāo)頁面是否已經(jīng)由與應(yīng)用相關(guān)聯(lián)的日志216內(nèi)的日志條目引用。
如果目標(biāo)頁面未由日志216中的任何日志條目引用(其意味著應(yīng)用寫到日志216外中的新頁面),那么在步驟560處,新的日志條目可以附加到日志216中的當(dāng)前有效區(qū)段或事務(wù)。同時,可以生成新的反向映射以與該新的日志條目相關(guān)聯(lián)。
如果目標(biāo)頁面由日志216中的日志條目引用(其意味著應(yīng)用寫到臟頁面),那么方法500可以轉(zhuǎn)到步驟530。
在一個實施例中,在步驟530處,檢查日志條目是否在有效或打開事務(wù)中。響應(yīng)于日志條目在有效事務(wù)中(其意味著用于重寫的好機(jī)會并且目標(biāo)頁面未由任何關(guān)閉的事務(wù)保護(hù)),那么在步驟540處,可以直接重寫或修改目標(biāo)高速緩存頁面。不需要附加新日志條目。
響應(yīng)于日志條目在關(guān)閉的事務(wù)中(其意味著應(yīng)用在密封在一些事務(wù)內(nèi)并且防止重寫的臟頁面上寫入),那么在一個實施例中在步驟550處,文件系統(tǒng)在目標(biāo)頁面上寫時復(fù)制(cow)。特別地,該目標(biāo)頁面在寫之前被復(fù)制,并且日志條目被改變?yōu)榕c原始副本相關(guān)聯(lián)。然后,復(fù)制的目標(biāo)頁面可以根據(jù)寫請求被修改,并且新日志條目被附加到日志216中的當(dāng)前有效事務(wù)。同時,可以生成新的反向映射以將目標(biāo)頁面的經(jīng)修改的副本與該新的日志條目相關(guān)聯(lián)。
圖6圖示了示出沖刷器(例如,圖2中的沖刷器204)可以如何根據(jù)如在此所公開的沖刷策略214操作的示例性流程圖。通常,沖刷策略214包括定時策略,其預(yù)測在其中設(shè)備的用戶未被期望有效地操作設(shè)備的時間間隔,以便找到用于沖刷的響應(yīng)友好的時間。沖刷策略214可以進(jìn)一步包括調(diào)度策略,其決定沖刷準(zhǔn)備沖刷的那些事務(wù)中間的哪些事務(wù)(特別地當(dāng)與多個應(yīng)用相關(guān)聯(lián)的多個日志具有準(zhǔn)備沖刷的一個或多個關(guān)閉的事務(wù)時)。
方法600進(jìn)入步驟610,其中監(jiān)視與設(shè)備的應(yīng)用或與設(shè)備的用戶交互。用戶輸入交互可以是任何種類的用戶操作,這取決于設(shè)備。例如,對于觸摸屏設(shè)備而言,用戶輸入交互可以是所有形式的屏幕觸摸手勢,包括但不限于叩擊、雙叩、掃向方向、旋轉(zhuǎn)、擠壓、拆開、輕擊、多手指叩擊或滾動等。在一些實施例中,濾波器用于將一些事件組合為一個邏輯操作,這是因為一些邏輯用戶操作引起具有小間隔(例如,小于預(yù)定閾值)的多個屏幕事件(諸如滑動手勢)。
用戶輸入交互的監(jiān)視可以涉及用戶操作何時發(fā)生并且用戶操作多么頻繁發(fā)生等?;诒O(jiān)視,各種交互模型可以被用于預(yù)測用于沖刷的間隔,包括但不限于簡單稻草人方案,諸如來自最后k個所測量的間隔的最后最小模型(lmm,其挑選最小值)或最后平均模型(lam,其挑選平均值)。
圖7圖示了用于預(yù)測適于沖刷的間隔的簡單狀態(tài)機(jī)模型。本領(lǐng)域的技術(shù)人員可以理解,在未提出對在此所描述的主題的范圍的任何限制的情況下,圖7中的狀態(tài)機(jī)模型僅是圖示的目的的示例。許多其他適當(dāng)?shù)臓顟B(tài)機(jī)可以被設(shè)計為預(yù)測用于沖刷的間隔。
可以認(rèn)識到,現(xiàn)代移動設(shè)備(諸如智能電話)的用戶通常在短間隔與長間隔之間來回地切換。例如,當(dāng)閱讀社交網(wǎng)絡(luò)應(yīng)用上的新聞饋送時,在然后與感興趣一個保持更長以閱讀其之前,用戶可以迅速地略讀一些帖子。有限狀態(tài)機(jī)模型基于以上認(rèn)識。
如在圖7中所示,存在兩個中心狀態(tài)(當(dāng)用戶以短間隔操作時的高交互狀態(tài)701和當(dāng)用戶以長間隔操作時的低交互狀態(tài)702)。兩個階段的每個階段維護(hù)間隔a[1…k]的分離的最近歷史,并且使用平均值p預(yù)測下一間隔。其中的每一個還具有定時器t,其在其到達(dá)某個值觸發(fā)暫停并且在每個狀態(tài)轉(zhuǎn)變時被重置為零。這些字段注釋有相應(yīng)地針對兩個狀態(tài)的l或h。例如,如在圖7中所示,高交互狀態(tài)701維護(hù)間隔ah[1…kh]的歷史和定時器th;并且低交互狀態(tài)702維護(hù)間隔al[1…kl]的歷史和定時器tl。兩個附加中間狀態(tài)(較高交互狀態(tài)703和較低交互狀態(tài)704)用于幫助增加或減少間隔預(yù)測。
在如圖7中所示的狀態(tài)機(jī)模型中,邊緣或箭頭示出從一個狀態(tài)到另一狀態(tài)的轉(zhuǎn)變。每個箭頭標(biāo)記有觸發(fā)該轉(zhuǎn)變的輸入和待采取的動作。如從圖7中所示的狀態(tài)圖可見,狀態(tài)機(jī)工作如下:當(dāng)保持在高交互狀態(tài)701(簡稱“h”狀態(tài))時,其將在到來的事件是用戶操作的情況下(如由圓形箭頭711所指示的)進(jìn)行循環(huán)。然而,如果用戶操作未在暫停事件τ之前出現(xiàn),機(jī)器假定用戶可能開始長間隔,并且因此其改變到低交互狀態(tài)702(簡稱“l(fā)”狀態(tài))。由箭頭712指示該事務(wù)。在“l(fā)”狀態(tài)702中,如果所預(yù)測的時間pl在沒有用戶交互的情況下成功地經(jīng)過,則狀態(tài)機(jī)進(jìn)入等待用戶操作的較低交互狀態(tài)704,從而增加長間隔預(yù)測。由箭頭713指示該轉(zhuǎn)換。如果用戶操作在所預(yù)測的時間之前但是晚于τ出現(xiàn),則應(yīng)考慮用戶仍然以長間隔操作但是長間隔預(yù)測應(yīng)當(dāng)減小,因此其進(jìn)入較高交互狀態(tài)703。由箭頭714指示該轉(zhuǎn)換。否則,用戶操作出現(xiàn)太迅速(在τ之前),以估計到用戶切換到短間隔,然后狀態(tài)直接被設(shè)定到高交互狀態(tài)701。由箭頭715指示該轉(zhuǎn)換。其他操作可以從如圖7中所示的狀態(tài)圖是清楚的,并且因此此處省略其詳細(xì)描述。
從狀態(tài)圖,可以看到,存在相應(yīng)地執(zhí)行沖刷的兩個機(jī)會,其由箭頭712和箭頭716所指示。通過平均值p預(yù)測用于沖刷的間隔的長度。
返回圖6。在步驟620處,確定是否至少部分地基于步驟610處的監(jiān)視和采取的間隔預(yù)測模型(例如,如圖7中所示的狀態(tài)機(jī)模型)進(jìn)行沖刷。換句話說,確定設(shè)備是否在空閑狀態(tài)中,即,屏幕打開并且設(shè)備有效但是不具有用戶操作或具有較少的用戶操作(例如,小于預(yù)定閾值)。如果設(shè)備是空閑的,則其隱含用于沖刷的好時間,并且然后方法600轉(zhuǎn)到其中其決定執(zhí)行沖刷的步驟630。否則,方法600可以返回步驟610以監(jiān)視用戶輸入交互。
如先前所提到的,存在可以觸發(fā)沖刷的一些其他條件。例如,可以考慮一些其他條件,其觸發(fā)沖刷而不管其是否是適合的時間(例如,當(dāng)頁面高速緩存變得太大并且存儲器利用率太高時)。那些條件可以與如上文所描述的基于用戶交互的條件組合。
已經(jīng)決定執(zhí)行沖刷,在步驟640處,可以預(yù)測用于沖刷的間隔的長度。雖然出于說明的目的,在步驟630之后示出步驟640,但是本領(lǐng)域的技術(shù)人員可以理解,當(dāng)確定適合的間隔是否基于各種交互模型發(fā)生時,可以預(yù)測或估計間隔的長度。在一些實施例中,如圖7中所示的有限狀態(tài)機(jī)模型被用于預(yù)測間隔,其中平均值p被用于預(yù)測間隔的長度。
然后,在步驟650處,根據(jù)如由如圖2中所示的策略引擎205所提供的調(diào)度策略,可以調(diào)度準(zhǔn)備沖刷的頁面高速緩存中的數(shù)據(jù)。
通常,調(diào)度策略決定沖刷準(zhǔn)備或準(zhǔn)備沖刷的那些高速緩存的數(shù)據(jù)中間的哪些區(qū)段或事務(wù)。通常,在應(yīng)用內(nèi),事務(wù)必須按順序沖刷。因此,針對調(diào)度策略的一般考慮是在給定空閑間隔期間沖刷盡可能多的事務(wù)。各種適當(dāng)?shù)恼{(diào)度機(jī)制可以被用于實現(xiàn)調(diào)度策略。當(dāng)考慮來自多個應(yīng)用的未決的事務(wù)時,多優(yōu)先級調(diào)度機(jī)制可以被用于確保應(yīng)用中間的公平性并且進(jìn)一步改進(jìn)沖刷性能。在典型的場景中,對于可以是在聽音樂之聲時用戶與應(yīng)用交互的那個的這樣的實施例而言,后臺電子郵件或新聞服務(wù)連續(xù)地接收推送消息。
調(diào)度策略可以至少部分地基于事務(wù)的一個或多個屬性,使得可以以公平并且能量高效的方式選擇適當(dāng)?shù)氖聞?wù)。事務(wù)的屬性包括以下各項中的一項或多項:事務(wù)的狀態(tài)、事務(wù)的長度、事務(wù)的親和性和事務(wù)的年限。
事務(wù)的狀態(tài)包括有效狀態(tài)和關(guān)閉狀態(tài)。如先前所描述的,僅關(guān)閉事務(wù)可以被調(diào)度用于沖刷。
事務(wù)的長度指代沖刷事務(wù)的頁數(shù)?;陂L度,可以估計沖刷一個事務(wù)所要求的時間,并且從而可以判斷事務(wù)是否可以適配到當(dāng)前預(yù)測的間隔中以避免影響應(yīng)用響應(yīng)的可能沖突(例如,沖刷操作與交互式用戶操作重疊)。
事務(wù)的親和性指示兩個或兩個以上事務(wù)是否屬于相同應(yīng)用。相同應(yīng)用的事務(wù)具有親和性,這是因為他們可以被合并,因此在其一起沖刷的情況下節(jié)省能量。換句話說,具有親和性的兩個或兩個以上連續(xù)的事務(wù)可以在沖刷之前被合并為一個事務(wù)以便擴(kuò)展能量改進(jìn)范圍。
可以通過在事務(wù)已經(jīng)先前略過的次數(shù)表示事務(wù)的年限,這是因為其未適配在任何間隔中。為了公平,一些應(yīng)用事務(wù)保持未沖刷太久不是期望的。
各種調(diào)度方法可以用于基于事務(wù)的以上屬性,來調(diào)度待沖刷的事務(wù)。一個方法是基于優(yōu)先級的調(diào)度方法。例如,可以使用以下四個優(yōu)先級考慮,其中較低的數(shù)字意味著較高的優(yōu)先級。
考慮1(事務(wù)親和性):無論何時選擇事務(wù),相同應(yīng)用的其他事務(wù)被給予優(yōu)先級超過剩余部分。簡而言之,應(yīng)用在下文中被直接用作調(diào)度的單元。注意,除在選擇應(yīng)用時之外,除應(yīng)用的前一個外的其他事物不在考慮中??梢圆扇「鞣N適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)以組織等待應(yīng)用。圖8示出了用于組織等待應(yīng)用的示例性數(shù)據(jù)結(jié)構(gòu)。
如在圖8中所示,存在三個候選隊列(高緊急隊列801、低緊急隊列802以及正常隊列803)和非候選隊列804。隊列中的每個幀表示應(yīng)用。三個候選隊列801、802和803形成在一起用于分批處理類似年限的事務(wù)的方式。無論何時應(yīng)用排隊略過,其從隊列移除,并且如果存在一個則放到更緊急的隊列中。
考慮2(事務(wù)年限):對于三個候選隊列801、802和803而言,來自更緊急的隊列的應(yīng)用被給予優(yōu)先級超過來自較不緊急的隊列的應(yīng)用。當(dāng)在候選隊列中不存在可行選擇時,可以選擇高緊急隊列中的最短一個用來沖刷。
考慮3(事務(wù)長度):候選隊列中的應(yīng)用僅在其表頭事務(wù)的長度短于可用間隔時對于沖刷是可行的。
考慮4(隊列補(bǔ)給):當(dāng)任何隊列中的應(yīng)用已經(jīng)關(guān)閉事務(wù)時,其被添加到正常隊列。當(dāng)所有三個候選隊列是空時,非候選隊列中的所有應(yīng)用移動到正常隊列。
因此,上文已經(jīng)描述具有用于電子設(shè)備的自適應(yīng)沖刷的文件系統(tǒng)。文件系統(tǒng)更長地保持存儲器中的數(shù)據(jù)并且其用于存儲器中寫高速緩存到存儲裝置的策略是應(yīng)用可知的并且自適應(yīng)的。在一個方面中,可以根據(jù)反映應(yīng)用適應(yīng)性的應(yīng)用的訪問特性來確定高速緩存的數(shù)據(jù)的什么部分準(zhǔn)備沖刷。在另一方面中,至少部分地基于與電子設(shè)備的應(yīng)用或與電子設(shè)備的用戶輸入交互(其反映用戶適應(yīng)性),可以靈活地選擇沖刷定時。進(jìn)一步地,可以采用用于調(diào)度準(zhǔn)備被沖刷的數(shù)據(jù)單元的多優(yōu)先級調(diào)度機(jī)制,其確保應(yīng)用中間的公平性并且進(jìn)一步改進(jìn)沖刷性能。
雖然已經(jīng)以特定于結(jié)構(gòu)特征和/或方法動作的語言描述了主題,但是應(yīng)理解到,所附的權(quán)利要求中定義的主題不必限于上文所描述的特定特征或動作。相反,上文所描述的特定特征和動作被公開為實現(xiàn)權(quán)利要求的示例形式。
雖然本公開容易受各種修改和備選構(gòu)建影響,但是在附圖中示出并且已經(jīng)在上文中詳細(xì)描述了其特定所圖示的實施例。然而,應(yīng)當(dāng)理解,不旨在將本公開限于所公開的特定形式,而是相反,旨在涵蓋落在本發(fā)明的精神和范圍內(nèi)的所有修改、備選構(gòu)造和等同物。上文所描述的實施例中的任一個的各方面可以與所描述的其他實施例中的任一個的各方面組合,以在不損失尋求效果的情況下形成進(jìn)一步的實施例。