專利名稱:自主調(diào)整計(jì)算機(jī)操作系統(tǒng)的虛擬存儲(chǔ)器子系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)的虛擬存儲(chǔ)器管理部件。具體上,本發(fā)明涉 及調(diào)整由操作系統(tǒng)的虛擬存儲(chǔ)器管理器的任何頁(yè)面替換算法使用的門限值。
背景技術(shù):
在機(jī)器上運(yùn)行的操作系統(tǒng)(OS)的虛擬存儲(chǔ)器管理器(VMM)負(fù)責(zé)有效地在 該OS實(shí)例中運(yùn)行的應(yīng)用之間有效地分配所述機(jī)器的主存儲(chǔ)器。VMM的主要 職責(zé)之一是向在盤上的頁(yè)面空間頁(yè)出(page out)利用不足的組存儲(chǔ)器塊(被稱 為"幀(frame)"或"頁(yè)面幀(page frame)")的內(nèi)容,并且將那個(gè)幀重新分配到 需要主存儲(chǔ)器的另一個(gè)應(yīng)用。這通常是借助于被稱為"頁(yè)面替換端口監(jiān)控程 序"(在大多數(shù)UNIX操作系統(tǒng)中也被稱為"LRU端口監(jiān)控程序")的端口監(jiān) 控程序(daemon)處理而實(shí)現(xiàn)的。
因?yàn)獒尫艓奶幚?即將其內(nèi)容移到盤外以使得其為空閑幀的行為)比將 空閑幀分配到發(fā)出請(qǐng)求的應(yīng)用(空閑幀的消費(fèi)者)的處理需要更長(zhǎng)的時(shí)間,因此 預(yù)期在OS中需要附加的空閑幀的情況下,頁(yè)面替換端口監(jiān)控程序通常在OS 中的空閑幀的數(shù)量降低到O之前開始頁(yè)出幀。VMM可以通過(guò)使用兩個(gè)可調(diào) 整的參數(shù)min_free和max—free來(lái)確定何時(shí)取消頁(yè)面替換端口監(jiān)控程序,以及 在每次運(yùn)行中應(yīng)當(dāng)釋放多少頁(yè)面。空閑幀的數(shù)量一變得低于min—free,所述 頁(yè)面替換端口監(jiān)控程序就被取消,并且在每次運(yùn)行中,所述頁(yè)面替換端口監(jiān) 控程序釋放足夠的頁(yè)面,以便在末尾空閑幀的數(shù)量達(dá)到max—free。
當(dāng)前這些參數(shù)需要由系統(tǒng)管理員明確地輸入,以便將VMM的性能調(diào)整 為適合于在OS中運(yùn)行的應(yīng)用的需要。因?yàn)檫@種調(diào)整需要人為的輸入,因此 很少調(diào)整這些參數(shù),導(dǎo)致VMM的進(jìn)而OS的次最優(yōu)(sub-optimal)的性能。這 種調(diào)整的缺少轉(zhuǎn)換為IT組織的更多的成本。
發(fā)明內(nèi)容
本發(fā)明的目的是消除由系統(tǒng)管理員來(lái)人為調(diào)整WMM的必要以改善系統(tǒng)
具體上,本發(fā)明通過(guò)響應(yīng)于在OS中的改變的存儲(chǔ)器負(fù)荷而自動(dòng)改變VMM系 統(tǒng)參數(shù)的值來(lái)使得VMM系統(tǒng)參數(shù)的調(diào)整自主化。
本發(fā)明提供了一種用于通過(guò)響應(yīng)于OS的存儲(chǔ)器負(fù)荷而自動(dòng)改變被稱為 低門限值(lowerthreshold)的參數(shù)來(lái)改善在OS中的存儲(chǔ)器可用性的方法。當(dāng)當(dāng) 前的空閑存儲(chǔ)器空間變得低于所述低門限值時(shí),建立更多的空閑存儲(chǔ)器空間。
本發(fā)明的一個(gè)更具體的優(yōu)選實(shí)施例提供了一種方法,用于通過(guò)將空閑存 儲(chǔ)器空間的低門限值設(shè)置為初始值、并且當(dāng)當(dāng)前的"線程等待率"與目標(biāo)"線 程等待率"不同時(shí)自動(dòng)改變這個(gè)低門限值來(lái)自動(dòng)地調(diào)整OS的存儲(chǔ)器管理器, 其中,"線程等待率"是在指定的時(shí)間間隔上每單位時(shí)間等待的線程的數(shù)目。 當(dāng)存儲(chǔ)器空間降低到低于所述低門限值時(shí),存儲(chǔ)器管理器將然后啟動(dòng)用于使 得更多的存儲(chǔ)器空間可用的操作。
在說(shuō)明書的結(jié)尾的權(quán)利要求中具體指出和清楚地聲明了被視為本發(fā)明的 主題。由下面的詳細(xì)說(shuō)明并結(jié)合下述附圖,本發(fā)明的前述和其它特征和優(yōu)點(diǎn) 將很清楚。
圖1示出了典型計(jì)算機(jī)操作系統(tǒng)的主要子系統(tǒng)。
圖2示出了在實(shí)現(xiàn)當(dāng)前的頁(yè)面替換算法中使用的數(shù)據(jù)結(jié)構(gòu)。
圖3示出了當(dāng)前的頁(yè)面替換算法的流程圖。
圖4示出了在一個(gè)優(yōu)選實(shí)施例中使用來(lái)實(shí)現(xiàn)頁(yè)面替換端口監(jiān)控程序的動(dòng) 態(tài)自主調(diào)整的數(shù)據(jù)結(jié)構(gòu)。
圖5示出了本發(fā)明的新頁(yè)面替換算法的流程圖。
圖6示出了 LRU端口監(jiān)控程序如何關(guān)于時(shí)間改變min—free和max—free。 圖7是按照其可以實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)部件/方法的計(jì)算系統(tǒng)的說(shuō)明 性硬件實(shí)現(xiàn)方式的圖。
具體實(shí)施例方式
參見(jiàn)圖1,典型的操作系統(tǒng)核心10由幾個(gè)部件構(gòu)成,所述部件是虛擬存
儲(chǔ)器管理器(VMM)20、進(jìn)程管理器(process manager)30、文件系統(tǒng)40、聯(lián)網(wǎng) 子系統(tǒng)50等。文件系統(tǒng)40對(duì)于硬盤驅(qū)動(dòng)器進(jìn)行結(jié)構(gòu)化存取。進(jìn)程管理器向 處理器上調(diào)度進(jìn)程和線程,而聯(lián)網(wǎng)子系統(tǒng)使得應(yīng)用可以與其他的機(jī)器或計(jì)算 機(jī)通信,本發(fā)明涉及操作系統(tǒng)(OS)的虛擬存儲(chǔ)器管理器部件,并且在本申請(qǐng) 中未說(shuō)明其他的部件,因?yàn)樗鼈兪窃诒绢I(lǐng)域中公知的。圖2示出了 VMM 20 維持來(lái)管理系統(tǒng)存儲(chǔ)器的一些數(shù)據(jù)結(jié)構(gòu)。VMM 20維持一個(gè)或多個(gè)空閑列表 21以跟蹤在實(shí)際存儲(chǔ)器中的空閑頁(yè)面幀22。 VMM20還在變量nfree63中維 持空閑幀的總數(shù)。當(dāng)對(duì)于空閑頁(yè)面的請(qǐng)求到來(lái)時(shí),VMM 20將查看是否nfree 大于O,如果如此,則它搜索其空閑列表21以獲得空閑頁(yè)面。當(dāng)nfree 63的 值低于低門限值min一free 61時(shí),VMM 20調(diào)用所述頁(yè)面替換端口監(jiān)控程序(也 稱為L(zhǎng)RU端口監(jiān)控程序)25來(lái)啟動(dòng)頁(yè)出,以通過(guò)將使用中的頁(yè)面幀23的內(nèi)容 趕出到盤51而建立空閑頁(yè)面幀22。在本部分中描述的所述實(shí)施例示例中, 通過(guò)被稱為頁(yè)面替換端口監(jiān)控程序(Page Replacement Daemon)的獨(dú)立處理來(lái) 實(shí)現(xiàn)這個(gè)頁(yè)出。所述頁(yè)面替換端口監(jiān)控程序?qū)㈨?yè)出足夠數(shù)目的頁(yè)面幀,以便 在其運(yùn)行的結(jié)尾,"力'ee將大于或等于mflx_>ee。對(duì)于空閑頁(yè)面幀的所有未完 成的請(qǐng)求被排隊(duì)在等待列表32上,如圖2中所示。當(dāng)空閑頁(yè)面幀變得以后可 用時(shí),請(qǐng)求線程33被喚醒。在圖3中示出了由所述頁(yè)面替換端口監(jiān)控程序使用的高級(jí)算法。方框101 表示當(dāng)小于脂'"Jree時(shí)頁(yè)面替換端口監(jiān)控程序的調(diào)用。在102,所述頁(yè) 面替換端口監(jiān)控程序通過(guò)從maxj^ee 61減去"/ree 63而計(jì)算要頁(yè)出的頁(yè)面的 數(shù)目。在103中,它掃描所述使用中的頁(yè)面幀列表23以找到要趕出的適當(dāng)候 選者。 一旦所述頁(yè)面替換端口監(jiān)控程序開始掃描存儲(chǔ)器以選擇要趕出的候選 頁(yè)面,則存在用于確定哪些特定頁(yè)面將被頁(yè)出的幾種可能的策略。本發(fā)明不 依賴于用于選擇要趕出的候選頁(yè)面的任何具體策略。在趕出在102中所計(jì)算 的數(shù)目的頁(yè)面后,所述頁(yè)面替換端口監(jiān)控程序再次在104中查看是否w/ree仍 然小于wax_>ee。如果頁(yè)面幀在它們被釋放后被立即消耗則會(huì)如此。如果在 104的斷言評(píng)價(jià)為真,則采取分支106,并且它重新開始步驟102。否則,采 取分支105,并且所述頁(yè)面替換端口監(jiān)控程序在107返回以休眠。在給出上述說(shuō)明的情況下,可以觀察到VMM的頁(yè)面替換端口監(jiān)控程序 的目標(biāo)是使在等待列表32上具有太多空閑頁(yè)面請(qǐng)求者33的成本與過(guò)早地趕 出太多使用中的頁(yè)面24的成本平衡,本發(fā)明通過(guò)提供用于確定參數(shù)w/"jee 61和warJ&e 62的最優(yōu)值并且隨著等待空閑幀的等待者的數(shù)目的改變而在 進(jìn)行中的基礎(chǔ)上調(diào)整這些參數(shù)的機(jī)制而解決了該問(wèn)題。圖4示出了實(shí)現(xiàn)本發(fā)明所需要的在所述優(yōu)選實(shí)施例中的數(shù)據(jù)結(jié)構(gòu)。我們 需要連續(xù)地監(jiān)控請(qǐng)求者的數(shù)目和每個(gè)請(qǐng)求者花費(fèi)在等待空閑幀的等待列表中 的時(shí)間量。通過(guò)保存變量AW—wi 35來(lái)實(shí)現(xiàn)此任務(wù)。如下更新thrc^wait的 值。每當(dāng)將線程33排隊(duì)到等待列表32上時(shí),操作系統(tǒng)在每個(gè)線程變量 wazWW—e 《Me—"me 36中記錄所述線程入隊(duì)的時(shí)間。當(dāng)在空閑頁(yè)面變得可以4皮 獲得時(shí)線程最終出隊(duì)時(shí),OS將從當(dāng)前時(shí)間減去e"《we—36以找出 所述線程已經(jīng)在等待列表中花費(fèi)的總的時(shí)間。OS然后將這個(gè)總的時(shí)間轉(zhuǎn)換為 時(shí)鐘嘀噠聲(clock tic),并且將其加到//zW—wm' 35計(jì)數(shù)器,從而所述AW—w^Y 35計(jì)數(shù)器包含所有的線程一起已經(jīng)在等待列表中花費(fèi)的時(shí)鐘嘀。達(dá)的總的時(shí)間 量。這個(gè)計(jì)數(shù)器將由頁(yè)面替換端口監(jiān)控程序復(fù)位,我們將在圖5中描述這一 點(diǎn)。因此,thrd一wait35計(jì)數(shù)器包含在頁(yè)面替換端口監(jiān)控程序的兩個(gè)運(yùn)行之間 的某點(diǎn)被入隊(duì)到等待列表并且以后被從之清出隊(duì)列的所有線程的總的等待時(shí) 間。所述頁(yè)面替換端口監(jiān)控程序保存另 一個(gè)變量Ara^HwY—ra^ 37,它是每個(gè) 時(shí)鐘嘀噠等待的線程的平均數(shù)量。它以每個(gè)clock一tic(時(shí)鐘嘀噠)的計(jì)數(shù)為單位 被保存,以便這個(gè)值在具有不同CPU頻率的系統(tǒng)上被規(guī)格化(normalized)。每 次取消(kick off)頁(yè)面替換端口監(jiān)控程序時(shí),將AW一waz'^rate 37的值計(jì)算為自 從上一運(yùn)行起所有線程已經(jīng)花費(fèi)在等待上的累積的總時(shí)間量和在兩個(gè)運(yùn)行之 間包含的時(shí)鐘嘀噠的數(shù)目的比率。所述頁(yè)面替換端口監(jiān)控程序也保存另一個(gè) 變量39,它用于計(jì)算如上所述在兩個(gè)運(yùn)行之間的所包含時(shí)鐘嘀噠的 數(shù)目。最后,由所述頁(yè)面替換端口監(jiān)控程序使用圖4中給出的 fAra —HwY—ra e—/g 38值來(lái)計(jì)算必須將和wax改變多少。在圖5中給出的流程圖總結(jié)了頁(yè)面替換端口監(jiān)控程序的新行為。方框201 表示當(dāng)"/ree<mz> 時(shí)的頁(yè)面替換端口監(jiān)控程序的調(diào)用。在202中,所述頁(yè) 面替換端口監(jiān)控程序計(jì)算自從上次運(yùn)行起過(guò)去的時(shí)間和自從上次運(yùn)行起所有 線程在等待列表中已經(jīng)花費(fèi)的時(shí)鐘嘀噠的總的時(shí)間量。所述過(guò)去的時(shí)間通過(guò) 讀取當(dāng)前系統(tǒng)時(shí)間和減去先前記錄的WW jz'me 39值來(lái)計(jì)算。自從上次運(yùn)行起 所有線程已經(jīng)等待的總的時(shí)間量由兩個(gè)部分構(gòu)成。第 一 部分是當(dāng)前不在等待 列表中的線程的總的等待時(shí)間。這被OS保存在所述^^^wa/Z計(jì)數(shù)器中。第 二部分是仍然在等待列表中的線程已經(jīng)在隊(duì)列中花費(fèi)的總的時(shí)間。所述頁(yè)面 替換端口監(jiān)控程序25通過(guò)下述方式來(lái)計(jì)算這個(gè)第二部分穿過(guò)(walk through) 等待列表32,從當(dāng)前時(shí)間減去每個(gè)線程的wt^foLeW"ej/me 36,并且對(duì)所 有的等待時(shí)間求和。通過(guò)將上述值加到wm'/計(jì)數(shù)器35來(lái)計(jì)算所有線程 一 一無(wú)論在等待列表中或出了等待列表一 一 的等待時(shí)間。用于計(jì)算所有線程的總的等待時(shí)間的一種替代機(jī)制是每個(gè)時(shí)鐘嘀噠輪詢 等待列表一次,以對(duì)在等待列表中的線程的數(shù)目進(jìn)行計(jì)數(shù),并且將其加到vra"計(jì)數(shù)器上。在這種情況下,所述頁(yè)面替換端口監(jiān)控程序不必在每個(gè) 運(yùn)行的開始穿過(guò)所述等待列表。缺點(diǎn)是OS必須在每個(gè)時(shí)鐘嘀噠進(jìn)行附加的 工作,這可能是太多的開銷。當(dāng)頁(yè)面替換端口監(jiān)控程序在202計(jì)算所述過(guò)去的時(shí)間和總的線程等待時(shí) 間時(shí),它也將時(shí)間郵戳值s時(shí)Wwe和每個(gè)線程的wazY//W —ewqwe—"'we復(fù)4立至!J在 讀取那些變量后即刻的當(dāng)前的系統(tǒng)時(shí)間。它也將把wa"—復(fù)位到0, 以便這個(gè)計(jì)數(shù)器包含從現(xiàn)在起將通過(guò)等待列表的所有線程的等待時(shí)間。在203 中,所述頁(yè)面替換端口監(jiān)控程序通過(guò)將總的線程等待時(shí)間除以所述過(guò)去的時(shí) 間而計(jì)算wak—廠^e 36。在204,它才艮沖居在如上計(jì)算的A/W—vra//—ra/e和預(yù) i殳的目標(biāo)值A(chǔ)7"c/—wa"—/'afejg〖之間的差重新計(jì)算脂'"j9"ee 61和waxj9"ee 62 4直,如下所述。如果//zrc/_wfi^—raz^大于決rc/—wazYjgZ,則應(yīng)當(dāng)提高期望的腿'"j^ee值, 并且如果wazY—rate小于wa"—《"則應(yīng)當(dāng)減4氐期望的j^ee {i。 在所述實(shí)施例示例中,期望的如下計(jì)算。^月望^ =肌/ jee*z7v(i—wa"一rate〃/zni—wa"—7'a,e—Zg,所述m/w_>ee參數(shù)被更新為期望的腿'"J^ee值和當(dāng)前值的平均值。這個(gè)平均 將相對(duì)于由于在工作負(fù)荷中的尖峰(spike)而導(dǎo)致的振蕩提供進(jìn)行一點(diǎn)抑制 (damp)。也可以對(duì)于可以被頁(yè)面替換端口監(jiān)控程序更新的w/"_>ee值施加上 限,以便避免系統(tǒng)失效(thrash)。所述 wax參數(shù),皮更新以維持與在m/" jee的更新之前相同的在 max 和w/m 之間的間隙。示例讓我們4艮定將Arc/—waz' —ratejgf設(shè)置為1, ^!尋f/zW—計(jì)算 為1.5,并且,w'wj^e和max分別是120和128。期望的肌'"_>ee將是 120*1.5/1=180。所述頁(yè)面替換端口監(jiān)控程序?qū)/"J^ee改變?yōu)槠谕膍/" jee 和當(dāng)前的的平均值,它是120+180/2 = 150。 max的新值將是
150+(128-120)= 158??梢允褂脦讉€(gè)替代機(jī)制來(lái)從AW mwY 中的偏離計(jì)算期望的m/w__/^ee 值,而不是如上所述的簡(jiǎn)單線性近似。用于計(jì)算期望的w/"J"ree值的任何機(jī) 制應(yīng)當(dāng)遵守下述一般原則如果Ar《vra"—ra^> /zW—waW—ra^ jg/,則提高 附/"如果Ani—vva"一ra&〈^"^—waW一ra/e」g^, 則降4氐m/" Jee。在重新計(jì)算了 m&_>ee和值后,所述頁(yè)面替換端口監(jiān)控程序的 剩余步驟——205、 206、 207、 208、 209和210——分別類似于在圖3中的步 驟,即102、 103、 104、 105、 106和107。具體上,在205,頁(yè)面替換端口監(jiān) 控程序通過(guò)從maxj^e 61減去^ree 63而計(jì)算要頁(yè)出的頁(yè)面的數(shù)量。在206, 它掃描使用中的頁(yè)面幀列表以找出要趕出的適當(dāng)候選者。 一旦頁(yè)面替換端口 監(jiān)控程序開始掃描存儲(chǔ)器以選擇要趕出的候選頁(yè)面,則存在用于確定將頁(yè)出 哪些特定頁(yè)面的幾種可能的策略。本發(fā)明不依賴于用于選擇要趕出的候選頁(yè) 面的任何特定策略。在趕出在205中計(jì)算的多個(gè)頁(yè)面時(shí),頁(yè)面替換端口監(jiān)控 程序再次在207查看是否"々ee仍然小于moxJ"r^。如果頁(yè)面幀在它們被釋放 后立即被消耗則會(huì)發(fā)生這一點(diǎn)。如果在207中的斷言評(píng)價(jià)為真,則采取分支 209,并且步驟205再次開始。否則,采取分支208,并且頁(yè)面替換端口監(jiān)控 程序在210返回以休眠。圖6圖解了借助于時(shí)間線來(lái)如何計(jì)算Ar(wa/f—rate。箭頭3 81作為掛鐘時(shí)間(wall clock time)的基準(zhǔn)線。在3 81, 3個(gè)時(shí)間戳tsi 、 ts2和ts3表示所述頁(yè)面替換端口監(jiān)控程序的3個(gè)運(yùn)行的開始。在時(shí)間軸附近示 出的雙頭箭頭表示頁(yè)面替換端口監(jiān)控程序25的每次運(yùn)行用以完成的時(shí)間量。 可以從附圖觀察到頁(yè)面替換端口監(jiān)控程序的每次運(yùn)行需要不同的時(shí)間量來(lái)完 成。而且,在頁(yè)面替換端口監(jiān)控程序的2個(gè)連續(xù)實(shí)例之間的過(guò)去的時(shí)間不是 固定的。每個(gè)時(shí)間戳的TWJ直表示自從頁(yè)面替換端口監(jiān)控程序的上次運(yùn)行起 所有線程在等待隊(duì)列中花費(fèi)的總的時(shí)間量。使用wmY計(jì)數(shù)器和在等待列 表中的每個(gè)線程的w^/W—e",e一"we來(lái)計(jì)算TWn值,如在上面的段落中所 述。在所述實(shí)施例示例中,在系統(tǒng)初始化時(shí)間初始化各種參數(shù),如下所述 *脂'"61和wax 62被設(shè)置為某些默認(rèn)值。* 計(jì)凄史器和A7^/—vra"—37 4皮初始4匕為0* ratejg。8被初始化為特定值,并且*Wwe 39凈皮初始4匕為當(dāng)前時(shí)間。應(yīng)當(dāng)注意,可以即使在不保存在上述的實(shí)施例示例中的精確的 AW—wazY—rate值的情況下實(shí)現(xiàn)本發(fā)明。在本申請(qǐng)中所述的優(yōu)選實(shí)施例中,頁(yè) 面替換端口監(jiān)控程序通過(guò)在每次它被調(diào)用時(shí)穿這個(gè)等待列表而計(jì)算精確值wmY—rate。也可以通過(guò)計(jì)算的粗略估計(jì)值來(lái)實(shí)現(xiàn)本發(fā)明, 這可以降低實(shí)現(xiàn)的復(fù)雜性,而不大大地降低低于存儲(chǔ)器可用性的影響。在下 面的段落中,我們說(shuō)明用于計(jì)算的幾個(gè)替代方式。1) 系統(tǒng)可以除了 AW一mHY計(jì)數(shù)器之外還保存2個(gè)變量"Arafe—w""ecf和 "A^s—wa/""g。 "Ara^_wa"ec/將包含已經(jīng)貢獻(xiàn)于在wa"中的值的線程的 數(shù)量。w^ra^_H^Y/"g包含當(dāng)前在等待列表中的線程的數(shù)量。每當(dāng)一個(gè)線程離 開所述等待列表時(shí),更新這兩個(gè)變量;當(dāng)一個(gè)線程被排入隊(duì)到等待列表中時(shí) 也更新"AWs—wa出"g。在給出這些變量的情況下,頁(yè)面替換端口監(jiān)控程序可 以計(jì)算fW一而(rafe如下(當(dāng)前時(shí)間-WW—^吏用這種實(shí)現(xiàn)方式下消除了維持每個(gè)線程的e"g認(rèn)」/me的必要。2) 可以通過(guò)忽略從等待列表取出的線程而進(jìn)一步筒化所述估計(jì)。如果我 們忽略當(dāng)前不在等待列表上的線程,并且假定在等待列表上的線程以均勻的 時(shí)間間隔被排入隊(duì),則可以將Araf—筒單地計(jì)算為"A/A—wmY/"g/2。 這可以被得出如下。假定在等待列表上的第一線程在時(shí)間Tl被排入隊(duì),并且當(dāng)前時(shí)間是T2。因 為我們假定以均勻的時(shí)間間隔來(lái)將線程排隊(duì)到等待列表中,因此每個(gè)線程平 均等待(T2-T1)/2的時(shí)間量。當(dāng)前在等待列表中的所有線程的總的等待時(shí)間=("ArA—wm'fz'"g*(T2-Tl)/2) 過(guò)去的時(shí)間=(T2-T1)f/zni—麗"—=(T2-T 1 )/2)/(T2-T 1 )=" /zniy—而Wwg/2圖7是示出可用于實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的一種信息處理系統(tǒng)的高級(jí) 方框圖。計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)處理器,諸如處理器704。處理器704 連接到通信基礎(chǔ)架構(gòu)702(例如通信總線、交叉條或網(wǎng)絡(luò))。以這個(gè)例證計(jì)算機(jī) 系統(tǒng)的形式描述了各種軟件實(shí)施例。在讀取本說(shuō)明后,如何使用其他的計(jì)算
術(shù)人員變得顯然。所述計(jì)算機(jī)系統(tǒng)可以包括顯示接口 708,它轉(zhuǎn)發(fā)來(lái)自通信基礎(chǔ)架構(gòu)702 或來(lái)自未示出的幀緩沖器)的圖形、文本和其他數(shù)據(jù)以顯示在顯示單元710上。 所述計(jì)算機(jī)系統(tǒng)也包括主存儲(chǔ)器706,最好是隨機(jī)存取存儲(chǔ)器(RAM),并且也 可以包括輔助存儲(chǔ)器712。輔助存儲(chǔ)器712可以包括例如硬盤驅(qū)動(dòng)器714和/ 或可裝卸存儲(chǔ)驅(qū)動(dòng)器716,可裝卸存儲(chǔ)驅(qū)動(dòng)器716表示軟盤驅(qū)動(dòng)器、磁帶驅(qū) 動(dòng)器、光盤驅(qū)動(dòng)器等??裳b卸存儲(chǔ)驅(qū)動(dòng)器716以對(duì)于本領(lǐng)域內(nèi)的本領(lǐng)域內(nèi)的 普通技術(shù)人員公知的方式來(lái)對(duì)于可裝卸存儲(chǔ)單元718讀取和/或?qū)懭?。可裝卸 存儲(chǔ)單元718表示軟盤、致密盤、磁帶、光盤等,它被可裝卸存儲(chǔ)驅(qū)動(dòng)器716 讀取和寫入??梢悦靼?,所述可裝卸存儲(chǔ)單元718包括計(jì)算機(jī)可讀介質(zhì),其 中存儲(chǔ)了計(jì)算機(jī)軟件和/或數(shù)據(jù)。在替代實(shí)施例中,輔助存儲(chǔ)器712可以包括其他的類似部件,用于使得 計(jì)算機(jī)程序或其他指令可以被安裝到計(jì)算機(jī)系統(tǒng)中。這樣的部件可以包括例 如可裝卸存儲(chǔ)單元722和接口 720。這樣的示例可以包括程序盒(cartridge)和 盒接口(諸如在視頻游戲機(jī)中可發(fā)現(xiàn)的)、可裝卸存儲(chǔ)器芯片(諸如EPROM或 PROM)和相關(guān)聯(lián)的插口 、使得軟件和數(shù)據(jù)可以從可裝卸存儲(chǔ)單元722被傳送 到計(jì)算機(jī)系統(tǒng)的其他可裝卸存儲(chǔ)單元722和接口 720。所述計(jì)算機(jī)系統(tǒng)也可以包括通信接口 724。通信接口 724使得可以在通 信系統(tǒng)和外部器件之間傳送軟件和數(shù)據(jù)。通信接口 724的示例可以包括調(diào)制 解調(diào)器、網(wǎng)絡(luò)接口(諸如以太網(wǎng)卡)、通信端口、 PCMCIA插槽和卡等。經(jīng)由 通信接口 724而傳送的軟件和數(shù)據(jù)是以可以是例如能夠被通信接口 724接收 的電、電磁、光或其他信號(hào)的信號(hào)的形式。這些信號(hào)經(jīng)由通信路徑(即信道)726 被提供到通信接口 724。這個(gè)信道726承載信號(hào),并且可以使用線路或電纜、 光纖、電話線、蜂窩電話鏈路、射頻鏈路和/或其他通信信道而被實(shí)現(xiàn)。在本文中,術(shù)語(yǔ)"計(jì)算機(jī)程序介質(zhì)"、"計(jì)算機(jī)可用介質(zhì)"和"計(jì)算機(jī)可 讀介質(zhì)" 一般用于指示媒體,諸如主存儲(chǔ)器706和輔助存儲(chǔ)器712、可拆卸 存儲(chǔ)器驅(qū)動(dòng)器716、在硬盤驅(qū)動(dòng)器714中安裝的硬盤以及信號(hào)。這些計(jì)算機(jī) 程序產(chǎn)品是用于向計(jì)算機(jī)系統(tǒng)提供軟件的手段。所述計(jì)算機(jī)可讀介質(zhì)使得計(jì) 算機(jī)系統(tǒng)可以從計(jì)算機(jī)可讀介質(zhì)讀取數(shù)據(jù)、指令、消息或消息分組以及其他 計(jì)算機(jī)可讀信息。所述計(jì)算機(jī)可讀介質(zhì)例如可以包括非易失性存儲(chǔ)器,諸如 軟盤、ROM、快閃存儲(chǔ)器、盤驅(qū)動(dòng)存儲(chǔ)器、CD-ROM和其他永久存儲(chǔ)器。它
可用于例如在計(jì)算機(jī)系統(tǒng)之間傳送諸如數(shù)據(jù)和計(jì)算機(jī)指令的信息。而且,所 述計(jì)算機(jī)可讀介質(zhì)可以包括在暫時(shí)狀態(tài)介質(zhì)中的計(jì)算機(jī)可讀信息,所述暫時(shí)狀態(tài)介質(zhì)諸如網(wǎng)絡(luò)鏈路和/或網(wǎng)絡(luò)接口 ,包括使得計(jì)算機(jī)可以讀取這樣的計(jì)算 機(jī)可讀信息的有線網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)。計(jì)算機(jī)程序(也被稱為計(jì)算機(jī)控制邏輯)被存儲(chǔ)在主存儲(chǔ)器706和/或輔助 存儲(chǔ)器712中。也可以經(jīng)由通信接口 724來(lái)接收計(jì)算機(jī)程序。這樣的計(jì)算機(jī) 程序當(dāng)被執(zhí)行時(shí)使得計(jì)算機(jī)系統(tǒng)能夠執(zhí)行在此所述的本發(fā)明的特征。具體上, 所述計(jì)算機(jī)系統(tǒng)當(dāng)被執(zhí)行時(shí)使得處理器704能夠執(zhí)行所述計(jì)算機(jī)系統(tǒng)的特征。因此,這樣的計(jì)算機(jī)程序表示計(jì)算機(jī)系統(tǒng)的控制器。雖然已經(jīng)公開了本發(fā)明的特定實(shí)施例,^f旦是本領(lǐng)域內(nèi)的普通技術(shù)人員可 以明白可以在不脫離本發(fā)明的精神和范圍的情況下對(duì)于所述特定實(shí)施例進(jìn)行 改變。因此,本發(fā)明的范圍不限于所述特定實(shí)施例。而且,所附的權(quán)利要求意欲涵蓋在本發(fā)明的范圍內(nèi)的任何和所有的這樣 的應(yīng)用、修改和實(shí)施例。
權(quán)利要求
1. 一種用于管理在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器可用性的方法,所述方法包括 作為存儲(chǔ)器負(fù)荷的函數(shù)自動(dòng)地改變空閑存儲(chǔ)器空間的低門限值;并且當(dāng)空閑存儲(chǔ)器空間小于所述低門限值時(shí),使得更多的存儲(chǔ)器空間可用。
2. —種用于管理在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器可用性的方法,所述方法包括 當(dāng)線程等待率變得與目標(biāo)線程等待率不同時(shí),自動(dòng)改變所述低門限值,所述線程等待率是每單位時(shí)間在空閑存儲(chǔ)器等待列表中等待的線程的平均數(shù) 目;以及當(dāng)空閑存儲(chǔ)器空間小于所述低門限值時(shí),使得更多的存儲(chǔ)器空間可用。
3. 按照權(quán)利要求2的方法,其中,當(dāng)所述線程等待率變得高于所述目標(biāo) 線程等待率時(shí),提高所述低門限值。
4. 按照權(quán)利要求2的方法,其中,當(dāng)所述線程等待率變得低于所述目標(biāo) 線程等待率時(shí),降低所述低門限值。
5. 按照權(quán)利要求2的方法,其中,當(dāng)所述線程等待率變得高于所述目標(biāo) 線程等待率時(shí),提高高門限值,其中,所述高門限值用于確定當(dāng)執(zhí)行頁(yè)面替 換端口監(jiān)控程序時(shí)將使得可用的存儲(chǔ)器空間的數(shù)量。
6. 按照權(quán)利要求2的方法,其中,當(dāng)所述線程等待率變得低于所述目標(biāo) 線程等待率時(shí)降低高門限值,其中,所述高門限值用于確定當(dāng)執(zhí)行頁(yè)面替換 端口監(jiān)控程序時(shí)將使得可用的存儲(chǔ)器空間的數(shù)量。
7. 按照權(quán)利要求2的方法,其中,可以通過(guò)下述方式來(lái)計(jì)算所述線程等 待率對(duì)由已經(jīng)在空閑存儲(chǔ)器等待列表中等待的所有線程花費(fèi)的時(shí)鐘嘀噠的 累積數(shù)目計(jì)數(shù),并且將所述累積數(shù)目除以在所述頁(yè)面替換端口監(jiān)控程序的兩 個(gè)連續(xù)執(zhí)行之間的時(shí)鐘嘀噠的總數(shù)。
8. 按照權(quán)利要求7的方法,其中,所述線程包括第一線程,它們當(dāng)前 在所述空閑存儲(chǔ)器等待列表中;第二線程,它們?cè)谒鲰?yè)面替換端口監(jiān)控程 序的所述兩個(gè)連續(xù)執(zhí)行的第一個(gè)之后曾在所述空閑存儲(chǔ)器等待中,其中,所 述第二線程不再在所述空閑存儲(chǔ)器等待列表中。
9. 按照權(quán)利要求2的方法,其中,所述線程等待率可以通過(guò)將在空閑存 儲(chǔ)器等待列表中的線程的當(dāng)前數(shù)目除以一個(gè)數(shù)來(lái)計(jì)算。
10. 按照權(quán)利要求9的方法,其中,所述數(shù)是整數(shù)2。
11. 按照權(quán)利要求2的方法,其中,當(dāng)空閑存儲(chǔ)器空間低于所述低門限 值時(shí),執(zhí)行頁(yè)面替換端口監(jiān)控程序,其中,所述頁(yè)面替換端口監(jiān)控程序使得 更多的存儲(chǔ)器空間可用。
12. 按照權(quán)利要求ll的方法,其中,如果空閑存儲(chǔ)器幀的數(shù)目小于低門 限值,則執(zhí)行所述頁(yè)面替換端口監(jiān)控程序,并且其中,所述頁(yè)面替換端口監(jiān) 控程序包括釋放多個(gè)幀,以便空閑幀的數(shù)目達(dá)到所述高門限值。
13. —種可由數(shù)字處理裝置讀取并且具有下述指令的程序的程序存儲(chǔ)器 件所述指令被確實(shí)地具體化在所述存儲(chǔ)器件上,并且可由所述處理裝置執(zhí) 行來(lái)執(zhí)行用于管理在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器可用性的方法,所述方法包括作為存儲(chǔ)器負(fù)荷的函數(shù)自動(dòng)地改變空閑存儲(chǔ)器空間的低門限值;并且 當(dāng)空閑存儲(chǔ)器空間小于所述低門限值時(shí),使得更多的存儲(chǔ)器空間可用。
14. 一種用于管理在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器可用性的裝置,所述裝置包括用于作為存儲(chǔ)器負(fù)荷的函數(shù)自動(dòng)地改變空閑存儲(chǔ)器空間的低門限值的部 件;并且用于當(dāng)空閑存儲(chǔ)器空間小于所述低門限值時(shí),使得更多的存儲(chǔ)器空間可 用的部件。
全文摘要
一種方法、信息處理系統(tǒng)和計(jì)算機(jī)可讀介質(zhì),用于在操作系統(tǒng)實(shí)例中運(yùn)行的應(yīng)用之間有效地分配計(jì)算機(jī)系統(tǒng)的主存儲(chǔ)器。具體上,響應(yīng)于在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器上的負(fù)荷來(lái)自動(dòng)調(diào)整由虛擬存儲(chǔ)器管理器的頁(yè)面替換算法使用的門限值。一個(gè)這樣的門限值是作為在存儲(chǔ)器上的負(fù)荷的函數(shù)而改變的空閑存儲(chǔ)器的低門限值。例如,這樣的負(fù)荷可以被表示為在限定的時(shí)間間隔期間被加到等待隊(duì)列的線程的數(shù)量除以在那個(gè)間隔中的時(shí)鐘嘀噠的數(shù)量。這種表示被稱為線程等待率。然后將這個(gè)比率與目標(biāo)率相比較以確定是否應(yīng)當(dāng)改變?cè)摰烷T限值。當(dāng)空閑存儲(chǔ)器空間低于該低門限值時(shí),使用頁(yè)面替換端口監(jiān)控程序來(lái)頁(yè)出存儲(chǔ)器以使得可以獲得更多的存儲(chǔ)器空間。
文檔編號(hào)G06F9/00GK101124551SQ200580014596
公開日2008年2月13日 申請(qǐng)日期2005年5月4日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者喬方·詹恩, 普拉塔普·C·帕特奈克, 曼賈尼亞·S·伯拉古拉 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司