專利名稱:壓縮存儲自由空間管理的制作方法
一般而言,本發(fā)明涉及計算機的操作系統(tǒng),具體而言,是涉及計算機系統(tǒng)中對壓縮的主存儲器的管理。
在計算機組織方面正在顯露出來的發(fā)展是對主存儲器的內(nèi)容使用數(shù)據(jù)壓縮,此即隨機存取存儲器分級系統(tǒng)的由操作系統(tǒng)(“OS”)管理的那個部分,其中分配單位是頁面。
在壓縮存儲器系統(tǒng)中,一頁可以占有可變的物理存儲器空間量。例如,如美國專利5,761,536號中描述的那樣,頁面可以占有或共享可變數(shù)量的大小固定的塊;頁面可以有標(biāo)稱4K大小,而塊的大小為256字節(jié)。一般而言,由一頁占有的這種塊的個數(shù)將隨其內(nèi)容而改變,這是由于壓縮能力的變化造成的。
通常,每個高速緩存行在被寫入存儲器之前被用標(biāo)準(zhǔn)的串行或并行壓縮算法壓縮。串行壓縮的實例包括Lempel-Ziv編碼(及其串行和并行變體),Huffman編碼和算術(shù)編碼。例如,見J.Ziv和A.Lempel的“串行數(shù)據(jù)壓縮的一種普適算法”,IEEE信息理論會刊,IT-23,pp.337-343(1977)。一種并行算法在美國專利5,729,228號中描述,題為“使用協(xié)同字典的并行壓縮和解壓縮”,作者Frana szek等。完成這種壓縮的一種方便途徑是使用專用硬件自動壓縮數(shù)據(jù),只帶有極少量的軟件或操作系統(tǒng)的干預(yù)。這允許快速完成壓縮/解壓縮,避免否則的話可能由于軟件壓縮/解壓縮造成的長時間延遲。
在從高速緩存寫回時,便改變成存儲在主存儲器中的頁。就是說,改變了的高速緩存行在寫回時可能比先前需要更多的塊。如果沒有足夠數(shù)量的自由塊來容納這改變了的行,則系統(tǒng)異常終止(abends)。這樣,在壓縮效率起伏的情況下,需要保持適當(dāng)?shù)淖杂煽臻g。在當(dāng)前的操作系統(tǒng)中也需要為新頁或為要從盤存儲器移到主存儲器的頁保持適當(dāng)?shù)淖杂煽臻g。本發(fā)明即針對這些需要。
這類系統(tǒng)與傳統(tǒng)的系統(tǒng)(無壓縮的系統(tǒng))之間的差別在于,在傳統(tǒng)的系統(tǒng)中把一個頁面分配(也稱作提交)給一個程序與分配一個“頁面幀(page frame)”,即真實存儲器,是相同的,這不同于某些未知個數(shù)的塊(在壓縮之后)。再有,在分配之后,新頁面的內(nèi)容必須從高速緩存寫回到存儲器,所以在存儲器分配和存儲器利用之間存在可變的延遲。在這可變的延遲期間,相應(yīng)的存儲器將被稱作“被分配但未被使用的”。再有,通常沒有對應(yīng)用軟件或系統(tǒng)軟件指出何時一給定行從高速緩存中拋出來。這樣,關(guān)于已提交給新頁但尚未反映在存儲器利用情況中的存儲器數(shù)量,存在著不確定性。其結(jié)果是可能的存儲器過量提交和伴隨的性能下降和/或系統(tǒng)異常終止。本發(fā)明即針對這些問題。
于是,本發(fā)明的目標(biāo)是改進的方法、系統(tǒng)和計算機程序存儲裝置(例如,包括體現(xiàn)在磁的、電的、光的或其他存儲裝置上的軟件),用于管理被壓縮的主存儲器的分配和利用。本發(fā)明具有的特性有利地避免了否則將會造成的系統(tǒng)異常終止或低效率的操作。
本發(fā)明的特性可以被實現(xiàn)為一種計算機化的方法或計算機程序存儲器裝置所體現(xiàn)的計算機軟件,用于確定是否能保證對某數(shù)量頁面的請求,和控制要被寫出到盤上的頁面數(shù)以及這樣做的時間。此外,本發(fā)明的另一些特性用于當(dāng)可用的存儲器量減少到一個足夠低點以致威協(xié)到一個系統(tǒng)會異常終止時減少(和最終停止)所有非必要的處理。
具有本發(fā)明特性的計算機化方法或計算機程序存儲器裝置所體現(xiàn)的計算機軟件的一個實例包括權(quán)利要求1中申請的步驟。
在另一個實例中,具有本發(fā)明特性的計算機化方法或計算機程序存儲器裝置所體現(xiàn)的計算機軟件包括權(quán)利要求3中申明的步驟。
在一個最佳實施例中,可通過維持一組閾值和估計能被容易地釋放(被使用但可得到)的存儲器量以及被提交(被分配但未被使用)的存儲器量,來管理被壓縮的存儲器。對被提交的存儲器的估計可包括當(dāng)前存儲器的利用(由硬件提供);以及對提交給新頁面的存儲器的估計(根據(jù)應(yīng)允的新頁面數(shù)),對這樣做的時間的估計,估計的壓縮比,以及在高速緩存中駐留時間的估計。
現(xiàn)在將參考附圖描述本發(fā)明的實施例,其中
圖1a描述包含和使用本發(fā)明的存儲器管理能力的計算環(huán)境的一例;圖1b描述一個頁面表;圖1c描述被壓縮主存儲器頁面物理地址的組織的舉例;圖2a描述根據(jù)本發(fā)明管理被壓縮存儲器的一種方法的舉例;圖2b描述在一個沒有“回收列表(Reclaim list)”的系統(tǒng)中由圖1的空間管理器所使用的閾值策略的舉例;圖3描述在一個沒有“回收列表”的系統(tǒng)中被壓縮存儲器管理過程的舉例;圖4描述在一個具有“回收列表”的系統(tǒng)中被壓縮存儲器管理過程的舉例;以及圖5描述在一個具有“回收列表”的系統(tǒng)中的策略所用的估計可用空間閾值的舉例。
根據(jù)本發(fā)明的原理,存儲器內(nèi)容的擴展受到控制,以保證可得到足夠的空間供存儲例如被壓縮數(shù)據(jù)。下面將參考圖1a詳細(xì)描述包含和使用本發(fā)明的一個計算環(huán)境舉例。
圖1a描述包含本發(fā)明的被壓縮存儲器管理能力的計算系統(tǒng)100的方塊圖舉例。在一個實施例中,計算系統(tǒng)100包括一個大的服務(wù)器系統(tǒng),除了壓縮控制器106(下文描述)外,該系統(tǒng)是由國際商用機器公司(IBM)以商標(biāo)RS/6000供應(yīng)的。如圖所示,該計算系統(tǒng)100包括例如一個或多個處理器102、操作系統(tǒng)125、高速緩存104,壓縮控制器106、被壓縮主存儲器108、以及一個或多個輸入/輸出(“I/O”)裝置110,每個將在下文中詳細(xì)描述。
如所知道的那樣,處理器102是計算系統(tǒng)100的控制中心。處理器102執(zhí)行至少一個操作系統(tǒng)(“OS”)(125),OS控制程序的執(zhí)行和對數(shù)據(jù)的處理。實例包括但不限于例如由國際商用機器公司(“IBM”)以商標(biāo)AIX出售的OS和例如由微軟公司以商標(biāo)WINDOWS NT出售的OS。如下文要描述的那樣,操作系統(tǒng)125是能包含和使用本發(fā)明能力的計算環(huán)境100的一個組成部分。
與處理器102和壓縮控制器106(下文描述)相連的是高速緩存存儲器104。高速緩存存儲器104為壓縮控制器106從I/O裝置110和/或被壓縮主存儲器108檢索的數(shù)據(jù)提供了短期、高速、高容量的計算機存儲器。
與高速緩存104和被壓縮存儲器108相連的是壓縮控制器106(下文詳細(xì)描述),它管理例如I/O裝置110和高速緩存104之間的信息傳送和/或被壓縮主存儲器108和高速緩存104之間的信息傳送。壓縮控制器的功能包括數(shù)據(jù)的壓縮/解壓縮以及把得到的被壓縮行存儲到固定大小的塊中。如將參考圖1C描述的那樣,這最好包括從被操作系統(tǒng)看見的實際頁面地址到存儲器中固定大小的塊的地址的映射。
也與壓縮控制器106相連的被壓縮主存儲器108包含例如以高速緩存行為單位的被壓縮數(shù)據(jù)。在一個實施例中,每頁包括4個高速緩存行。當(dāng)插入高速緩存104或從高速緩存104中排出時,高速緩存行分別被解壓縮和壓縮。來自I/O裝置110的頁在插入主存儲器108時也被壓縮(以高速緩存行為單位)。在這個實例中,I/O進出高速緩存104。雖然為了簡明只顯示單個高速緩存,但實際系統(tǒng)可以包括一個高速緩存分層體系。
眾所周知,與存儲器頁面相關(guān)的信息可以存儲在主存儲器或高速緩存104中的一個或多個頁面表中并由OS 125使用。圖1b中描述了頁面表140的一個實例。頁面表140包括多個頁面表條目142,每個條目包括例如給定頁面的虛擬地址;該頁面的對應(yīng)于虛擬地址的真實地址;以及對該頁面的一組管理信息,例如,使用位字段指出該頁面是否正被訪問以及讀/寫或只讀訪問字段指明所允許的訪問類型。
當(dāng)從主存儲器108請求一個頁面時,對每個高速緩存行,該頁面的真實地址被映射到一組物理地址(例如存儲器塊的標(biāo)識)。在一個例子中,這是使用圖1c中所示表150和160來完成的。這些表可存儲在壓縮控制器106中。表150包括例如稱作一頁的真實頁面地址的Page(i),以及對該頁每行的存儲器塊列表。例如,每頁大小可為4K字節(jié)并包括4個高速緩存行。每個高速緩存行的大小為1K字節(jié)。
作為一例,被壓縮的高速緩存行存儲在固定大小為256字節(jié)的一些塊中。表160包括例如構(gòu)成Page(i)特定行的被壓縮塊。例如,Page(i)的行1包括3個被壓縮塊,每個塊有256個字節(jié)。因為在本例中每頁能包括多達(dá)4個高速緩存行,而且每個高速緩存行能包括多達(dá)4個被壓縮的存儲器塊,所以每頁可以占有多達(dá)16個存儲器塊。
再參考圖1a中描述的系統(tǒng),根據(jù)本發(fā)明,壓縮控制器106能包括一個或多個中斷寄存器120和一個自由空間列表。該自由空間列表的一個實現(xiàn)是作為一個鏈接表,這對于本領(lǐng)域技術(shù)人員是熟知的。
其中,壓縮控制器106完成各種功能,包括a)壓縮從高速緩存104排出的行,并把結(jié)果存入從自由空間列表112中取出的若干固定大小的塊中;b)對高速緩存獲取的行解壓縮;c)把被釋放的塊加到自由空間列表112中,釋放塊的操作有例如從存儲器中去掉一行,或壓縮一個現(xiàn)在使用較小空間的改變了的行;d)維持自由空間列表112上的塊數(shù)計數(shù)F。最好是OS 125在請求時可得到這個計數(shù);e)維持一組由中斷寄存器(120)實現(xiàn)的關(guān)于F大小的閾值。在F中造成越過閾值的變化(下文中詳述)則造成處理器中斷。最好是每個閾值能由軟件動態(tài)設(shè)置,而且至少是那些與所測量的量相關(guān)的閾值被存儲在控制器106的中斷寄存器120中。
根據(jù)本發(fā)明,自由空間管理器130在自由空間列表112上保持適當(dāng)數(shù)量的塊。這種塊太少會使系統(tǒng)異常終止或掛起那些等待頁面出的應(yīng)用程序的執(zhí)行,而有太多的這種塊是對存儲器的浪費并產(chǎn)生過多的頁面錯。自由空間管理器還以一個或多個閾值(TO…TN)設(shè)置中斷寄存器120,使在這些閾值處產(chǎn)生中斷。如前所述,閾值值與實際測量值相關(guān)聯(lián),但與周期性測量的值相反,是存儲在一個或多個中斷寄存器120中的。下文中將詳細(xì)描述具有本發(fā)明特性的閾值策略和控制過程的舉例。
本領(lǐng)域技術(shù)人員將會理解,在本發(fā)明的精神和范圍內(nèi)存在各種不同的實現(xiàn)。例如,在壓縮控制器106中實現(xiàn)的各種功能可以由計算環(huán)境100內(nèi)的其他硬件和/或軟件組成部分來完成。作為一例,被壓縮存儲器管理技術(shù)可由處理器102執(zhí)行的程序來完成。
在一個沒有存儲器壓縮的系統(tǒng)中,由操作系統(tǒng)把一頁面分配給一個程序和應(yīng)允一個頁面幀這兩者嚴(yán)格地對應(yīng)。就是說,存儲器中的頁面地址與空間利用之間有一對一的對應(yīng)性。而本文不是這種情況,因為一個頁面中的每一行能占用可變個數(shù)的數(shù)據(jù)塊(例如0到4)。再有,由給定行占用的塊數(shù)可以隨著給定行被修改而改變。
以處理器速度發(fā)生的這些改變可能導(dǎo)致存儲器使用的擴展,這種擴展比頁面出(page out)機制所能處置的要快得多。這樣,在某些條件下需要停止所有應(yīng)用處理,而頁面出仍然進行。
當(dāng)前系統(tǒng)與傳統(tǒng)系統(tǒng)操作之間的另一差別在于通常在應(yīng)允一個頁面和它完全使用存儲器之間存在一個延遲。如果不能考慮到這種延遲的擴展,便可能意味著對存儲器空間的過度提交并增大了快速擴展的可能性。其結(jié)果可能是在應(yīng)允太多頁面和停止所有處理但造成的所需頁面出卻又待完成這兩種情況之間擺動。本發(fā)明避免了這種與壓縮有關(guān)的存儲器擺動。
在一些操作系統(tǒng)中,如微軟公司以商標(biāo)WINDOWS NT出售的操作系統(tǒng)中,有一個頁面“回收”(或“備用”)列表134(見“在視窗NT內(nèi)部”,作者Helen Guster,微軟出版社,第6.3章,1993)(下文中稱作“WinNT內(nèi)部”)?;厥樟斜?34上的頁面代表能在操作系統(tǒng)請求時立即被使用的頁面,因為在回收列表上的每一頁都在盤上存在有效的副本(見WinNT內(nèi)部,pp194-198)??紤]兩種不同的情況圖2a、2b和3描述了OS維持一個回收列表時本發(fā)明的特性;而圖4和5描述了OS不維持回收列表時本發(fā)明的特性。
圖2a描述了根據(jù)本發(fā)明具有管理被壓縮存儲器特性的計算機化方法的舉例。本領(lǐng)域技術(shù)人員將會理解,本發(fā)明的方法可以作為軟件實現(xiàn),供計算機或其他基于處理器的裝置執(zhí)行。該軟件可以體現(xiàn)在磁、電、光或其它持久的程序存儲器裝置上,包括但不限于磁盤、DASD、磁泡存儲器、帶、如CD-ROM之類光盤以及其他持久的(也稱非易失的)存儲裝置,如磁心存儲器、ROM、PROM、閃速存儲器、或有電池支持的RAM。如圖所示,在步驟200中,確定當(dāng)前的存儲器使用量。還可以確定一個或多個附加測量或估計的量(周期性或動態(tài)地確定)供其后由自由空間管理器130使用。例如,被分配但未被使用的存儲器量的估計;以及待完成I/O請求所需存儲器量的確定。在下文中將討論其他測量量或估計量的使用,例如可得到的真實地址量和/或使用的但可得到的存儲器的估計(在有回收或備用列表的情況下)。對被分配但未被使用的存儲器的估計可根據(jù)以下之一或多個頁面被分配的時間;發(fā)生完成I/O的時間;或高速緩存未命中率(cache miss ratio)。被使用但可得到的存儲器的估計可以基于對被頁面占有的可被充零且無需寫入盤的空間的估計。
在圖2a的步驟210中,自由空間管理器根據(jù)當(dāng)前存儲器使用情況和一個或多個被測量或估計的量,動態(tài)地設(shè)置一個或多個中斷級別和/或閾值。然后過程循環(huán)回步驟200去(周期地或動態(tài)地)更新那些測量值和/或估計值。
在步驟220中,如果收到一個中斷或越過一個閾值,則實現(xiàn)自由空間管理器130控制功能的一種概念上不同的過程,以適當(dāng)?shù)男袆幼鞒龇磻?yīng),這些行動的目標(biāo)是管理被壓縮存儲器108中的自由空間量。
在步驟230中,確定自由空間量是否已下降到應(yīng)該開始頁面出。在步驟235中,如果存在頁面出狀態(tài),則自由空間管理器可以作出響應(yīng),采取一個或多個行動,諸如控制要被寫入盤的頁面數(shù);以及控制要被充零的頁面數(shù)。如果使用一個回收列表134(下文將詳細(xì)描述),則控制處于被使用但可得到的狀態(tài)的頁面數(shù)(使用回收列表)。
在步驟240中,確定自由空間量是否下降到使得新頁面請求應(yīng)被允許,例如被限制或被取消。如果是,則在步驟245中自由空間管理器130停止應(yīng)允其后的非必須的頁面幀請求。
在步驟250中,確定自由空間量是否已下降到被認(rèn)為是緊急狀態(tài)的水平以下(下文描述)。在步驟255,如果存在緊急狀態(tài),則自由空間管理器130例如取消除了為對頁面充零、向盤寫頁面和待完成I/O所需的處理以外的所有處理。
在步驟220處理繼續(xù)(從步驟235、245或255)。在步驟260中,確定自由空間量是否已增加到可以恢復(fù)正常操作的水平。如果是,則在步驟265中自由空間管理器130恢復(fù)那些正常的操作,于是過程在步驟220繼續(xù)。
圖2b描述在一個沒有回收列表的系統(tǒng)中自由空間管理器130所用閾值策略的舉例。如圖所示,自由空間管理器130能是如下四個狀態(tài)之一1)正常狀態(tài),在此狀態(tài)下對新頁面的請求被應(yīng)允,沒有頁面出行動在發(fā)生。
2)頁面出狀態(tài),在此狀態(tài)下對新頁的請求被應(yīng)允,而頁面出行動在發(fā)生。在頁面出過程中,頁面被識別為不大可能很快被使用(使用標(biāo)準(zhǔn)算法,如FIFO,LRU或“時鐘(Clock)”)。見例如“時鐘算法”一書,A.S.Tanenbaum著,Prentic-Hall,Englewood Cliffs,New Jersey,pp 111(1992)。如果在盤上存在一選定頁面的有效副本,則存儲器中的該頁可被清除(充零),從而增加自由空間列表112上的塊數(shù)。如果在盤上不存在那個頁面的有效副本,則把它寫入盤中然后可予以清除。
3)拒絕狀態(tài),在此狀態(tài)下對新頁面的請求被拒絕(頁面出所需的請求除外),而頁面出行動在發(fā)生。
4)緊急狀態(tài),在此狀態(tài)下除了給頁面充零、進行頁面出和處置待完成I/O所需的處理外,所有處理全部停止。
最好是頁面出、拒絕和緊急狀態(tài)具有優(yōu)先級,以緊急狀態(tài)為最高優(yōu)先級,拒絕為次高優(yōu)先級,頁面出為最低優(yōu)先級。
自由空間管理器130在自由空間量上使用閾值(T0…T3)穿越線以確定何時改變狀態(tài),從而控制頁面出和頁面分配行動。閾值(T0…T3)可以取決于系統(tǒng)內(nèi)的狀況隨時間改變。在t時刻的閾值(T0…T3)表示為T0(t),T1(t),T2(t)和T3(t)。在時刻t存儲器內(nèi)自由空間量F表示為F(t)。
自由空間管理器130最好還維持1)F(t)的估計值G(t)。或者使用F(t)的最近測量值(這種測量周期地進行或當(dāng)發(fā)生頁面幀請求或完成I/O這類事件時進行),或者通過保證當(dāng)F(t)改變一定量時壓縮控制器106發(fā)出中斷信號,可以得到估計值G(t)。
2)計數(shù)M(t),這是當(dāng)前使用的頁面幀個數(shù)。
3)估計值v(t),這是被分配但未被使用存儲器量的估計值。這可能需要監(jiān)視其他的系統(tǒng)量,如高速緩存漏失率、頁面分配時間等。
4)界限I(t),這是對滿足所有待完成的輸入I/O請求所需存儲器最大量的界限。每當(dāng)開始頁面入(page-in)時,界限I(t)可以增大,而在頁面入完成時被減小,或者它可以更緩慢地變化。例如,它可被設(shè)得足夠高,于是,如果到來的I/O所需頁面數(shù)小于某一常數(shù)的話,這個界限值不需改變。
其中,自由空間管理器130按如下方式使用閾值(T0…T3)1)T0(t)-進入緊急狀態(tài)。T0(t)是自由塊數(shù),在此數(shù)值處壓縮控制器106使用一中斷信號停止除完成頁面出、充零和處置待完成I/O所需處理以外的全部當(dāng)前處理。更具體地說,每當(dāng)F(t)低于T0(t)時,控制器發(fā)出一個中斷。一收到這個中斷,便進入緊急狀態(tài)。
2)T1(t)-進入拒絕狀態(tài)(假定不在更高優(yōu)先級狀態(tài)下)。如果估計的自由塊數(shù)減少到T1(t),則自由空間管理器130將不會給予正在請求的程序以任何頁面,除非是頁面出功能所必須的那些頁面。這一狀態(tài)是從頁面出狀態(tài)進入的。不需要由控制器106發(fā)出與T1(t)對應(yīng)的中斷,因為一旦有了頁面分配請求,自由空間管理器能查詢控制器106。
3)T2(t)-進入頁面出狀態(tài)(假定不在更高優(yōu)先級狀態(tài)下)。T2(t)是自由塊數(shù),在此之下則啟動頁面出。更具體地說,每當(dāng)F(t)減小到T2(t)時,控制器發(fā)出一中斷。
4)T3(t)-進入正常狀態(tài)。T(3)是自由塊數(shù),在此數(shù)值處頁面出停止而且自由空間管理器恢復(fù)應(yīng)允新的頁面請求。(還可以使用一個單獨的狀態(tài)和閾值T4(t),用于定義何時恢復(fù)應(yīng)允新的頁面請求但繼續(xù)頁面出。為了簡明,在其中沒有描述這一點。)不需要由控制器106發(fā)出與T3(t)對應(yīng)的中斷,因為一完成一定數(shù)量的頁面出,自由空間管理器130便能查詢控制器。
優(yōu)先級有利地保證例如自由空間管理器130停留在緊急狀態(tài)直至達(dá)到正常狀態(tài)閾值T3(t)。同樣的效果也能通過例如在緊急狀態(tài)時關(guān)閉與T2(t)關(guān)聯(lián)的中斷(或重置控制器106中的一個寄存器使該中斷不會產(chǎn)生)和忽略向下越過T1(t)值來達(dá)到。
這些閾值可由自由空間管理器動態(tài)地設(shè)置或改變(在適當(dāng)?shù)臅r候),例如一旦完成I/O和頁面分配的時候。對于動態(tài)設(shè)置閾值,在T0(t)和T2(t)的情況中還最好涉及設(shè)置控制器中的寄存器120,可通過使用標(biāo)準(zhǔn)技術(shù)來減少這種設(shè)置的開銷。例如,對某一K>1,可在每當(dāng)?shù)贙個I/0完成時對閾值進行適當(dāng)?shù)母隆?br>
當(dāng)啟動頁面出時(例如一旦越過閾值T2(t)),便開始對一定頁面數(shù)量U進行頁面出,其中U是為達(dá)到水平T3(t)預(yù)計需要的頁面數(shù)。這個數(shù)值可能被擴大,否則當(dāng)達(dá)到T3(t)時頁面出不會中途被停止。
可按下述設(shè)置閾值T0(t)。令N1為由T0所關(guān)聯(lián)的中斷停止所有處理并頁面出足夠頁面以達(dá)到閾值T3(t)的過程期間存儲器可增加量的上限。令I(lǐng)(t)為由于未完成的頁面入(即已開始但尚未完成的頁面入數(shù))造成的存儲器可能增加量的上限。于是,T0(t)>=N1+I(t)便足以保證系統(tǒng)不會由于空間缺乏而異常終止。N1是一個固定的依賴于系統(tǒng)的量。(因為“被栓住(pinned)”的頁面不可以被頁面出,所以上述不等式有效地限制了可以被操作系統(tǒng)栓住,或者說被操作系統(tǒng)要求駐留在存儲器中的頁面總數(shù)。具體地說,如果存儲器包含M塊,那么被栓住頁面所占有的存儲器最大量,不論其壓縮能力如何,都不能超過M-T0(t)塊。自始至終我們都假定自由空間管理器130通過拒絕栓住頁面的請求來強行實施這一限制,如果該限制有被違反的危險的話。)T1(t)、T2(t)和T3(t)的值是以下各量的組合T0(t)、閾值間基本距離D1、D2、D3(未畫出)以及被分配但未被使用存儲器量的估計值v(t)。量v(t)是這樣一些頁面的作用的估計值,這些頁面已經(jīng)或?qū)⒁恍薷?,但它們的修改版本尚未從高速緩?04中排出來。在其中所考慮類型的大多數(shù)系統(tǒng)中,預(yù)期高速緩存駐留時間明顯地長于頁面分配和頁面使用或修改之間的時間。更具體地說,T1(t)=T0(t)+D1+v(t);T2(t)=T1(t)+D2;T3(t)=T2(t)+D3,其中D1、D2和D3可以被動態(tài)設(shè)置。
在當(dāng)前的舉例中,基本距離D1最好設(shè)置成剛好使它足以不太可能使自由塊數(shù)降到T0(t)(從而進入緊急狀態(tài))。這可以以幾種方式實現(xiàn),包括相對于在頁面出過程中存儲器擴展速率間接測量I/O速率。類似地,D2應(yīng)設(shè)置成剛好使它足以不太可能從頁面出狀態(tài)進入拒絕狀態(tài)。D3應(yīng)設(shè)置得足夠大從而不要從正常狀態(tài)太經(jīng)常地進入頁面出狀態(tài),但又要足夠小從而不浪費空間。D1、D2和D3可能依賴于系統(tǒng)測量值,如估計的壓縮比、自由空間管理器處在其每個狀態(tài)的時間份額、I/O速率等。
如前所述,在系統(tǒng)操作過程中,對閾值132在T0(t)之上的基本值的修改是增加一個已認(rèn)可但尚未使用的存儲器的估計值v(t),從而得到T1(t)、T2(t)和T3(t)。有不同的方式來構(gòu)成公式以得到v(t)的適當(dāng)值。其中選擇的一個是v(t)=∑b(i)n(i)s(t-t(i)),其中n(i)是在時刻t(i)被分配或已完成頁面入的頁面數(shù),b(i)是每個這種頁面最終將在存儲器中占有的塊數(shù)平均值的估計值,∑表示對t(i)<=t的所有i求和。如果值s(t-t(i))由一函數(shù)s(y)代表,則(在本例中)對于某一平滑參數(shù)r,s(y)=exp(-yr),參數(shù)r可根據(jù)系統(tǒng)狀況(如高速緩存未命中率或?qū)ζ骄咚倬彺骜v留時間的估計)動態(tài)地改變。量v(t)被周期性地更新,也在頁面分配或完成I/O時更新。如果這種更新使v(t)的變化大于某值KO塊,則閾值T1(t)、T2(t)和T3(t)被修改。
總之a(chǎn))頁面分配和頁面入/頁面出行動是由自由塊數(shù)F上的閾值控制的。越過這些閾值最好造成處理器中斷。
b)每個閾值值由一基本量(或稱基本距離)加上一個可能的修正量構(gòu)成,它代表諸如頁面入行動和被分配但未被使用存儲器,加上緊急狀態(tài)水平。這些閾值可以被動態(tài)地改變。
c)基本距離D1、D2和D3可根據(jù)系統(tǒng)測量值設(shè)定。
圖3描述在某時刻t0開始的控制過程舉例,它應(yīng)用于圖2的閾值策略。假定在從t0…t1的間隔期間,基本距離D1、D2、D3是不變的。還假定v(t)(估計的被認(rèn)可但尚未被使用的存儲器)和I(t)(由于已開始但尚未完成的頁面入數(shù)造成的存儲器可能增加量的上限)在整個時間間隔(t0,t1)上的變化足夠小,從而在這一間隔期間所有閾值(T0…T3)保持為常數(shù)。如圖所示,在t時刻存儲器內(nèi)的自由空間F(t)首先開始一個下降趨勢(有某些擺動),然后最終達(dá)到閾值T2(t)。這造成一個處理器中斷,于是自由空間管理器130被調(diào)用。自由空間管理器130開始頁面出過程,它將在F(t)達(dá)到T3(t)時終止。最初,在此示例中頁面出的開始存在延遲,還存在由于壓縮能力變化造成的存儲器內(nèi)容快速擴展。這使F(t)達(dá)到T1(t),在這一點處,新的頁面請求被拒絕,而且不再啟動更多的頁面入。起伏在繼續(xù),F(xiàn)(t)中有一向上趨勢。在時刻t1,檢測到v(t)的顯著增大,迫使T1(t)、T2(t)和T3(t)增大,然后,對所示剩余時間段,它們保持不變。F(t)繼續(xù)其上升趨勢直至達(dá)到T3(t)。其中頁面出被停止,頁面分配被恢復(fù)。
在上例中,自由空間管理器有四個狀態(tài)。本領(lǐng)域技術(shù)人員將會理解,下述情況是在本發(fā)明的精神和范圍內(nèi)在一個多處理器環(huán)境中,增加新的狀態(tài)和閾值,在這些新的狀態(tài)中,例如,頁面出在繼續(xù)進行但只有某些處理器被允許繼續(xù)正常執(zhí)行。為具有“回收”列表的操作系統(tǒng)所作的修改如前所述,某些操作系統(tǒng),如微軟的WINDOWS NT,維持一個“回收”(或“備用”)頁面列表。類似地,還可以有一個“自由”頁面列表(自由的但尚未被清除的頁面)和已被清除的“被充零”頁面列表。自由空間管理器130可以利用回收列表和自由列表作為已準(zhǔn)備好的能夠容易地被充零的存儲器源。這樣,可以把回收和自由列表上的頁面所代表的存儲器看作是“被使用的但可以得到的”。下面描述在一系統(tǒng)中自由空間管理器的一個版本,它能實現(xiàn)類似回收和自由列表的存儲器功能。
定義R(t)為回收和自由列表上的頁面所用存儲器總量的估計值R(t)可以以不同方式來估計(例如簡單地使用壓縮比的總體估計值)或者可以確切地知道,如果當(dāng)把頁面放到該列表或從該列表中取走時壓縮控制器106能向自由空間管理器提供每個頁面所用的確切存儲器量的話。定義A(t)為可得到的存儲器量的估計值A(chǔ)(t)=G(t)+R(t)-v(t)-I(t)。現(xiàn)在自由空間管理器130以A(t)和F(t)二者作為決策的基礎(chǔ)。
概括地說,當(dāng)自由空間F(t)變小時,自由空間管理器130通過把頁面從自由和/或回收列表134中移走,清除(充零)這些頁面,并把這些頁面幀的地址放到“被充零”列表上,從而在存儲器108內(nèi)部創(chuàng)建自由空間。如果自由列表和回收列表是空的,則要一直等到它們不空為止。這將繼續(xù)下去直至F(t)達(dá)到足夠水平。這一組操作稱之為充零(zeroing)。來自壓縮控制器106的硬件中斷能被用于通知何時開始充零和何時進入緊急狀態(tài),在這一狀態(tài),除了為充零、頁面出和待完成I/O所進行的處理外,所有處理都被停止。
當(dāng)可得到的存儲器估計值A(chǔ)(t)變低時,自由空間管理器130通過把頁面放到回收列表134上,即如果必要的話把某些頁面寫到盤上并把這些頁面放到回收列表上直至A(t)達(dá)到足夠的水平,以此來增加可得到的空間。與不帶有回收列表的系統(tǒng)相反,這些頁面在寫到盤上之后不必立即被充零。這叫做進行頁面出(page-out)。如果A(t)進一步減小到某一水平,則來自操作系統(tǒng)125的新的頁面請求被拒絕。由于頁面出和充零可能同時發(fā)生,所以必須引入適當(dāng)?shù)逆i住結(jié)構(gòu)以保證正確的操作。在一個最佳實施例中,共有6個閾值,適于圖4和圖5。
圖4描述根據(jù)本發(fā)明的自由空間閾值的另一舉例。如圖所示T0是緊急狀態(tài)閾值;T1是開始充零處的閾值;T2是停止充零處的閾值。T0(t)、T1(t)和T2(t)分別是在t時刻自由空間量F(t)的閾值。
圖5描述根據(jù)本發(fā)明估計的可得到空間閾值的舉例。如圖所示T3是新頁面請求被拒絕處的閾值;T4是開始頁面出處的閾值;T5是正常操作恢復(fù)處的閾值。T3(t)、T4(t)和T5(t)分別是t時刻估計的可得到空間A(t)的閾值。
現(xiàn)在將參考圖4和圖5描述把被壓縮的存儲器作為自由空間F(t)和估計的可得到空間A(t)二者的時間函數(shù)進行管理的控制過程舉例。
1)T0(t)按前述設(shè)置。當(dāng)F(t)達(dá)到T0(t)時,則進入緊急狀況(也稱緊急狀態(tài))(通過發(fā)一中斷信號),于是所有非充零和非頁面出行動均停止。如果(在中斷時刻)估計的可得到空間A(t)>T3(t),則自由空間管理器130停留在緊急狀態(tài)并繼續(xù)充零直至F(t)>=T2(t)。如果A(t)<=T3(t),則自由空間管理器停留在緊急狀態(tài)直至F(t)>=T2(t)和A(t)>=T5(t)。
2)T1(t)=T0(t)+v(t)+D1。當(dāng)F(t)達(dá)到T1(t)時,發(fā)出一硬件中斷并開始充零直至F(t)>=T2(t)。
3)T2(t)=T1(t)+D2。當(dāng)F(t)>=T2(t)時停止充零。
4)T3(t)=T0(t)+D3。當(dāng)A(t)<=T3(t)時(這可在軟件中檢測到),則進入與拒絕狀態(tài)(圖2)相似的狀態(tài),在此狀態(tài)不分配新的頁面幀(除非為了頁面出)并繼續(xù)頁面出直至A(t)=T5(t)。
5)T4(t)=T3(t)+D4。當(dāng)A(t)<=T4(t)時(這可在軟件中檢測到),則開始頁面出直至A(t)>=T5(t)。
6)T5(t)=T4(t)+D5。當(dāng)A(t)>=T5(t)時頁面出停止(這可在軟件中檢測到)。
閾值間基本距離D1和D2的設(shè)置最好使得足以不大可能進入緊急狀態(tài)。如果可以只由充零,即不用頁面出,來退出緊急狀態(tài),則由于緊急狀態(tài)造成的所有處理器停止時間是短的。然而,如果還需要頁面出以退出緊急狀態(tài),則這一時間是長的。這樣,D3、D4和D5的設(shè)置應(yīng)使得不大可能在充零過程中回收和自由列表被排空??梢愿鶕?jù)系統(tǒng)測量值,如I/O速率、壓縮能力變化等,來動態(tài)地設(shè)置D1、D2、D3、D4、D5。具有有限數(shù)量可尋址頁面幀的系統(tǒng)許多操作系統(tǒng),如IBM以商標(biāo)AIX出售的和微軟以商標(biāo)WINDOWS NT出售的操作系統(tǒng),在系統(tǒng)初始化時構(gòu)成固定大小的數(shù)據(jù)結(jié)構(gòu)以支持虛擬存儲器。特別是,描述真實存儲器的數(shù)據(jù)結(jié)構(gòu)(在WINDOWS NT中是頁面幀數(shù)據(jù)庫)支持固定數(shù)量的可尋址的真實頁面幀。當(dāng)這樣的系統(tǒng)與壓縮一起使用時,便可能出現(xiàn)這樣的情況有大量的可得到的空間,但可得到的頁面幀地址數(shù)卻很少。在這種情況下,如不具有壓縮的系統(tǒng)中那樣,應(yīng)采取操作系統(tǒng)的常規(guī)行動(例如頁面出)來處理這種情況。上面描述的自由空間管理器130對頁面幀的拒絕導(dǎo)致可使用的頁面幀地址數(shù)很少的情況。然而,上面描述的行動保證最終有足夠的空間變?yōu)榭傻玫降模瑥亩俅卧试S頁面請求。這樣,上面述的自由空間管理器能夠與現(xiàn)有操作系統(tǒng)的以可得到的頁面幀地址數(shù)為基礎(chǔ)的控制共同存在。例如,假定操作系統(tǒng)正在做頁面出以得到頁面幀地址而且有信號通知進入了壓縮緊急狀況。于是所有非必須的處理停止,而頁面出(和充零)繼續(xù),直至同時有足夠的頁面幀地址、足夠的估計的可得到存儲器和足夠的可得到的實際自由存儲器。
本發(fā)明包括的特性,例如自由空間管理器,它們能被包括在具有例如計算機可用介質(zhì)的制造品(例如一個或多個計算機程序產(chǎn)品)中。該介質(zhì)在其中實現(xiàn)了計算機可讀程序代碼裝置以提供和便于應(yīng)用本發(fā)明的能力。這種制造品可以被包括為一個計算機系統(tǒng)的一部分或者被單獨出售。
其中描述的系統(tǒng)和過程僅只是舉例。描述中參考的各圖或步驟(或操作)可以有許多變體。例如,一些步驟可按不同的順序進行,或者一些步驟可以被添加、刪除或修改。
權(quán)利要求
1.在一個包括被壓縮存儲器的計算機系統(tǒng)中,其中一個存儲器分配單元能占有可變的物理存儲器空間量,一種管理被壓縮存儲器的方法,包含如下步驟確定當(dāng)前存儲器使用量;估計被分配但未被使用的存儲器量;以及把被壓縮存儲器作為當(dāng)前存儲器使用量和被分配但未被使用的存儲器量的函數(shù)來管理。
2.權(quán)利要求1的方法,進一步包括如下步驟確定待完成I/O請求所需存儲器量;以及把被壓縮存儲器作為當(dāng)前存儲器使用量和待完成I/O請求所需存儲器量的函數(shù)來管理。
3.在一個包含被壓縮存儲器的計算機系統(tǒng)中,其中一個存儲器分配單元能占有可變的物理存儲器空間量,一種管理被壓縮存儲器的方法,包含如下步驟確定當(dāng)前存儲器使用量;確定待完成I/O請求所需存儲器量;以及把被壓縮存儲器作為當(dāng)前存儲器使用量和待完成I/O請求所需存儲器量的函數(shù)來管理。
4.權(quán)利要求1或3的方法,進一步包含如下步驟估計被使用但可得到的存儲器;以及所述管理包括把存儲器作為所述被使用但可得到的存儲器的函數(shù)來管理。
5.權(quán)利要求1或3的方法,進一步包含把存儲器作為被栓住頁面所用最大存儲器量的函數(shù)來管理的步驟。
6.權(quán)利要求1或3的方法,其中所述單元是頁面,其中所述管理進一步包含限制可以駐留在存儲器中頁面數(shù)的步驟。
7.權(quán)利要求1或3的方法,進一步包含如下步驟估計被分配但未被使用的存儲器量;以及把被壓縮存儲器作為當(dāng)前存儲器使用量和被分配但未配使用的存儲器量的函數(shù)來管理。
8.權(quán)利要求1或3的方法,所述管理步驟進一步包含把被壓縮存儲器作為可得到的真實地址量的函數(shù)來管理的步驟。
9.權(quán)利要求1或3的方法,其中所述管理進一步包含如下步驟根據(jù)一個或多個測量的或估計的量,包括當(dāng)前存儲器使用量和被分配但未被使用存儲器量,動態(tài)地設(shè)置一個或多個中斷級別和閾值;以及根據(jù)所述一個或多個測量的或估計的量,對所述中斷和越過閾值作出響應(yīng)。
10.權(quán)利要求5的方法,其中所述一個或多個測量的或估計的量包括下列中的至少一個待完成I/O請求所需的存儲器量;被使用但可得到的存儲器量;以及可得到的真實地址。
11.權(quán)利要求1或3的方法,其中所述單元是頁面,其中所述管理進一步包含確定一個對頁面的請求是否被應(yīng)允的步驟。
12.權(quán)利要求1或3的方法,其中所述單元是頁面,其中所述管理進一步包含控制要被寫到盤上的頁面數(shù)的步驟。
13.權(quán)利要求1或3的方法,其中的述單元是頁面,其中所述管理進一步包含控制要被充零的頁面數(shù)的步驟。
14.權(quán)利要求4的方法,其中所述單元是頁面,而且其中所述管理進一步包含通過使用回收列表控制處于被使用但可得到狀態(tài)下的頁面數(shù)的步驟。
15.權(quán)利要求1或3的方法,其中所述單元是頁面,而且其中所述管理進一步包含進入緊急狀態(tài)的步驟,在該緊急狀態(tài)取消除對頁面充零、把頁面寫到盤上和待完成I/O所需的處理外的所有處理。
16.權(quán)利要求15的方法,其中所述管理進一步包含退出緊急狀態(tài)和恢復(fù)正常操作的步驟。
17.權(quán)利要求1或7的方法,其中所述單元是頁面,而且其中所述對被分配但未被使用存儲器的估計是依據(jù)下列中的一個或多個頁面被分配的時間;發(fā)生完成I/O的時間;以及高速緩存未命中率。
18.要求4的方法,其中所述單元是頁面,所述對被使用但可得到的存儲器的估計是依據(jù)對不寫入盤就可被充零的頁面所占有空間的估計。
19.權(quán)利要求9的方法,其中所述動態(tài)設(shè)置進一步包含根據(jù)下列中的一個或多個來設(shè)置閾值間距離估計的壓縮比;所述管理處在其每個狀態(tài)下的時間份額;以及I/O速率。
20.一個由機器可讀的計算機程序存儲器裝置,有形地體現(xiàn)可由機器執(zhí)行的指令程序,以實現(xiàn)根據(jù)權(quán)利要求1至19的方法步驟。
21.管理被壓縮存儲器的計算機系統(tǒng),其中一個存儲器分配單元能占有可變的物理存儲器空間量,該計算機系統(tǒng)包含確定當(dāng)前存儲器使用量的裝置;估計被分配但未被使用的存儲器量的裝置;以及與所述確定裝置和所述估計裝置相連的自由空間管理器,用于把被壓縮存儲器作為當(dāng)前存儲器使用量和被分配但未被使用的存儲器量的函數(shù)來管理。
22.如權(quán)利要求21中申明的計算機系統(tǒng),包含至少一個處理器;至少一個與該處理器相連的高速緩存;所述存儲器單元被組織成頁面、塊和行;與高速緩存和被壓縮存儲器相連的壓縮控制器;與所述壓縮控制器相連的多個中斷寄存器和一個自由空間列表;其中所述確定當(dāng)前存儲器使用量的裝置與壓縮控制器相連;所述估計被分配但未被使用的存儲器量的裝置與壓縮控制器相連;以及所述自由空間管理器與處理器及壓縮控制器相連;所述壓縮控制器包括壓縮從高速緩存排出的行,并將壓縮結(jié)果存儲到從自由空間列表中取出的若干固定大小的塊中的裝置;在高速緩存提取時對行解壓縮的裝置;把通過諸如從存儲器中去掉一行或壓縮一變化的行而它現(xiàn)在使用較少的空間等操作釋放的塊加到自由空間列表的裝置;維持自由空間列表上的塊數(shù)計數(shù)F的裝置,所述計數(shù)可由自由空間管理器使用;以及在所述中斷寄存器中維持一組閾值的裝置,所述閾值指示F的大小,其中越過所述閾值會造成處理器中斷;而且所述自由空間管理器進一步包括在自由空間列表上維持適當(dāng)數(shù)量塊的裝置;根據(jù)一個或多個測量的或估計的量,包括當(dāng)前存儲器使用量和被分配但未被使用的存儲器量,動態(tài)設(shè)置一個或多個中斷級別和閾值的裝置;以及根據(jù)所述一個或多個測量的或估計的量,對中斷和越過閾值作出響應(yīng)的裝置。
23.管理被壓縮存儲器的計算機系統(tǒng),其中存儲器分配單元能占有可變的物理存儲器空間量,該計算機系統(tǒng)包含確定當(dāng)前存儲器使用量的裝置;確定待完成I/O請求所需存儲器量的裝置;以及用于把被壓縮存儲器作為當(dāng)前存儲器使用量和待完成I/O請求所需存儲器量的函數(shù)來管理的自由空間管理器。
全文摘要
一種改進的方法、系統(tǒng)和計算機程序存儲裝置(例如,包括體現(xiàn)在磁的、電的、光的或其他存儲裝置上的軟件),用于管理被壓縮的主存儲器的分配和利用,這能避免否則將會造成的系統(tǒng)異常終止或低效率操作。一個特性是當(dāng)可用的存儲器量減少到一個足夠低點以致威辦到一個系統(tǒng)會異常終止時減少(和最終停止)所有非必要的處理。在另一實例中,確定當(dāng)前存儲器使用量以及下列中的一個或多個:被分配但未被使用的存儲器量的估計;待完成I/O請求所需存儲器量的確定。被壓縮存儲器被作為當(dāng)前存儲器使用量和一個或多個其他測量的或估計的量的函數(shù)來管理。可通過維持一組動態(tài)閾值,估計能容易地被釋放的(被使用但可得到的)存儲器量和被提交的(被分配但未被使用的)存儲器量,從而對被壓縮的存儲器進行管理。對被提交的存儲器的估計可包括:當(dāng)前存儲器的利用;以及提交給新頁面的存儲器的估計(根據(jù)所應(yīng)允的新頁面數(shù)),這樣做時的時間,以及在高速緩存中駐留時間的估計。
文檔編號G06F12/08GK1289419SQ99802636
公開日2001年3月28日 申請日期1999年1月22日 優(yōu)先權(quán)日1998年2月10日
發(fā)明者彼得·安東尼·福蘭那斯則克, 菲利普·黑德爾博格 申請人:國際商業(yè)機器公司