專(zhuān)利名稱(chēng):管理資源爭(zhēng)用的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種方法和裝置,用于在信息管理系統(tǒng)中管理那些訪(fǎng)問(wèn)串行化資源的用戶(hù)之間對(duì)資源的爭(zhēng)用。
背景技術(shù):
資源爭(zhēng)用是信息管理系統(tǒng)中的公知現(xiàn)象。當(dāng)一個(gè)用戶(hù)(例如一個(gè)進(jìn)程或其他工作單元)試圖訪(fǎng)問(wèn)一個(gè)已被另一用戶(hù)持有的資源,而且這第二個(gè)用戶(hù)所請(qǐng)求的訪(fǎng)問(wèn)與第一個(gè)用戶(hù)請(qǐng)求的訪(fǎng)問(wèn)不一致時(shí),便會(huì)發(fā)生資源爭(zhēng)用。例如,如果其中任何一個(gè)用戶(hù)在請(qǐng)求對(duì)所考慮的資源進(jìn)行排他性訪(fǎng)問(wèn)時(shí),就將發(fā)生這種情況。資源管理器是軟件組件,它們管理競(jìng)爭(zhēng)的請(qǐng)求者對(duì)它們控制的資源的爭(zhēng)用,其作法是允許一個(gè)或多個(gè)這樣的用戶(hù)作為持有者訪(fǎng)問(wèn)該資源,而把其余的所有用戶(hù)放在等待者池中直至該資源變?yōu)榭捎脮r(shí)為止。
在具有多個(gè)資源管理器和多個(gè)工作單元的計(jì)算機(jī)操作系統(tǒng),如IBMz/OSTM操作系統(tǒng)中,資源爭(zhēng)用管理是一個(gè)復(fù)雜的問(wèn)題。爭(zhēng)用鏈能夠形成,或換句話(huà)說(shuō),爭(zhēng)用能跨越資源。例如,作業(yè)A等待資源R1但持有R2,而作業(yè)B持有R1但在等待R3,而R3又被作業(yè)R3持有。爭(zhēng)用能跨越系統(tǒng)。在上例中,每個(gè)作業(yè)可以在一個(gè)單獨(dú)系統(tǒng)上。爭(zhēng)用可以跨越資源管理器。例如R1能是一個(gè)GRS隊(duì)列,而R2能是一個(gè)DB2TM閂鎖。z/OS的全局資源串行化(GRS)組件管理隊(duì)列,而IMSTM資源鎖管理器(IRLM)另行管理DB2資源。
通常是通過(guò)追蹤每個(gè)資源的持有者和等待者的拓?fù)潢P(guān)系和找出任何交會(huì)點(diǎn),在單個(gè)資源管理器(如GRS)內(nèi)解決跨資源爭(zhēng)用。通常是通過(guò)使資源管理器知道整個(gè)群集的數(shù)據(jù)(把群集作為一個(gè)單元而不是作為各獨(dú)立系統(tǒng)來(lái)管理)來(lái)解決跨系統(tǒng)爭(zhēng)用。通常是讓一個(gè)報(bào)告產(chǎn)品查詢(xún)?nèi)拷涌诓⑹箶?shù)據(jù)相關(guān),如同它是一個(gè)虛擬資源管理器,以此“解決”跨資源管理器的爭(zhēng)用。因?yàn)樵搯?wèn)題是爭(zhēng)用資源個(gè)數(shù)的O(2n)量級(jí),所以它在計(jì)算上也是復(fù)雜的。
z/OS的基本MVSTM組件有一個(gè)簡(jiǎn)單有效的解決方案(通常稱(chēng)作“隊(duì)列促進(jìn)”(enqueue promotion))自動(dòng)地(和暫時(shí)地)促進(jìn)持有被報(bào)告為處于爭(zhēng)用狀態(tài)的資源的任何工作單元對(duì)CPU和MPL的訪(fǎng)問(wèn),并不注意該工作單元的需要。這等效于管理一個(gè)持有者,如同存在對(duì)一資源的“重要”請(qǐng)求者,而不管實(shí)際的拓?fù)潢P(guān)系如何。為理解這一操作,考慮下述舉例。假定1.作業(yè)A持有資源R1。
2.作業(yè)B持有資源R2并等待R1。
3.作業(yè)C等待R2。以符號(hào)表示,這能表示為一個(gè)鏈C→B→A,這里大寫(xiě)字母代表作業(yè),符號(hào)“→”(鏈中的“鏈接”)表明符號(hào)左邊的作業(yè)在等待符號(hào)右邊的作業(yè)所持有的資源。這樣,上述鏈意味著作業(yè)C等待由作業(yè)B持有的資源,而作業(yè)B又在等待由作業(yè)A持有的資源。
假定這些資源是GRS資源,傳統(tǒng)的MVS實(shí)現(xiàn)將會(huì)幫助作業(yè)A和B,因?yàn)樗鼈兂钟刑幱跔?zhēng)用狀態(tài)的資源,等同地并在有限時(shí)間內(nèi)促進(jìn)每個(gè)作業(yè)。然而,幫助B沒(méi)什么好處,因?yàn)槭聦?shí)上B在等待A。如果B本身是多任務(wù)的,則這種幫助在實(shí)際上可能傷害競(jìng)爭(zhēng)的工作而關(guān)于資源爭(zhēng)用沒(méi)有做任何事情。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)方面,這是本申請(qǐng)的主題,包括一個(gè)方法和裝置,用于管理那些訪(fǎng)問(wèn)信息管理系統(tǒng)中的資源的用戶(hù)之間對(duì)資源的爭(zhēng)用,在該信息管理系統(tǒng)中每個(gè)用戶(hù)有被賦予的需求,并且能是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者。根據(jù)本發(fā)明的這一方面,識(shí)別在用戶(hù)鏈中打頭的不是等待者的用戶(hù),在該用戶(hù)鏈中每個(gè)在該鏈中有下一個(gè)用戶(hù)的用戶(hù)持有其下一個(gè)用戶(hù)正在等待的資源。管理該鏈中打頭的那個(gè)用戶(hù),如同它的需求至少是該鏈中最有需求的等待者的需求,其優(yōu)選的作法是把系統(tǒng)資源分配給該用戶(hù),如同它的需求至少是這種最有需求的等待者的需求。
優(yōu)選地,并作為本發(fā)明這一方面的一個(gè)獨(dú)立的發(fā)明特性,通過(guò)識(shí)別出一個(gè)資源群集,其中,該群集中的每個(gè)資源或者由等待該群集中另一個(gè)資源的一個(gè)用戶(hù)所持有,或者由持有該群集中另一資源的一個(gè)用戶(hù)所等待,并通過(guò)確定該群集中任何資源的最有需求的等待者的需求,以此來(lái)識(shí)別這樣的爭(zhēng)用鏈。識(shí)別出一個(gè)用戶(hù),它是該群集中一個(gè)資源的持有者并且不是在等待任何其他資源,并管理該資源的那個(gè)持有者,如同它的需求至少是對(duì)該群集中任何資源的最有需求的等待者的需求,再次地其優(yōu)選的作法是把系統(tǒng)資源分配給該用戶(hù),如同它的需求至少是這種最有需求的等待者的需求。
優(yōu)選地,識(shí)別群集的步驟是對(duì)收到一個(gè)資源爭(zhēng)用狀態(tài)變化的通知作出響應(yīng)而進(jìn)行的。這樣,如果一個(gè)資源現(xiàn)在被等待一個(gè)群集中另一資源的用戶(hù)所持有或者被持有該群集中另一資源的用戶(hù)所等待,則該資源便被重新賦予該群集。另一方面,如果一個(gè)資源不再被等待一個(gè)群集中另一資源的用戶(hù)所持有或者不再被持有該群集中另一資源的用戶(hù)所等待,則該資源便被從該群集中去掉。
這樣,本發(fā)明的這一方面企圖把“需求”因子集成到基本系統(tǒng)資源分配機(jī)制中,從而使在鏈中打頭的作業(yè)(如上述作業(yè)A,其需求因子為4)能夠運(yùn)行,如同它的需求因子是該鏈上別處的一個(gè)更有需求的作業(yè)的需求因子(例如上述作業(yè)C,其需求因子為1),直至它釋放該資源為止。把需求的概念加到先前的例子中,人們能更好地理解它的表現(xiàn)有何不同。假定1.具有“需求”4的作業(yè)A持有資源R1。(在這一說(shuō)明書(shū)中,較低的數(shù)字表示較大的需求,所以它們能被認(rèn)為是“求助優(yōu)先級(jí)”。)
2.具有需求5的作業(yè)B持有資源R2并等待R1。
3.具有需求1的作業(yè)C等待R2。以符號(hào)表示,這能表示為C(1)→B(5)→A(4),這里大寫(xiě)字母代表作業(yè),括號(hào)內(nèi)的數(shù)字代表那些作業(yè)的“需求”,而符號(hào)“→”(鏈中的“鏈接”)表明符號(hào)左邊的作業(yè)在等待符號(hào)右邊的作業(yè)所持有的資源。這樣,上述鏈意味著具有需求1的作業(yè)C等待由具有需求5的作業(yè)B持有的資源,而作業(yè)B又在等待由具有需求4的作業(yè)A持有的資源。
以這種方式使用“需求”因子給出若干可能是非顯而易見(jiàn)的好處。首先,它避免幫助如上述B那樣的作業(yè),因?yàn)槲覀兝斫釨也是在等待另一資源,從而避免了一個(gè)行動(dòng),該行動(dòng)最好情況下是無(wú)用的,而最壞情況下會(huì)傷害無(wú)關(guān)的競(jìng)爭(zhēng)作業(yè)。第二,它給予系統(tǒng)資源分配器以知識(shí),從而允許它給予A更多的否則它不會(huì)給予的幫助,而且是無(wú)限期地幫助,而不是只在有限時(shí)間內(nèi)幫助。盡管傳統(tǒng)的實(shí)現(xiàn)會(huì)忽略該鏈并在某一有限時(shí)間段把A和B二者作為“重要的”作業(yè)對(duì)待,但在本發(fā)明中,所理解的是,只要C在等待,A實(shí)際上便有需求1,或者說(shuō)是“最重要的”。第三,它給予系統(tǒng)資源分配器以知識(shí),從而允許它在希望時(shí)放棄幫助在該鏈中打頭的持有者,例如,如果在網(wǎng)絡(luò)中的最有需要的作業(yè)是當(dāng)前持有者的話(huà)。
本發(fā)明的該第一方面或者可以在單一系統(tǒng)上實(shí)現(xiàn),或者可以在含有多個(gè)這種系統(tǒng)的群集上實(shí)現(xiàn)。本發(fā)明的能識(shí)別資源群集的變體特別適于在多系統(tǒng)實(shí)現(xiàn)中使用,因?yàn)樗恍杈植繝?zhēng)用數(shù)據(jù)的一個(gè)子集的交換,如下文中描述的那樣。
本發(fā)明的另一方面,其是上文標(biāo)出的同時(shí)提交的申請(qǐng)的主題,構(gòu)想一個(gè)協(xié)議用于跨多個(gè)系統(tǒng)管理資源分配,而只需傳送極少量數(shù)據(jù),其數(shù)量約為爭(zhēng)用的多系統(tǒng)資源數(shù)的O(n)量級(jí)。
本發(fā)明的這另一方面加入了上述單系統(tǒng)發(fā)明的諸方面,其構(gòu)想一個(gè)方法和裝置用于管理訪(fǎng)問(wèn)含有多個(gè)系統(tǒng)的系統(tǒng)群集中的資源的那些用戶(hù)之間的爭(zhēng)用,每個(gè)用戶(hù)有被賦予的需求,而且能是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者。根據(jù)本發(fā)明的這一方面,每個(gè)作為本地系統(tǒng)運(yùn)行的這樣的系統(tǒng)存儲(chǔ)本地群集數(shù)據(jù),該數(shù)據(jù)指明基于該本地系統(tǒng)上的爭(zhēng)用把資源分組到本地群集中,并為每個(gè)本地群集指明對(duì)該本地群集中一個(gè)或多個(gè)資源的需求。每個(gè)系統(tǒng)還從該系統(tǒng)群集中作為遠(yuǎn)程系統(tǒng)運(yùn)行的其他系統(tǒng)中接收遠(yuǎn)程群集數(shù)據(jù),該數(shù)據(jù)為每個(gè)這樣的遠(yuǎn)程系統(tǒng)指出基于該遠(yuǎn)程系統(tǒng)上的爭(zhēng)用把這些資源分組到遠(yuǎn)程群集,并為每個(gè)遠(yuǎn)程群集指出對(duì)該遠(yuǎn)程群集中一個(gè)或多個(gè)資源的需求。每個(gè)本地系統(tǒng)把本地群集數(shù)據(jù)與遠(yuǎn)程群集數(shù)據(jù)組合以產(chǎn)生合成群集數(shù)據(jù),該數(shù)據(jù)指出根據(jù)跨系統(tǒng)爭(zhēng)用把資源分組到合成群集,并為每個(gè)合成群集指出對(duì)該合成群集中一個(gè)或多個(gè)資源的需求。于是,每個(gè)本地系統(tǒng)使用這一合成群集數(shù)據(jù)管理在該本地系統(tǒng)上的對(duì)合成群集中資源的持有者。
優(yōu)選地,本地的、遠(yuǎn)程的和合成的群集數(shù)據(jù)指出等待所考慮的群集中的任何資源的最有需要的等待者的需求,并且對(duì)本地系統(tǒng)上的合成群集中資源的持有者,是通過(guò)識(shí)別出不等待任何其他資源的持有者并把系統(tǒng)資源分配給這樣的持有者,如同它們的需求至少是對(duì)相應(yīng)合成群集中任何資源最有需求的等待者的需求,以此來(lái)進(jìn)行管理。
優(yōu)選地,每個(gè)本地系統(tǒng)將一對(duì)資源賦予一個(gè)共同的本地群集,如果該本地系統(tǒng)上的一個(gè)用戶(hù)在持有其中一個(gè)資源而在等待其中另一個(gè)資源的話(huà),并且響應(yīng)接收到與該本地系統(tǒng)上的用戶(hù)有關(guān)的一個(gè)資源爭(zhēng)用狀態(tài)變化的通知,更新該本地群集數(shù)據(jù)。每個(gè)本地系統(tǒng)還把它的本地群集數(shù)據(jù),包括任何更新,傳送給遠(yuǎn)程系統(tǒng),這些遠(yuǎn)程系統(tǒng)把被傳送的群集數(shù)據(jù)作為相對(duì)于接收系統(tǒng)的遠(yuǎn)程群集數(shù)據(jù)對(duì)待,然后相應(yīng)地更新它們的合成群集數(shù)據(jù)。被傳送的本地群集數(shù)據(jù)指出一個(gè)資源、根據(jù)在該本地系統(tǒng)上的爭(zhēng)用該資源被賦予的群集以及在該本地系統(tǒng)上對(duì)該資源的需求。
使用來(lái)自該群集中每個(gè)參加的資源管理器實(shí)例的部分?jǐn)?shù)據(jù)(不是全部資源拓?fù)?和“需求”的量度,每個(gè)系統(tǒng)能單個(gè)地理解對(duì)于一個(gè)資源的最有需要的等待者(包括跨“上述任何事物”資源的傳遞閉合(transitiveclosure)中的任何等待者)是否比該鏈中打頭的任何資源持有者更有需求。然后,該系統(tǒng)能把資源分配給這樣的持有者,如同它們的需求量度不小于最有需求的被阻塞的一個(gè)作業(yè)的需求。
該協(xié)議每個(gè)資源只傳送一組信息,而不是來(lái)自每個(gè)系統(tǒng)的全部持有者和等待者的列表,從而沒(méi)有任何系統(tǒng)具有跨越群集的爭(zhēng)用的完全視圖。該數(shù)據(jù)本身只包括群集唯一的資源名、在該發(fā)送系統(tǒng)上的最有需求的等待者的需求值以及發(fā)送系統(tǒng)唯一的令牌。如果后面的令牌與兩個(gè)資源匹配,則必須納入對(duì)它們的管理(只根據(jù)發(fā)送系統(tǒng)的本地?cái)?shù)據(jù)賦予令牌)。該協(xié)議還只發(fā)送處于爭(zhēng)用中的資源的數(shù)據(jù),即使該拓?fù)渲械囊恍┳鳂I(yè)持有未被爭(zhēng)用的其他資源。發(fā)送系統(tǒng)的群集信息能以各種方式編碼。這樣,不是發(fā)送只基于該發(fā)送系統(tǒng)上的本地爭(zhēng)用的一個(gè)令牌,而是如在一個(gè)優(yōu)選實(shí)施例中那樣,該本地系統(tǒng)能發(fā)送也基于遠(yuǎn)程爭(zhēng)用的一個(gè)群集名,并帶有一個(gè)指示以說(shuō)明一個(gè)非平凡的群集賦予(即向一個(gè)含有不只一個(gè)資源的群集賦予)是基于本地的還是基于遠(yuǎn)程的信息。
優(yōu)選地,本發(fā)明作為一個(gè)計(jì)算機(jī)操作系統(tǒng)的一部分實(shí)現(xiàn),或者作為與這種操作系統(tǒng)聯(lián)合工作的“中間件”軟件來(lái)實(shí)現(xiàn)。這樣的軟件實(shí)現(xiàn)包括指令程序形式的邏輯,這些指令可由硬件機(jī)器執(zhí)行,以實(shí)現(xiàn)本發(fā)明的方法步驟。該指令程序可以體現(xiàn)在由使用半導(dǎo)體、磁、光或其他存儲(chǔ)技術(shù)的一個(gè)或多個(gè)卷組成的程序存儲(chǔ)設(shè)備上。
圖1顯示包含本發(fā)明的計(jì)算機(jī)系統(tǒng)群集。
圖2A-2D顯示各類(lèi)爭(zhēng)用鏈。
圖3顯示向在爭(zhēng)用鏈中打頭的用戶(hù)分配資源的過(guò)程。
圖4顯示在若干系統(tǒng)上的事務(wù)和資源當(dāng)中的典型爭(zhēng)用場(chǎng)景。
圖5顯示響應(yīng)來(lái)自一個(gè)本地資源管理器的通知之后進(jìn)行的一般過(guò)程。
圖6顯示響應(yīng)接收到來(lái)自一個(gè)遠(yuǎn)程系統(tǒng)的爭(zhēng)用數(shù)據(jù)廣播之后進(jìn)行的一般過(guò)程。
圖7A-7G顯示在各種運(yùn)行實(shí)例中的多系統(tǒng)爭(zhēng)用狀態(tài)。
圖8A-8H顯示在本發(fā)明的一個(gè)實(shí)施例中用于存儲(chǔ)爭(zhēng)用數(shù)據(jù)的各種數(shù)據(jù)結(jié)構(gòu)。
圖9顯示如何由該群集的系統(tǒng)之一捕獲圖4中所示爭(zhēng)用場(chǎng)景。
具體實(shí)施例方式
圖1顯示包含本發(fā)明的計(jì)算機(jī)系統(tǒng)群集100。群集100包括單個(gè)系統(tǒng)(Sy1、Sy2、Sy3),它們由任何適當(dāng)類(lèi)型的互連104連接在一起。盡管所示例子有三個(gè)系統(tǒng),但本發(fā)明并不限于任何特定的系統(tǒng)數(shù)量。群集100有一個(gè)或多個(gè)全局的或多系統(tǒng)的資源106,它們被來(lái)自各系統(tǒng)的請(qǐng)求者爭(zhēng)用。
該群集的每個(gè)系統(tǒng)102包括一個(gè)單獨(dú)的物理機(jī)器或者一個(gè)或多個(gè)物理機(jī)器的一個(gè)單獨(dú)的邏輯分區(qū)。每個(gè)系統(tǒng)包括一個(gè)操作系統(tǒng)(OS)108,它除了實(shí)現(xiàn)本發(fā)明的功能外,還實(shí)現(xiàn)提供系統(tǒng)服務(wù)和管理系統(tǒng)資源的使用的通常的功能。盡管本發(fā)明不限于任何特定的硬件或軟件平臺(tái),但優(yōu)選地,每個(gè)系統(tǒng)102包括一個(gè)IBM z/OS操作系統(tǒng)實(shí)例,其運(yùn)行在一個(gè)IBMzSeriesTM服務(wù)器上或這種服務(wù)器的一個(gè)邏輯分區(qū)上。
每個(gè)系統(tǒng)102包括一個(gè)或多個(gè)請(qǐng)求者110,它們彼此競(jìng)爭(zhēng)對(duì)多系統(tǒng)資源106的訪(fǎng)問(wèn)以及可選地對(duì)本地資源112的訪(fǎng)問(wèn),這些本地資源只對(duì)該同一系統(tǒng)上的請(qǐng)求者可用。請(qǐng)求者110可以包括任何實(shí)體,它競(jìng)爭(zhēng)對(duì)資源106或112的訪(fǎng)問(wèn),并且被作為單個(gè)實(shí)體對(duì)待以分配系統(tǒng)資源。
(分配給請(qǐng)求者110的系統(tǒng)資源應(yīng)與資源106及112區(qū)分開(kāi),資源106和112是在請(qǐng)求者之間爭(zhēng)用的對(duì)象。系統(tǒng)資源通常是以對(duì)請(qǐng)求者本身透明的方式分配給請(qǐng)求者110,以改進(jìn)某些性能指標(biāo),如吞吐量或響應(yīng)時(shí)間。而另一方面,資源106和112是由請(qǐng)求者作為它們的執(zhí)行過(guò)程的一部分明確請(qǐng)求的。當(dāng)需要區(qū)分它們的時(shí)候,后一類(lèi)資源有時(shí)使用術(shù)語(yǔ)“串行化資源”或類(lèi)似術(shù)語(yǔ)來(lái)稱(chēng)呼。)每個(gè)操作系統(tǒng)108包括若干個(gè)對(duì)本發(fā)明有意義的組件,包括一個(gè)或多個(gè)資源管理器114和工作負(fù)荷管理器(WLM)116。
每個(gè)資源管理器114通過(guò)允許一個(gè)或多個(gè)競(jìng)爭(zhēng)的請(qǐng)求者作為持有者訪(fǎng)問(wèn)資源106或112,而把其余的請(qǐng)求者都放在等待者池中直至該資源變?yōu)榭捎脮r(shí)為止,以此來(lái)管理諸競(jìng)爭(zhēng)請(qǐng)求者110之間對(duì)它控制的資源106或112的爭(zhēng)用。盡管本發(fā)明不限于任何特定的資源管理器,但一個(gè)這樣的資源管理器(用于多系統(tǒng)資源106)可以是z/OS操作系統(tǒng)的全局資源串行化(GRS)組件,該組件在諸如IBM出版物“z/OS MVS計(jì)劃全局資源串行化”,(z/OS MVS planningGlobal Resource Serialization),SA 22-7600-02(2002年3月)的參考文獻(xiàn)中作了描述,該文獻(xiàn)在這里被納入作為參考。再有,盡管資源管理器114被描述為操作系統(tǒng)108的一部分(如同GRS是z/OS的一部分),但其他資源管理器(如IRLM)可以獨(dú)立于操作系統(tǒng)而存在。
工作負(fù)荷管理器(WLM)116根據(jù)“需求”值把系統(tǒng)資源分配給工作單元(它可以是地址空間、飛地(enclave)等),該“需求”值被賦予那個(gè)工作單元(或它所屬的服務(wù)類(lèi)別),并在某種意義上反映了那個(gè)工作單元相對(duì)于被處理的其他工作單元的相對(duì)優(yōu)先級(jí)。盡管本發(fā)明不限于任何特定的工作負(fù)荷管理器,但一個(gè)這樣的工作負(fù)荷管理器是IBM z/OS操作系統(tǒng)的工作負(fù)荷管理組件,該組件在IBM出版物“z/OS MVS計(jì)劃工作負(fù)荷管理”,(z/OS MVS PlanningWorkload Management)SA22-7602-04(2002年10月),和z/OS MVS編程工作負(fù)荷管理服務(wù)”(z/OS MVSProgrammingWorkload Management Services),SA22-7619-03(2002年10月)中描述的那樣,這兩篇文獻(xiàn)在這里被納入作為參考。這樣的工作負(fù)荷管理組件與IBM z/OS操作系統(tǒng)的系統(tǒng)資源管理器(SRM)構(gòu)件聯(lián)合工作,如在IBM出版物z/OS MVS初始化和調(diào)優(yōu)指導(dǎo)(z/OS MVSInitialization and Tuning Guide),SA22-7591-01(2002年3月),特別是第3章(3-1至3-84頁(yè))中描述的那樣,該文獻(xiàn)在這里被納入作為參考。因?yàn)檫@些組件相互作用的特定方式不是本發(fā)明的組成部分,這兩個(gè)組件假定由圖1中標(biāo)為“VLM”的框116引用。
不論是向用戶(hù)賦予需求值的特定方式還是根據(jù)所賦予的需求值向用戶(hù)分配系統(tǒng)資源的方式都不是本發(fā)明的組成部分。本領(lǐng)域多種已知技術(shù)中的任何技術(shù)都能用作這兩種方式。優(yōu)選地,需求值應(yīng)是跨越該系統(tǒng)群集有相似意義的值。在所示實(shí)施例中,它是根據(jù)現(xiàn)行WLM策略計(jì)算出來(lái)的動(dòng)態(tài)值,它把資源組限制和重要性集成為能跨越系統(tǒng)安全地進(jìn)行比較的單個(gè)量。盡管排序是任意的,但在本描述中較低的數(shù)值代表較高的需求和優(yōu)先級(jí),于是具有需求“1”的用戶(hù)比具有需求“5”的用戶(hù)“更有需求”。
圖2A-2C顯示在系統(tǒng)群集100中的資源106和112當(dāng)中可能發(fā)生的各種爭(zhēng)用鏈。這些鏈更正式的稱(chēng)呼是有向圖(directed graph),但這里將使用術(shù)語(yǔ)“鏈”。在這些鏈中的每個(gè)鏈接(用箭頭表示)代表一個(gè)關(guān)系,其中一個(gè)用戶(hù)(由箭頭尾部的節(jié)點(diǎn)代表)在等待由另一用戶(hù)(由箭頭頭部的節(jié)點(diǎn)代表)持有的資源。這種關(guān)系的“傳遞閉合”是通過(guò)這樣的方法所形成的鏈,即把涉及該鏈任何節(jié)點(diǎn)的所有這些關(guān)系都包括在內(nèi),從而當(dāng)遵循這些箭頭時(shí),所有節(jié)點(diǎn)最終將指向一個(gè)持有者,其不是在等待處于爭(zhēng)用中的任何資源并因此站在該鏈的開(kāi)頭。(下文在圖2D的描述中將討論一個(gè)鏈?zhǔn)欠衲苡胁恢灰粋€(gè)開(kāi)頭。)圖2A顯示在上文的背景技術(shù)和發(fā)明內(nèi)容部分中描述的爭(zhēng)用場(chǎng)景,其中用戶(hù)C在等待由用戶(hù)B持有的資源R2,用戶(hù)B又在等待由用戶(hù)A持有的資源R1。如這里公開(kāi)說(shuō)明的那樣,是持有者但不是等待者并因此位于該鏈開(kāi)頭的用戶(hù)A被分配系統(tǒng)資源,如同它的需求至少是等待者B和C中最有需求者的需求,因?yàn)樗哪莾蓚€(gè)等待者都將從讓A結(jié)束對(duì)資源R1的持有中受益。用戶(hù)B也是一個(gè)持有者,但沒(méi)有得到這種優(yōu)惠的分配,因?yàn)樗诘却Y源,所以沒(méi)有在運(yùn)行;這樣,在此時(shí)沒(méi)有理由向B分配更多資源(盡管其后當(dāng)B作為持有者獲取資源R1時(shí)可能會(huì)有理由)。
圖2A中所示爭(zhēng)用場(chǎng)景是一個(gè)直接鏈,其中每個(gè)用戶(hù)在持有和/或等待由單個(gè)用戶(hù)持有的資源。然而,通常的爭(zhēng)用鏈可以分支,從而單個(gè)用戶(hù)可能在持有由多個(gè)用戶(hù)等待的資源,或者在等待由多個(gè)用戶(hù)持有的資源。一些資源也能被請(qǐng)求供共享訪(fǎng)問(wèn),從而允許多個(gè)并發(fā)持有者。
圖2B顯示的爭(zhēng)用場(chǎng)景具有第一類(lèi)分支,它與圖2A中所示場(chǎng)景的區(qū)別在于現(xiàn)在附加用戶(hù)D在等待由用戶(hù)B持有的資源R3。這里,用戶(hù)A被分配系統(tǒng)資源,如同它的需求至少是等待者B、C、D當(dāng)中最有需求者的需求,因?yàn)樗羞@些等待者都將從讓A結(jié)束對(duì)資源R1的持有中受益。
圖2C顯示具有兩種類(lèi)型分支的爭(zhēng)用場(chǎng)景,它與圖2A所示場(chǎng)景的區(qū)別在于現(xiàn)在用戶(hù)C在等待由用戶(hù)D控制的額外資源R3,而用戶(hù)D在等待由用戶(hù)A控制的資源R4。這里又是用戶(hù)A被分配系統(tǒng)資源,如同它的需求至少是等待者B、C、D當(dāng)中最有需求者的需求,因?yàn)樗羞@些等待者都將從讓A結(jié)束對(duì)資源R1的持有中受益。
最后,圖2D顯示具有第二類(lèi)分支的爭(zhēng)用場(chǎng)景,它與圖2A中所示場(chǎng)景的區(qū)別在于現(xiàn)在用戶(hù)C也在等待由用戶(hù)D持有的資源R3,而用戶(hù)D在等待由用戶(hù)E持有的資源R4。理論上,這能被分析為兩個(gè)部分重疊的鏈,每個(gè)鏈有一個(gè)開(kāi)頭,一個(gè)鏈?zhǔn)荂→B→A,另一個(gè)鏈?zhǔn)荂→D→E。在第一個(gè)鏈中,用戶(hù)A被分配系統(tǒng)資源,如同它的需求至少是等待者B和C中最有需求者的需求,而在第二個(gè)鏈中,用戶(hù)E被分配系統(tǒng)資源,如同它的需求至少是等待者C和D中最有需求者的需求。
總之,參考圖3,在一個(gè)理想的實(shí)現(xiàn)中將首先識(shí)別出位于用戶(hù)鏈開(kāi)頭的不是等待者的用戶(hù),在該用戶(hù)鏈中,每個(gè)在該鏈中有下一個(gè)用戶(hù)的用戶(hù)正在持有由該下一個(gè)用戶(hù)等待的資源(步驟302)。在圖2D中,對(duì)由用戶(hù)A-C構(gòu)成的鏈這將是用戶(hù)A,在由用戶(hù)C-E構(gòu)成的鏈中是用戶(hù)E。然后,系統(tǒng)資源將分配給鏈開(kāi)頭處的用戶(hù),如同它的需求是那個(gè)鏈中最有需求的等待者的需求(步驟304)。就是說(shuō),如果有一個(gè)這樣的最有需求的等待者,其需求大于在該鏈開(kāi)頭的用戶(hù)的需求,則根據(jù)這個(gè)等待者的需求對(duì)那個(gè)用戶(hù)分配系統(tǒng)資源,如果該等待者的需求大于那個(gè)用戶(hù)的需求的話(huà)。
在這種作為兩個(gè)鏈的處理中,用戶(hù)A的資源分配不依賴(lài)于用戶(hù)D的需求,因?yàn)橛脩?hù)D的分支(沿箭頭的方向向前)并不饋送到用戶(hù)A中,這樣,用戶(hù)D將不會(huì)從幫助A中受益。由于類(lèi)似的原因,用戶(hù)E的資源分配也不依賴(lài)于用戶(hù)B的需求。因此,在一個(gè)優(yōu)選實(shí)施例中,這些鏈(或者更確切地說(shuō),是在這些鏈中構(gòu)成鏈接的資源)被分析為兩個(gè)單獨(dú)的資源群集第一個(gè)群集包括資源R1-R2,第二個(gè)群集包括資源R3-R4。在第一個(gè)群集中,用戶(hù)A被分配系統(tǒng)資源,如同它的需求至少是在那第一個(gè)群集中對(duì)任何資源(R1和R2)的等待者(B和C)中最有需求者的需求。類(lèi)似地,在第二個(gè)群集中,用戶(hù)E被分配系統(tǒng)資源,如同它的需求至少是在那第二個(gè)群集中對(duì)任何資源(R3和R4)的等待者(C和D)中最有需求者的需求。
在上述所有實(shí)例中,爭(zhēng)用鏈?zhǔn)菬o(wú)環(huán)的(acyclic),意思是不能通過(guò)沿鏈接箭頭方向跟蹤鏈接來(lái)形成閉合路徑。如果有這樣的閉合路徑,則會(huì)有資源死鎖,只能通過(guò)終止該死鎖中涉及的一個(gè)或多個(gè)用戶(hù)來(lái)打破這一死鎖。
現(xiàn)在轉(zhuǎn)到詳細(xì)描述一個(gè)多系統(tǒng)實(shí)現(xiàn),圖4顯示在若干系統(tǒng)上的事務(wù)和資源之間的典型爭(zhēng)用場(chǎng)景。在該圖中,在系統(tǒng)Sy1上的事務(wù)TxA(具有需求1)在等待系統(tǒng)Sy2上的事務(wù)TxB(具有需求2)和TxD(具有需求4)持有的資源Ra。系統(tǒng)Sy2上的事務(wù)TxB又在等待由系統(tǒng)Sy3上的事務(wù)TxC(具有需求3)以及系統(tǒng)Sy3上的事務(wù)TxE(具有需求5)持有的資源Rb。
在這個(gè)例子中,我們觀察系統(tǒng)Sy2以說(shuō)明系統(tǒng)Sy1-Sy3如何管理爭(zhēng)用。根據(jù)本發(fā)明的一個(gè)方面,系統(tǒng)Sy2并不存儲(chǔ)或保持群集中爭(zhēng)用情況的完整的全局性圖形,而是存儲(chǔ)或保持這種爭(zhēng)用信息的一個(gè)子集,如下表中所示。
如上表中所示,系統(tǒng)Sy2存儲(chǔ)它的本地事務(wù)TxB和TxD的完全的爭(zhēng)用數(shù)據(jù)集(“本地系統(tǒng)信息”),這兩個(gè)事務(wù)或作為持有者或作為等待者在爭(zhēng)用資源。對(duì)于每個(gè)這樣的由本地事務(wù)爭(zhēng)用的資源,Sy2跟蹤其本地的持有者和等待者,包括它們的固有“需求”值。系統(tǒng)Sy2還把資源Ra和Rb賦予一個(gè)共用群集Cab,因?yàn)橹辽僖粋€(gè)本地事務(wù)(TxB)既是一個(gè)被請(qǐng)求資源(Ra)的持有者,又是另一個(gè)被請(qǐng)求資源(Rb)的等待者。
上表中所示數(shù)據(jù),或者由WLM的本地實(shí)例以其他方式跟蹤的數(shù)據(jù)(或者原樣存儲(chǔ)該數(shù)據(jù)或者在需要時(shí)從其他數(shù)據(jù)中提取該數(shù)據(jù)),包括本地群集數(shù)據(jù)、遠(yuǎn)程群集數(shù)據(jù)以及合成群集數(shù)據(jù)。本地群集數(shù)據(jù)指明根據(jù)本地系統(tǒng)上的爭(zhēng)用把資源分組到本地群集中的情況,并對(duì)每個(gè)這樣的本地群集指明對(duì)該本地群集中任何資源最有需求的等待者的需求。類(lèi)似地,遠(yuǎn)程群集數(shù)據(jù)對(duì)于一個(gè)特定遠(yuǎn)程系統(tǒng)指明根據(jù)該遠(yuǎn)程系統(tǒng)上的爭(zhēng)用把資源分組到遠(yuǎn)程群集中的情況,并對(duì)每個(gè)這樣的遠(yuǎn)程群集指明對(duì)該遠(yuǎn)程群集中任何資源的最有需求的等待者的需求。最后,把相應(yīng)的本地和遠(yuǎn)程數(shù)據(jù)組合而產(chǎn)生的合成群集數(shù)據(jù)指明根據(jù)跨系統(tǒng)的爭(zhēng)用把資源分組到合成群集中的情況,并對(duì)每個(gè)這樣的合成群集,指明對(duì)該合成群集中任何資源的最有需求的等待者的需求。
在上表中,在標(biāo)題“本地系統(tǒng)信息”下的項(xiàng)目代表本地群集數(shù)據(jù),因?yàn)樵诒镜赜脩?hù)等待一個(gè)被爭(zhēng)用的資源或持有一個(gè)被爭(zhēng)用的資源這個(gè)意義上,它們只基于本地的爭(zhēng)用。通過(guò)查看“本地系統(tǒng)信息”下的“等待者”列,能夠查明對(duì)一個(gè)資源最有需求的本地等待者的需求。這樣,對(duì)于資源Ra,沒(méi)有本地等待者(因此沒(méi)有“最有需求的”本地等待者),而對(duì)于資源Rb,最有需求的等待者(TxB)有需求2。在表中沒(méi)有明確顯示出基于本地爭(zhēng)用把資源分組成群集的情況,但可通過(guò)查找資源條目對(duì)導(dǎo)出這一分組情況,在這樣的資源條目中一個(gè)本地用戶(hù)在持有一個(gè)資源而同時(shí)在等待另一個(gè)資源。這樣,在上表中,列出用戶(hù)TxB作為資源Ra的持有者和資源Rb的等待者意味著根據(jù)本地爭(zhēng)用數(shù)據(jù)把資源Ra和Rb賦予一個(gè)共同的群集。
類(lèi)似地,標(biāo)題“遠(yuǎn)程等待者信息”下的項(xiàng)目代表遠(yuǎn)程群集數(shù)據(jù),因?yàn)樗鼈冎换谔囟ㄟh(yuǎn)程系統(tǒng)上的爭(zhēng)用情況。對(duì)于“系統(tǒng)名”一列中為一個(gè)資源列出的每個(gè)遠(yuǎn)程系統(tǒng),最有需求的等待者的需求表示在相鄰的“NQO”列中?;趤?lái)自特定遠(yuǎn)程系統(tǒng)的爭(zhēng)用數(shù)據(jù)把資源分組成群集的情況沒(méi)有在上表中指出,而是由本地WLM實(shí)例進(jìn)行跟蹤,從而使它能與本地群集賦予信息組合以得到合成群集賦予。群集的組合是以直截了當(dāng)?shù)姆绞酵瓿傻?。這樣,如果第一個(gè)系統(tǒng)把資源A和B賦予一個(gè)共同的群集(根據(jù)它的本地爭(zhēng)用數(shù)據(jù)),第二個(gè)系統(tǒng)類(lèi)似地把資源B和C賦予一個(gè)共同的群集,而第三個(gè)系統(tǒng)把資源C和D賦予一個(gè)共同的群集,則產(chǎn)生的合成群集包括資源A、B、C和D。
另一方面,第一列(“資源群集”)代表合成群集數(shù)據(jù),因?yàn)樗岩粋€(gè)資源賦予一個(gè)群集是基于本地群集數(shù)據(jù)和遠(yuǎn)程群集數(shù)據(jù)二者。最后一列(“NQO”)同樣地代表合成群集數(shù)據(jù),因?yàn)榱谐龅男枨笫菍?duì)跨越所有系統(tǒng)的對(duì)資源最有需求的等待者的需求(如報(bào)告給該本地系統(tǒng)的那樣)。
系統(tǒng)Sy2能以上表所示表格形式存儲(chǔ)爭(zhēng)用數(shù)據(jù),但如下文中進(jìn)一步描述的那樣,更典型的作法是把這種數(shù)據(jù)分配到若干個(gè)數(shù)據(jù)結(jié)構(gòu)中,以最大限度地方便操作。
圖5顯示響應(yīng)來(lái)自一個(gè)本地資源管理器的爭(zhēng)用通知,由WLM的本地實(shí)例遵循的一般過(guò)程500。盡管描述的是步驟的一特定序列,但該序列的順序可以改變,只要當(dāng)進(jìn)行每一步驟時(shí)能得到必要的輸入數(shù)據(jù)。
過(guò)程500開(kāi)始于當(dāng)WLM實(shí)例從一個(gè)本地資源管理器接收一個(gè)通知,表明與本地用戶(hù)有關(guān)的資源爭(zhēng)用狀態(tài)發(fā)生變化。這種變化可以表明下列中的任何一個(gè)1.一個(gè)本地用戶(hù)已變成由另一用戶(hù)持有的一個(gè)資源的等待者。
2.一個(gè)本地用戶(hù)不再是一個(gè)資源的等待者。這或者是因?yàn)樗炎鳛槌钟姓攉@取了該資源,或者是因?yàn)闊o(wú)論作為該資源的持有者或等待者,它對(duì)該資源已不再有興趣(可能因?yàn)樗呀K止,所以不再存在,如下文的一個(gè)實(shí)例中描述的那樣)。
3.由一個(gè)本地用戶(hù)持有的一個(gè)資源現(xiàn)在處于爭(zhēng)用狀態(tài)。
4.由一個(gè)本地用戶(hù)持有的一個(gè)資源不再處于爭(zhēng)用狀態(tài)。
來(lái)自本地資源管理器的通知會(huì)標(biāo)識(shí)該資源以及本地持有者和等待者。在一個(gè)優(yōu)選實(shí)施例中,WLM從沒(méi)有單獨(dú)顯示出來(lái)的SRM組件得到這些持有者和等待者各自的“需求”(它們的固有需求,不是根據(jù)本發(fā)明被改變的需求);但是這一數(shù)據(jù)的特定來(lái)源不是本發(fā)明的組成部分。
響應(yīng)從資源管理器實(shí)例接收到這樣的通知,WLM的本地實(shí)例首先更新所考慮的資源的本地爭(zhēng)用數(shù)據(jù)(步驟504)。這種更新可包括為該本地系統(tǒng)上新被爭(zhēng)用的資源創(chuàng)建一個(gè)新的條目,修改該本地系統(tǒng)上已經(jīng)處于爭(zhēng)用狀態(tài)的資源的現(xiàn)有條目,或者刪除該本地系統(tǒng)上不再處于爭(zhēng)用狀態(tài)的資源的現(xiàn)有條目。這一本地爭(zhēng)用數(shù)據(jù)包括持有或等待該資源的任何本地用戶(hù)的標(biāo)識(shí)以及這個(gè)用戶(hù)的“需求”。
在更新本地爭(zhēng)用數(shù)據(jù)之后,WLM的本地實(shí)例在必要時(shí)更新該資源的群集賦予(步驟506)。默認(rèn)時(shí),一個(gè)資源被賦予一個(gè)平凡的群集,它只包括它自己作為成員。如果這種賦予是由本地爭(zhēng)用數(shù)據(jù)或遠(yuǎn)程爭(zhēng)用數(shù)據(jù)要求的話(huà),則一個(gè)資源被賦予一個(gè)非平凡的群集,其包括至少一個(gè)其他資源。根據(jù)本地爭(zhēng)用數(shù)據(jù),一個(gè)資源被賦予一個(gè)含有另一資源的群集,如果那本地爭(zhēng)用數(shù)據(jù)表明同一個(gè)本地用戶(hù)在持有其中一個(gè)資源而同時(shí)在等待另一個(gè)資源的話(huà),就是說(shuō),如果該資源被等待另一資源的用戶(hù)所持有或者由持有另一資源的用戶(hù)所等待的話(huà)。根據(jù)遠(yuǎn)程爭(zhēng)用數(shù)據(jù),一個(gè)資源被賦予一個(gè)含有另一資源的群集,如果那遠(yuǎn)程爭(zhēng)用數(shù)據(jù)表明至少一個(gè)遠(yuǎn)程系統(tǒng)已根據(jù)相對(duì)于那個(gè)遠(yuǎn)程系統(tǒng)為本地的爭(zhēng)用數(shù)據(jù)把這兩個(gè)資源賦予一個(gè)共同的群集的話(huà)。這樣,這一群集賦予步驟可能涉及(1)對(duì)該資源的群集賦予不作改變;(2)如果改變了的本地爭(zhēng)用數(shù)據(jù)和任何現(xiàn)有的遠(yuǎn)程爭(zhēng)用數(shù)據(jù)要求這種賦予的話(huà),把該資源新賦予一個(gè)非平凡的群集;或者(3)如果改變了的本地爭(zhēng)用數(shù)據(jù)和任何現(xiàn)有的遠(yuǎn)程爭(zhēng)用數(shù)據(jù)不再要求這種賦予的話(huà),則打破一個(gè)現(xiàn)有的群集。如果該資源的群集賦予被改變,則此時(shí)受這一改變影響的其他資源的群集信息也被類(lèi)似地修改。
同時(shí)地,WLM的本地實(shí)例更新該資源的一個(gè)被轉(zhuǎn)嫁的“需求”值,該值只是基于該資源的本地爭(zhēng)用數(shù)據(jù)(步驟508)。這一被轉(zhuǎn)嫁的需求是該資源的任何本地等待者的需求中最大的一個(gè),如該資源的本地爭(zhēng)用數(shù)據(jù)指出的那樣。盡管這一步驟被顯示為跟隨在群集賦予步驟之后,但步驟的順序是不重要的,因?yàn)闆](méi)有一個(gè)步驟使用另一步驟的結(jié)果。
在WLM的本地實(shí)例已更新該資源的群集賦予和被轉(zhuǎn)嫁的需求值之后的某一點(diǎn),該WLM本地實(shí)例更新它的合成群集數(shù)據(jù),其包括(1)根據(jù)本地和遠(yuǎn)程爭(zhēng)用數(shù)據(jù)二者,該資源的被轉(zhuǎn)嫁的需求值(上表中的“NQO”列);(2)根據(jù)本地和遠(yuǎn)程爭(zhēng)用數(shù)據(jù)將資源分組到一個(gè)合成群集;以及(3)該資源群集作為一個(gè)整體的被轉(zhuǎn)嫁的“需求”值(步驟510)。所列出的最后一項(xiàng)只是構(gòu)成該合成群集的任何資源的需求中的最大的一個(gè),這里該需求也是基于構(gòu)成該群集的資源的遠(yuǎn)程以及本地爭(zhēng)用數(shù)據(jù)。
然后,WLM本地實(shí)例把它的更新后的本地爭(zhēng)用數(shù)據(jù)的概要廣播給該群集中的其他系統(tǒng)(步驟512)。這一數(shù)據(jù)概要包括1.該本地系統(tǒng)名。
2.該資源名。如果該資源是一個(gè)多系統(tǒng)資源,則該資源名是在該整個(gè)群集中承認(rèn)的該資源的實(shí)際名稱(chēng)。如果該資源是一個(gè)本地資源,則該資源名是一個(gè)通用本地資源名,其用作實(shí)際本地資源名的“代理”,如下文的例2中描述的那樣。
3.群集ID,其標(biāo)識(shí)該資源被賦予的群集。這個(gè)值是嚴(yán)格的本地值;接收系統(tǒng)比較這個(gè)值,以觀察兩個(gè)資源是否屬于發(fā)送系統(tǒng)上的同一群集,但對(duì)這個(gè)值的結(jié)構(gòu)和內(nèi)容不做任何假定。在下面的舉例中,給出的群集名為該群集中多系統(tǒng)資源的一個(gè)串聯(lián),純粹是作為一個(gè)助記符以利于讀者理解。然而,在本優(yōu)選實(shí)施例中,該“群集名”實(shí)際是一個(gè)不透明的“群集ID”,接收系統(tǒng)只能檢測(cè)它與源自同一發(fā)送系統(tǒng)的其他群集ID的相等性。
4.只基于發(fā)送系統(tǒng)的“本地系統(tǒng)信息”的對(duì)該資源的“需求”一即該資源的最有需求的本地等待者。這可以認(rèn)為是一個(gè)表決,其表示如果只考慮這一系統(tǒng)的數(shù)據(jù)的話(huà),這一系統(tǒng)認(rèn)為該需求應(yīng)當(dāng)是什么。如果該資源沒(méi)有本地等待者,則傳送一個(gè)偽值,其表明沒(méi)有本地需求,如下文的例1中描述的那樣。
5.一個(gè)指示,其說(shuō)明是否在發(fā)送系統(tǒng)上有任何事務(wù)迫使該資源包括在該群集中,即是否根據(jù)本地爭(zhēng)用數(shù)據(jù)把該資源賦予一個(gè)非平凡群集。這是一個(gè)布爾值,但不給予“是/否”,在這一描述中將給予它“本地/遠(yuǎn)程”值?!氨镜亍钡囊馑际?1)發(fā)送系統(tǒng)至少有一個(gè)事務(wù)既是一個(gè)資源的等待者又是另一資源的持有者;以及(2)這同一事務(wù)或者是這一資源的等待者或者是這一資源的持有者(這樣,該發(fā)送系統(tǒng)要求與該事務(wù)相關(guān)聯(lián)的一組資源被作為一組來(lái)管理)?!斑h(yuǎn)程”的意思是在發(fā)送系統(tǒng)的本地?cái)?shù)據(jù)中沒(méi)有任何東西要求該資源是一個(gè)非平凡群集的組成部分。平凡群集確切地只有一個(gè)資源,而且總是有值“遠(yuǎn)程”,以使得群集操作編碼稍容易一些。
如果有群集重新賦予,WLM還為受該重新賦予影響的每個(gè)其他資源廣播類(lèi)似的信息。
最后,本地WLM實(shí)例對(duì)本地用戶(hù)的“需求”值做任何必要的調(diào)整(步驟514)。更具體地說(shuō),WLM調(diào)節(jié)任何一個(gè)這樣的本地用戶(hù)的“需求”,如果該用戶(hù)是一個(gè)資源的本地持有者但不同時(shí)是另一資源的等待者(因而它在一個(gè)爭(zhēng)用鏈的開(kāi)頭)的話(huà),從而使該“需求”至少與含有該資源的群集中最有需求的等待者的固有需求相匹配。調(diào)整后的值是被轉(zhuǎn)嫁的“需求”值,它是向該持有者分配系統(tǒng)資源時(shí)實(shí)際使用的值,不是賦予那個(gè)用戶(hù)的固有需求值(該值用于把值轉(zhuǎn)嫁給其他用戶(hù))。這樣,如果轉(zhuǎn)嫁一個(gè)特定需求值的理由消失了,則轉(zhuǎn)嫁給一個(gè)用戶(hù)的需求值或者回復(fù)為固有需求值或者回復(fù)為為較小的被轉(zhuǎn)嫁的需求值。
圖6顯示響應(yīng)接收到來(lái)自一個(gè)遠(yuǎn)程系統(tǒng)的上的WLM實(shí)例的遠(yuǎn)程爭(zhēng)用數(shù)據(jù)廣播(步驟602),由WLM的本地實(shí)例遵循的一般過(guò)程600。這一廣播對(duì)于每個(gè)受影響的資源包括步驟512的描述中列出的信息。
響應(yīng)接收這樣的一通知,WLM的本地實(shí)例首先對(duì)所考慮的資源更新其遠(yuǎn)程爭(zhēng)用數(shù)據(jù)(步驟604)。如步驟304中描述的對(duì)本地爭(zhēng)用數(shù)據(jù)的更新那樣,這種更新能包括為在本地系統(tǒng)上新處于爭(zhēng)用狀態(tài)的資源創(chuàng)建新的條目,為在本地系統(tǒng)上已處于爭(zhēng)用狀態(tài)的資源修改現(xiàn)有條目,或?yàn)樵诒镜叵到y(tǒng)上不再處于爭(zhēng)用狀態(tài)的資源刪除現(xiàn)有條目。這種遠(yuǎn)程爭(zhēng)用數(shù)據(jù)包括具有對(duì)該資源的等待者的任何遠(yuǎn)程系統(tǒng)的一個(gè)標(biāo)識(shí),以及在該遠(yuǎn)程系統(tǒng)上對(duì)該資源的最有需求的等待者的需求。
在為該資源更新其遠(yuǎn)程爭(zhēng)用數(shù)據(jù)之后,WLM的本地實(shí)例更新該資源的合成群集數(shù)據(jù),如它在步驟510中做的那樣。如在步驟510中那樣,更新的合成群集包括(1)基于本地和遠(yuǎn)程爭(zhēng)用數(shù)據(jù)二者的該資源的被轉(zhuǎn)嫁需求值;(2)根據(jù)本地和遠(yuǎn)程爭(zhēng)用數(shù)據(jù),將資源分組到一個(gè)合成群集;以及(3)基于本地和遠(yuǎn)程爭(zhēng)用數(shù)據(jù)的、該資源群集作為一個(gè)整體的被轉(zhuǎn)嫁的“需求”值(步驟606)。
最后,如在步驟514中那樣,本地WLM實(shí)例對(duì)本地用戶(hù)的“需求”值做任何必要的調(diào)整,其方法是調(diào)整不同時(shí)是另一資源的等待者的任何本地的資源持有者(因而它處在一個(gè)爭(zhēng)用鏈的開(kāi)頭)的“需求”,從而使這一“需求”至少與含有該資源的群集中最有需求的等待者的固有需求匹配(步驟608)。
詳細(xì)的舉例和場(chǎng)景說(shuō)明如下例1(“簡(jiǎn)單的”傳遞閉合案例)這一舉例是跨系統(tǒng)的傳遞閉合案例它涉及不只一個(gè)資源,持有一個(gè)資源的無(wú)需求用戶(hù)得到幫助,以使等待另一資源的另一個(gè)(有需求的)用戶(hù)運(yùn)動(dòng)。該拓?fù)涫嵌嘞到y(tǒng)的,同一資源的持有者和等待者處在不同的系統(tǒng)上。
這一案例顯示當(dāng)在同一資源群集中只涉及多系統(tǒng)資源時(shí)發(fā)生的情況,所以它是“簡(jiǎn)單的”傳遞閉合案例。
在這一實(shí)例中的符號(hào)表示如下。每個(gè)持有者和等待者是一事務(wù)(Txn,例如TxA、TxB),并具有NQO(eNQueue Order,隊(duì)列順序)值。NQO的取值是使較小值為更有需求者(更值得幫助)。每個(gè)系統(tǒng)都被編號(hào)(Sy1、Sy2),而且所有這些系統(tǒng)都在同一個(gè)“系統(tǒng)群集”中。每個(gè)資源有一個(gè)小寫(xiě)字母(Ra、Rb),而且其范圍是多系統(tǒng)的。每個(gè)資源群集有一個(gè)或多個(gè)小寫(xiě)字母(Ca、Cab),顯示該群集中的資源列表。獲取資源的請(qǐng)求是請(qǐng)求排他性控制,除非另有說(shuō)明。
事件序列按時(shí)間順序列于下表
當(dāng)t<6時(shí)沒(méi)有爭(zhēng)用,故在兩個(gè)系統(tǒng)上都沒(méi)有WLM爭(zhēng)用數(shù)據(jù)。
在t=6時(shí)發(fā)生爭(zhēng)用(Sy1TxB請(qǐng)求Rb并被掛起,因?yàn)門(mén)xC持有Rb)。結(jié)果,Sy11.開(kāi)始跟蹤對(duì)資源Rb的爭(zhēng)用。
2.創(chuàng)建一個(gè)只包括Rb的資源群集。
3.把TxB添加到Rb的本地等待者清單。
在這一點(diǎn)上,Sy1的狀態(tài)如下
當(dāng)接下來(lái)Sy1重新評(píng)估它的資源拓?fù)鋾r(shí),它計(jì)算Cb的NQO。
1.由于Sy1知道的在該拓?fù)渲猩婕暗膶?duì)Rb最有需求的實(shí)體(事實(shí)上此時(shí)只有一個(gè))是TxB,所以它使用TxB的NQO(4)作為Rb的NQO。
2.在對(duì)Cb中的所有資源計(jì)算了NQO之后,它計(jì)算Cb的NQO,其為Cb中所有資源NQO的最有需求者。這把NQO 4從Rb傳播到Cb。
3.由于Rb是一個(gè)多系統(tǒng)資源,Sy1把Rb的信息廣播給該系統(tǒng)群集中的所有其他系統(tǒng)。如上所述,為Rb發(fā)送的信息包括系統(tǒng)名、資源名、群集ID、只基于發(fā)送系統(tǒng)的“本地系統(tǒng)信息”的該資源NQO、以及一個(gè)布爾值(本地/遠(yuǎn)程),當(dāng)該值設(shè)為“本地”時(shí),表明該發(fā)送系統(tǒng)上的一個(gè)事務(wù)迫使該資源包括在該群集中。
4.基于上述解釋?zhuān)l(fā)送的數(shù)據(jù)是Sy1,Rb,Cb,4,遠(yuǎn)程。
此時(shí)Sy1的狀態(tài)如下
Sy2接收這一信息;同時(shí)地,在Sy2上運(yùn)行的資源管理器實(shí)例把對(duì)Rb的爭(zhēng)用通知給Sy2。操作順序沒(méi)有關(guān)系,但它們將按前述順序列出。代碼中的唯一“技巧”是如果Sy2上的資源管理器贏得這場(chǎng)比賽,則當(dāng)該遠(yuǎn)程數(shù)據(jù)到達(dá)時(shí)該代碼必須認(rèn)識(shí)到它已經(jīng)構(gòu)建了同一群集并把該遠(yuǎn)程信息加到它的現(xiàn)有數(shù)據(jù)中。
在從Sy1接收遠(yuǎn)程信息之后,Sy2上的狀態(tài)如下
一旦Sy2的本地資源管理器把對(duì)Rb的爭(zhēng)用通知給Sy2,則Sy1和Sy2上的狀態(tài)如下
請(qǐng)注意,在Sy2上的、Rb的本地NQO是4,不是5,5是TxC的NQO。首先,資源持有者的NQO從不影響資源的NQO;由于該持有者在運(yùn)行,WLM的策略調(diào)整代碼已經(jīng)隱含地使用了這個(gè)NQO。其次,Sy2現(xiàn)在知道,在該系統(tǒng)群集中的某個(gè)其他地方有一個(gè)NQO為4的事務(wù)正在等待;由于4被定義為比5更有需求,所以Rb的NQO必須不比4需求更小。
在t=7,在另一資源上產(chǎn)生爭(zhēng)用(Sy2TxA請(qǐng)求Ra并被掛起,因?yàn)門(mén)xB持有Ra)。圖7A顯示t=7之后的拓?fù)洹?br>
由于資源Ra也有多系統(tǒng)范圍,這造成與剛才對(duì)Rb發(fā)生的情況類(lèi)似的一些握手,其結(jié)果狀態(tài)如下
一旦Sy1上的資源管理器實(shí)例把對(duì)Ra的爭(zhēng)用通知給Sy1,則Sy1進(jìn)行關(guān)鍵性步驟,即把Ca和Cb鏈接到一(新的)群集Cab。在簡(jiǎn)單地得到關(guān)于對(duì)Ra爭(zhēng)用的通知后,一個(gè)有效的(但到目前為止是不完全的)狀態(tài)可能會(huì)是下表所示(這些是分離的兩個(gè)步驟還是一個(gè)集成的步驟,這取決于該代碼實(shí)現(xiàn)的不同,但分開(kāi)顯示)
當(dāng)接下來(lái)Sy1重新評(píng)估它的拓?fù)鋾r(shí),它基于本地消息知道單個(gè)事務(wù)(TxB)涉及到兩個(gè)不同的資源(Ra和Rb),所以對(duì)那兩個(gè)資源的管理必須集成到一起(換言之,Ra和Rb必須在同一個(gè)資源群集Cab中)。該群集的NQO是它的成員資源的最大需求NQO(在這一案例中是1)。
Ra和Rb必須被一起管理的“信號(hào)”是存在至少一個(gè)這樣的事務(wù),它既在持有被爭(zhēng)用的一個(gè)或多個(gè)資源又在等待被爭(zhēng)用的其他一個(gè)或多個(gè)資源。
在重新評(píng)估其拓?fù)湟晥D之后,Sy1(如先前那樣)向該群集中的其他系統(tǒng)廣播它的視圖。
1.Sy1,Ra,Cab,偽NQO值,本地。
2.Sy1,Rb,Cab,4,本地。
偽NQO值簡(jiǎn)單地是小于WLM能產(chǎn)生的任何需求的一個(gè)值。Sy1沒(méi)有純本地NQO值,因?yàn)樗鼪](méi)有本地等待者,但它確實(shí)需要發(fā)送出這樣的“虛擬消息”,即必須基于它的本地?cái)?shù)據(jù)把Ra和Rb作為一個(gè)單元管理。
Sy2集成這些數(shù)據(jù)(包括Ra和Rb必須作為一個(gè)單元管理,意思是Ca和Cb必須合并到一起),產(chǎn)生下表。
現(xiàn)在兩個(gè)系統(tǒng)都同意該問(wèn)題(即最有需求的等待者的NQO值)的重要性,即使它們都不擁有完全拓?fù)潢P(guān)系的副本。
在t=10,爭(zhēng)用開(kāi)始解開(kāi)(Sy2TxC釋放Rb)。Sy2的Rb視圖現(xiàn)在只含有遠(yuǎn)程數(shù)據(jù)。
在t=11,Sy1上的資源管理器實(shí)例發(fā)現(xiàn)Rb可用并把它給予在其隊(duì)列上的第一個(gè)等待者(Sy1TxB被恢復(fù)并獲得Rb)。由于資源管理器的等待隊(duì)列現(xiàn)在是空的,所以它通知WLM,告知對(duì)Rb的爭(zhēng)用已經(jīng)結(jié)束。Sy1從它的資源群集中去掉Rb,因?yàn)樵诿總€(gè)系統(tǒng)內(nèi)任何單個(gè)資源只能屬于單個(gè)群集(盡管由于計(jì)時(shí)窗口不同兩個(gè)系統(tǒng)可能會(huì)有同一資源處在不同的群集中)。
與此平行地,在Sy2上的資源管理器被告知Rb不再被爭(zhēng)用(取決于資源管理器的具體實(shí)現(xiàn),這可能早在t=10時(shí)已經(jīng)發(fā)生),并且它也把Rb從它的資源拓?fù)渲腥サ簟?br>
在t=12,沒(méi)有任何改變,因?yàn)樗尫诺馁Y源已不再處于爭(zhēng)用狀態(tài)(Sy1TxB釋放Rb)。
在t=13,爭(zhēng)用完全解開(kāi)(Sy1TxB釋放Ra)。Sy1上的資源管理器實(shí)例通知WLM,告知Ra的爭(zhēng)用結(jié)束。
在t=14,Sy2也看到爭(zhēng)用結(jié)束(Sy2TxA被恢復(fù)并獲得Ra(無(wú)爭(zhēng)用))。Sy2上的資源管理器實(shí)例通知WLM,告知Ra的爭(zhēng)用結(jié)束。
例2(具有本地資源的傳遞閉合案例)這個(gè)實(shí)例是另一個(gè)跨系統(tǒng)傳遞閉合案例不只一個(gè)資源被涉及,持有一個(gè)資源的無(wú)需求用戶(hù)必須得到幫助,以使等待另一資源的另一個(gè)(有需求的)用戶(hù)運(yùn)動(dòng)。該拓?fù)溆质嵌嘞到y(tǒng)的,同一資源的諸持有者和等待者處在不同的系統(tǒng)上。此外,與例1不同的是,每個(gè)系統(tǒng)具有涉及這些相同事務(wù)的對(duì)純本地(非多系統(tǒng))資源的爭(zhēng)用。這顯示出當(dāng)同一資源群集中涉及多系統(tǒng)和單系統(tǒng)二種資源時(shí)會(huì)發(fā)生的情況。
表示符號(hào)與例1中相同,只是多系統(tǒng)資源使用大寫(xiě)R(Ra、Rb)而本地資源使用小寫(xiě)r(rc、rd)。Rlocal(=RL)是一個(gè)代理名,用于“某些未知的資源組,它們相對(duì)于一遠(yuǎn)程系統(tǒng)而言其范圍是本地的”。它的實(shí)際值是無(wú)關(guān)的,其唯一要求是所有參加者同意該值而且不允許它與任何有效資源名沖突。
事件序列按時(shí)間順序列于下表
當(dāng)t<8時(shí)每個(gè)系統(tǒng)上的爭(zhēng)用狀態(tài)與例1中完全相同,所以這里不予描述。
在t=8時(shí),對(duì)本地的(非多系統(tǒng)的)資源rl發(fā)生爭(zhēng)用(Sy1TxS請(qǐng)求rl并被掛起,因?yàn)門(mén)xB持有rl)。資源rl只被納入Sy1上的資源群集。由TxS得到的、rl的NQO為3,但由于Ra,群集Cabl仍有NQO為1。
當(dāng)Sy1廣播它的群集視圖時(shí),它并不直接廣播rl,因?yàn)閮H有Ra和Rb是該群集中能由其他系統(tǒng)看到的資源。代替地,它將為Sy1的所有本地資源(我們知道這只是rl)廣播一個(gè)代理(Rlocal)。
1.Sy1,Ra,Cabl,偽NQO值,本地。
2.Sy1,Ra,Cabl,4,本地。
3.Sy1,Rlocal,Cabl,3,本地。
在接收到這一數(shù)據(jù)并更新其拓?fù)渲?,Sy2相信這就是現(xiàn)在的狀態(tài)。
在t=9,另一本地資源顯示在另一系統(tǒng)上的爭(zhēng)用(Sy2TxT請(qǐng)求rj并被掛起,因?yàn)門(mén)xA持有rj)。圖7B顯示t=9之后的拓?fù)洹?br>
在Sy2上發(fā)生了與在Sy1上剛發(fā)生的相似的處理,然后Sy2向Sy1廣播它的數(shù)據(jù)。Sy2廣播如下數(shù)據(jù)1.Sy2,Ra,CabL,1,本地。
2.Sy2,Rb,CabL,偽NQO值,遠(yuǎn)程。
3.Sy2,Rlocal,CabL,2,本地。
在上述廣播中,對(duì)Sy2上本地資源的代理的名稱(chēng)隱含地由群集名限定,因?yàn)椋缦挛闹姓f(shuō)明的那樣,代理是對(duì)每個(gè)資源群集定義的,不是只對(duì)作為整體的系統(tǒng)群集定義的。而且,只有對(duì)于Ra和Rlocal的廣播包括布爾值“本地”,因?yàn)橹挥羞@兩個(gè)資源可根據(jù)本地?cái)?shù)據(jù)賦予一個(gè)共同的群集。
人們沒(méi)有理由不能通過(guò)對(duì)Sy2上的Rlocal的“遠(yuǎn)程等待者信息”添加“Sy2,2”條目或?qū)y2上的“本地系統(tǒng)信息。等待者”添加偽事務(wù)來(lái)概括全部本地資源爭(zhēng)用;上表中顯示沒(méi)有這一優(yōu)化。讓Rlocal通過(guò)上述方法之一概括本地狀態(tài)數(shù)據(jù)可能會(huì)使廣播代碼更簡(jiǎn)單;于是Rlocal能以多系統(tǒng)范圍產(chǎn)生并且在廣播代碼中無(wú)需特例。存在其他案例,在那里清楚地需要有特例。事實(shí)上人們必須允許每個(gè)資源群集有一個(gè)Rlocal,而不只是每個(gè)系統(tǒng)有一個(gè)。
在t=10,爭(zhēng)用開(kāi)始解開(kāi)(Sy2TxC釋放Rb)?,F(xiàn)在Sy2的Rb視圖只含有遠(yuǎn)程數(shù)據(jù)。
在t=11,Sy1上的資源管理器實(shí)例發(fā)現(xiàn)Rb可用并把它給予在其隊(duì)列上的第一個(gè)等待者(Sy1TxB被恢復(fù)并獲得Rb)。由于資源管理器的等待隊(duì)列現(xiàn)在是空的,所以它通知WLM,告知Rb的爭(zhēng)用已經(jīng)結(jié)束。平行地,在Sy2上的資源管理器實(shí)例被告知Rb不再被爭(zhēng)用(取決于資源管理器的具體實(shí)現(xiàn),這可能早在t=10時(shí)已經(jīng)發(fā)生)。兩個(gè)系統(tǒng)都必須從其資源群集中去掉Rb,因?yàn)樵诿總€(gè)系統(tǒng)內(nèi)任何單個(gè)資源只能屬于單個(gè)群集。兩個(gè)系統(tǒng)可能會(huì)有同一資源在同一時(shí)刻由于時(shí)間窗口的作用暫時(shí)處于不同群集,或由于資源拓?fù)溆谰玫靥幱诓煌杭.?dāng)涉及兩個(gè)以上系統(tǒng)時(shí)會(huì)顯示出非對(duì)稱(chēng)的拓?fù)鋵?shí)例。
在t=12,沒(méi)有任何改變,因?yàn)樗尫诺馁Y源已不再處于爭(zhēng)用狀態(tài)(Sy1TxB釋放Rb)。
在t=13,多系統(tǒng)爭(zhēng)用完全解開(kāi)(Sy1TxB釋放Ra)。Sy1上的資源管理器實(shí)例通知WLM,告知Ra的爭(zhēng)用結(jié)束。
由于現(xiàn)在Sy1上的資源群集只包括本地資源以及在多系統(tǒng)爭(zhēng)用中涉及的遠(yuǎn)程本地資源代理,所以該代理也能從該群集中去掉。由于Sy2尚未被告知Ra爭(zhēng)用結(jié)束,它仍保持它的代理資源作為群集的一部分。
在t=14,Sy2也看到爭(zhēng)用結(jié)束(Sy2TxA被恢復(fù)并獲得Ra)。Sy2上的資源管理器實(shí)例通知WLM,告知Ra的爭(zhēng)用結(jié)束。
在t=15,對(duì)本地資源之一的爭(zhēng)用結(jié)束(Sy1TxB釋放rl)此時(shí)TxS被恢復(fù)。一旦資源管理器通知Sy1,告知對(duì)rl的爭(zhēng)用已經(jīng)結(jié)束,則Sy1的拓?fù)湓俅纬蔀榭盏摹?br>
在t=17,最后一個(gè)爭(zhēng)用結(jié)束(Sy2TxA釋放rj),并且TxT被恢復(fù)。一旦資源管理器通知Sy2,告知對(duì)rl的爭(zhēng)用已經(jīng)結(jié)束,Sy2的拓?fù)湓俅纬蔀榭盏摹?br>
例3打破一個(gè)群集(打破Clu1)這一舉例涉及把一個(gè)資源群集打破成較小的群集,而沒(méi)有對(duì)所涉及的任何資源結(jié)束爭(zhēng)用。鏈接Ra和Rb的事務(wù)被取消,但由于每個(gè)資源有其他等待者,在此后這兩個(gè)資源仍處于爭(zhēng)用狀態(tài)。表示符號(hào)與例1中相同。
事件序列按時(shí)間順序列于下表
當(dāng)t<4時(shí)沒(méi)有爭(zhēng)用,所以在任何系統(tǒng)上都沒(méi)有WLM爭(zhēng)用數(shù)據(jù)。
在時(shí)間t=4和t=7之間發(fā)生的事件已包括在先前的例子中。
圖7C顯示t=7之后的拓?fù)洹T谶@一時(shí)刻的狀態(tài)數(shù)據(jù)如同下表所示
當(dāng)事務(wù)TxD在t=8(由于任何理由)終止時(shí),每個(gè)系統(tǒng)上的系統(tǒng)管理器實(shí)例去掉TxD未完成的所有等待請(qǐng)求(Ra)并釋放它持有的所有資源(Rb)。一旦WLM得到關(guān)于這些拓?fù)渥兓耐ㄖ?,Sy1知道資源群集Cab應(yīng)打破為兩塊(Ca和Cb)。它知道這一點(diǎn),這是因?yàn)镾y1曾本地決定它們?yōu)楸绘溄拥?并且能看到在本地這已不再是事實(shí)),而且沒(méi)有遠(yuǎn)程系統(tǒng)的數(shù)據(jù)說(shuō)它們必須被鏈接。然而,這兩個(gè)資源都仍處于爭(zhēng)用狀態(tài)。下一時(shí)刻Sy1廣播它的拓?fù)鋽?shù)據(jù)后,在Sy2上的“Sy1Ra,Rb被鏈接”被去掉,并且Sy2也更新它的拓?fù)洹<俣ㄔ谫Y源管理器實(shí)例重新賦予所有權(quán)之前WLM完成所有這一切,則結(jié)果狀態(tài)是
因此,這意味著我們有某種機(jī)制去掉不得不把Ra和Rb一起管理的“記憶”,而不是依賴(lài)于對(duì)所涉及的資源之一的爭(zhēng)用結(jié)束。某些替代作法是1.Sy1明確地發(fā)送數(shù)據(jù),表明它不再相信一個(gè)給定的資源群集是必要的。例如,發(fā)送Ra,Ca,4,遠(yuǎn)程。當(dāng)Sy2替換Sy1的對(duì)Ra的先前數(shù)據(jù)時(shí),它不再看到有任何來(lái)自Sy1的對(duì)Ra和Rb一起管理的要求;如果Sy2沒(méi)有其他“贊成票”去繼續(xù)該群集,則Sy2可以本地打破該群集。
2.Sy1的數(shù)據(jù)被老化(所以如果不“盡快”被替換則會(huì)被刪除)。這可能通過(guò)發(fā)送“壽命”(TTL)值來(lái)實(shí)現(xiàn),在該時(shí)間之后該數(shù)據(jù)將被接收者刪除。這一機(jī)制還能為出故障的系統(tǒng)、丟失的信號(hào)、程序錯(cuò)誤、恢復(fù)問(wèn)題等提供安全網(wǎng)。TTL還有一個(gè)好處,即它使通信延遲透明,不需要發(fā)送者和接收者同意一個(gè)共同的間隔。
最穩(wěn)健的解決方案很可能是這全部三種作法。讓在全局發(fā)出爭(zhēng)用結(jié)束信號(hào)的資源管理器處理這樣的情況,其中在本地刪除“Ra”塊,從而使我們不必把它保持足夠長(zhǎng)時(shí)間以發(fā)送“打破該群集”的消息。如果對(duì)一個(gè)資源的爭(zhēng)用在本地結(jié)束但在遠(yuǎn)程未結(jié)束,而且該本地系統(tǒng)是其贊成票曾迫使構(gòu)建非平凡群集的系統(tǒng),則讓TTL值造成該遠(yuǎn)程系統(tǒng)上的群集的破壞。如果該群集需要被打破,但爭(zhēng)用未曾結(jié)束,則我們?nèi)杂小癛a”塊,而“打破該群集”消息是我們要發(fā)送的東西的自然結(jié)果。
例4打破一個(gè)群集(打破Clu2)在這一舉例中,只由共同持有者聯(lián)系起來(lái)的一個(gè)資源群集能被作為“n”個(gè)資源的一個(gè)資源群集或者作為每個(gè)群集有一個(gè)資源的“n”個(gè)群集來(lái)對(duì)待。
表示符號(hào)與例1相同。
事件序列按時(shí)間順序列于下表
圖7D顯示t=6之后的拓?fù)潢P(guān)系。
至t=6為止所發(fā)生的事件已在前例中包括。這里有意思的是,取決于如何定義,人們可以把這一情況作為一個(gè)資源群集或者兩個(gè)資源群集來(lái)對(duì)待。如果我們使用前幾個(gè)舉例中的定義,即一個(gè)資源群集能被標(biāo)識(shí)為一個(gè)系統(tǒng)有同一個(gè)事務(wù)作為一個(gè)資源的持有者而且作為一個(gè)不同資源的持有者(并在該系統(tǒng)群集中的所有系統(tǒng)上匯總一知識(shí)),那么顯然上述圖示描述兩個(gè)資源群集而不是可能預(yù)期的一個(gè)群集。
由于形成資源群集Cab沒(méi)有價(jià)值,而且在這樣做時(shí)存在開(kāi)銷(xiāo)(更確切地說(shuō),在確定一個(gè)群集是否要被打破時(shí)涉及到開(kāi)銷(xiāo)),這一定義將繼續(xù)被使用。所以,與上述圖示對(duì)應(yīng)的狀態(tài)數(shù)據(jù)應(yīng)該是
這一定義的內(nèi)在假定是,當(dāng)WLM試圖幫助作業(yè)時(shí),它將檢驗(yàn)每個(gè)資源,并根據(jù)其N(xiāo)QO值給予持有者必要的幫助。如果這一拓?fù)浔蛔鳛閱我坏馁Y源群集對(duì)待,則TxA將從群集Cab繼承一個(gè)NQO值1。如果作為兩個(gè)群集對(duì)待,則WLM應(yīng)得出如下結(jié)論1.Ca不需要幫助,因?yàn)槌钟姓叩腘QO3,比資源群集的NQO4更有需求。
2.Cb需要幫助,因?yàn)槿杭腘QO1,比TxA的NQO3更有需求。
由于不論這一場(chǎng)景是作為一個(gè)還是兩個(gè)資源群集對(duì)待,TxA最后都繼承NQO值1,所以我們能選擇二者中的任何一個(gè)。管理兩個(gè)“平凡的”(單個(gè)資源的)群集比管理單個(gè)合成群集更有效,這是由于需要測(cè)試何時(shí)應(yīng)分解該合成群集,因此,這一案例被作為兩個(gè)平凡的資源群集對(duì)待。例5簡(jiǎn)單的三向場(chǎng)景(3wayEasy)這個(gè)例子是簡(jiǎn)單的三系統(tǒng)場(chǎng)景。它也是一個(gè)傳遞閉合案例,但它的非對(duì)稱(chēng)性拓?fù)潢P(guān)系迫使系統(tǒng)去跟蹤那些沒(méi)有來(lái)自資源管理器的本地等待者/持有者信息的資源。表示符號(hào)與例1中相同。
事件序列按時(shí)間順序列于下表
至t=5為止發(fā)生的事件已包括在前面的例子中。圖7E顯示t=5之后的拓?fù)潢P(guān)系。在這一時(shí)刻的狀態(tài)數(shù)據(jù)如下表所示
這里有意思的是Sy3未涉及Ra,然而它跟蹤至少某些關(guān)于Ra的數(shù)據(jù),以確定TxC的NQO應(yīng)為1(從Sy1上的TxA繼承的)。然而,這不應(yīng)造成很大困難Sy1和Sy2不知道哪些其他系統(tǒng)涉及Ra,這只是在所有系統(tǒng)都已廣播了它們的最新拓?fù)鋽?shù)據(jù)之后才成為“可發(fā)現(xiàn)的”(當(dāng)然,這是一個(gè)運(yùn)動(dòng)的目標(biāo))。這樣,無(wú)論如何Sy1和Sy2必須廣播它們的數(shù)據(jù)。額外的負(fù)擔(dān)是Sy3必須系統(tǒng)地記錄它從其對(duì)等者那里接收的概要數(shù)據(jù),但是,只要它保持不涉及Ra,則不會(huì)調(diào)用復(fù)雜的、基于事務(wù)的邏輯。這很可能通過(guò)廣播群集NQO及導(dǎo)致該NQO的系統(tǒng)的標(biāo)識(shí)來(lái)消除掉,但當(dāng)?shù)搅嗽俅伟讶杭蚱瞥蔀檩^小部分的時(shí)候有一些問(wèn)題會(huì)浮現(xiàn)出來(lái)。跟蹤每個(gè)資源似乎是為了我們看到的導(dǎo)致正確NQO的某種東西所付出的小的代價(jià)。
從這一狀態(tài)解開(kāi)的過(guò)程與先前的例子中相同。
例6打破一個(gè)群集的三向場(chǎng)景(3wayBreakClu)
這是一個(gè)三系統(tǒng)傳遞閉合案例,其中在沒(méi)有任何“爭(zhēng)用結(jié)束”事件驅(qū)動(dòng)我們的情況下,一個(gè)大的群集被打破為較小的群集。這一例子還顯示具有多個(gè)共享資源持有者的拓?fù)潢P(guān)系。表示符號(hào)與例1中相同。
事件序列按時(shí)間順序列于下表
至t=7為止發(fā)生的事件已經(jīng)包括在前面的例子中。如前一個(gè)例子中那樣,Sy3沒(méi)有涉及Ra,然而它跟蹤至少是某些關(guān)于Ra的數(shù)據(jù)。
圖7F顯示t=7之后的拓?fù)潢P(guān)系。在這一時(shí)刻的狀態(tài)數(shù)據(jù)如下表所示
從這一狀態(tài)解開(kāi)的過(guò)程與先前的例子中相同。這一次,在t=8和t=9的事件意味著群集Cab不再必要,而且按照先前的例子,在這種情況下該群集將被打破。于是,在t=9之后,我們有圖7G和如下各表所示的狀態(tài)
如先前的案例那樣,其中資源群集被打破,但并沒(méi)有對(duì)涉及的任何資源清除爭(zhēng)用,可以看出一單個(gè)事務(wù)(這里是TxB)能同時(shí)涉及兩個(gè)不同的資源群集,只要它或者只是持有處于爭(zhēng)用中的資源,或者只是等待處于爭(zhēng)用中的資源。一旦該事務(wù)在等待任何處于爭(zhēng)用中的資源,它所持有的或等待的所有處于爭(zhēng)用中的資源都必須作為單一的資源群集接受管理。
數(shù)據(jù)結(jié)構(gòu)圖8A-8H顯示根據(jù)本發(fā)明的一組可能的數(shù)據(jù)結(jié)構(gòu),其用于存儲(chǔ)爭(zhēng)用數(shù)據(jù)。
參考圖8A,一個(gè)資源爭(zhēng)用控制表(RCCT)802用于錨定只是(或主要是)對(duì)于單個(gè)WLM子組件來(lái)說(shuō)有興趣的各種項(xiàng)目。它包括1.錨點(diǎn)804,其用于資源群集元素(RCLU)806(圖8B)。
2.錨點(diǎn)808,其用于資源元素(RSRC)810(圖8C)。
3.錨點(diǎn)812,其用于一個(gè)事務(wù)表(TRXNT)814(圖8F)。
參考圖8B,每個(gè)資源群集元素(RCLU)806含有與單個(gè)資源群集有關(guān)的數(shù)據(jù)。它包括1.群集ID 816。
2.群集NQO 818(在該群集中所有資源的最小值)。
3.錨點(diǎn)820,其用于該群集中資源的資源元素(RSRC)810(圖8C)。
參考圖8C,每個(gè)資源元素(RSRC)810描述處于爭(zhēng)用中的資源。它包括1.資源指紋/名822。
2.資源NQO 824。(人們可能為提高在廣播路徑上的效率而把本地/系統(tǒng)群集值保持分開(kāi);否則這是系統(tǒng)群集NQO)。
3.到群集元素(RCLU)806(圖8B)的指針826。
4.錨點(diǎn)828,其用于本地持有者的資源爭(zhēng)用隊(duì)列元素(RCQE)830(圖8H)。
5.錨點(diǎn)832,其用于本地等待者的資源爭(zhēng)用隊(duì)列元素(RCQE)830。
6.錨點(diǎn)834,其用于諸系統(tǒng)數(shù)據(jù)錨點(diǎn)(SDA)836(圖8D),這些系統(tǒng)數(shù)據(jù)錨點(diǎn)(SDA)836是用于關(guān)于這一資源的遠(yuǎn)程數(shù)據(jù)的。
參考圖8D,每個(gè)系統(tǒng)數(shù)據(jù)錨點(diǎn)(SDA)836用作一單個(gè)系統(tǒng)的遠(yuǎn)程系統(tǒng)信息的錨點(diǎn)。它包括1.遠(yuǎn)程系統(tǒng)ID 838。
2.錨點(diǎn)840,其用于來(lái)自這一系統(tǒng)的諸遠(yuǎn)程系統(tǒng)數(shù)據(jù)元素(RSDE)842(圖8E)。
3.值844,代表該遠(yuǎn)程系統(tǒng)的最高已知發(fā)送序列號(hào)。換言之,在外出通路上發(fā)送系統(tǒng)包括一個(gè)值(類(lèi)似于時(shí)間戳),其對(duì)每一“批”拓?fù)鋽?shù)據(jù)是相同的。每個(gè)接收系統(tǒng)將進(jìn)入消息中的值與這一值做比較;如果該消息有一個(gè)較低的值(意味著該消息是陳舊的,因?yàn)榻邮障到y(tǒng)已經(jīng)從同一發(fā)送者接收了更晚的數(shù)據(jù)),于是該消息被忽略。
4.時(shí)間戳846,當(dāng)從該遠(yuǎn)程系統(tǒng)接收一個(gè)拓?fù)湎r(shí)使用本地時(shí)鐘對(duì)其更新。
參考圖8E,每個(gè)遠(yuǎn)程系統(tǒng)數(shù)據(jù)元素(RSDE)842包括一個(gè)資源的遠(yuǎn)程系統(tǒng)信息。它包括1.到該系統(tǒng)的系統(tǒng)數(shù)據(jù)錨點(diǎn)(SDA)(圖8D)的指針848。
2.到該資源的資源元素(RSRC)810(圖8C)的指針850。
3.同一資源的其他RSDE 842的隊(duì)列鏈接852。
4.遠(yuǎn)程系統(tǒng)的NQO 854,只考慮該遠(yuǎn)程系統(tǒng)上的等待者。
5.發(fā)送時(shí)間戳856(當(dāng)被發(fā)送時(shí)在遠(yuǎn)程系統(tǒng)上的時(shí)鐘值),只用于查錯(cuò)。
6.時(shí)間戳858,代表當(dāng)被接收時(shí)的本地時(shí)鐘值,其用于查錯(cuò)和TTL處理。
7.用于這一資源的遠(yuǎn)程群集ID 860。如果該遠(yuǎn)程系統(tǒng)有一個(gè)事務(wù)既是持有者又是等待者,則所涉及的所有資源將在那里有相同的群集ID,并在這里需要處在同一群集。如果來(lái)自不同系統(tǒng)的遠(yuǎn)程數(shù)據(jù)對(duì)于哪些資源屬于一個(gè)群集不一致,則這些群集被在本地合并。
8.壽命(TTL)持續(xù)時(shí)間862,其由遠(yuǎn)程系統(tǒng)提供,對(duì)應(yīng)于該遠(yuǎn)程系統(tǒng)計(jì)劃多長(zhǎng)時(shí)間發(fā)送數(shù)據(jù)加上一點(diǎn)額外值。如果本地時(shí)間大于接收時(shí)的時(shí)間戳加上這個(gè)值,則該元素適于刪除。
參考圖8F,事務(wù)表(TRXNT)814用于錨定只是(或主要是)對(duì)于單個(gè)WLM子組件來(lái)說(shuō)有興趣的各種項(xiàng)目。它包括1.當(dāng)構(gòu)建該事務(wù)表814時(shí)的地址空間數(shù)864。
2.當(dāng)構(gòu)建該事務(wù)表814時(shí)的飛地(enclave)數(shù)866。
3.從事務(wù)表起始到第一個(gè)表?xiàng)l目868的偏移量868。
4.用于這樣的事務(wù)的條目(TRXNE)(可達(dá)個(gè)數(shù)864)的區(qū)域870,那是地址空間。
5.用于這樣的事務(wù)的條目(TRXNE)(可達(dá)個(gè)數(shù)866)的區(qū)域872,那是飛地。
參考圖8G,在事務(wù)表(TRXNT)814的區(qū)域870或872中的每個(gè)條目(TRXNE)874包括關(guān)于單個(gè)事務(wù)的信息,該事務(wù)涉及至少一個(gè)資源,該資源的爭(zhēng)用由WLM管理。條目874包括1.類(lèi)型876地址空間或飛地。
2.這一事務(wù)的地址空間ID(ASID)或飛地ID 878。
3.這一事務(wù)的地址空間或飛地令牌880。ASID和飛地ID是可重用的;即使當(dāng)這些ID重用時(shí),也能由令牌提供一單個(gè)映像內(nèi)的唯一性。
4.對(duì)于由這一事務(wù)持有的資源的爭(zhēng)用元素(RCQE)830(圖8H)的隊(duì)列884的錨點(diǎn)882。
5.對(duì)于由這一事務(wù)等待的資源的爭(zhēng)用元素(RCQE)830(圖8H)的隊(duì)列884的錨點(diǎn)886。
6.這一事務(wù)的NQO 888。
參考圖8H,每個(gè)資源爭(zhēng)用隊(duì)列元素(RCQE)830使一個(gè)事務(wù)(持有者或等待者)與一資源關(guān)聯(lián)。它包括1.該事務(wù)的TRXNE 874在TRXNT 810中的偏移量892。
2.這一事務(wù)的下一個(gè)/前一個(gè)RCQE 830的隊(duì)列鏈接894。
3.指向該資源的資源元素(RSRC)810的指針896。
4.這一資源的下一個(gè)/前一個(gè)RCQE 830的隊(duì)列鏈接898。
5.持有/等待位899(很可能只用于隊(duì)列驗(yàn)證)。
圖9顯示如何用圖8A-8H中的各種數(shù)據(jù)結(jié)構(gòu)收集圖4中所示并在伴隨圖4描述的表格中對(duì)Sy2概括的那個(gè)爭(zhēng)用場(chǎng)景。
盡管已顯示和描述了一個(gè)特定實(shí)施例,但對(duì)本領(lǐng)域技術(shù)人員而言,各種修改是顯然的。這樣,一個(gè)本地系統(tǒng)能只為已知根據(jù)本地爭(zhēng)用數(shù)據(jù)而屬于一個(gè)共同群集的那些資源使用一個(gè)共同的群集ID,而不是為相信是一共同群集的部分的全部資源(根據(jù)本地的或遠(yuǎn)程的爭(zhēng)用數(shù)據(jù))發(fā)送出一個(gè)共同的群集ID。對(duì)于本領(lǐng)域技術(shù)人員而言,顯然還可以有其他改變。
權(quán)利要求
1.一種用于對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理的方法,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述方法包括如下步驟識(shí)別在一用戶(hù)鏈中打頭的不是一個(gè)等待者的用戶(hù),在所述用戶(hù)鏈中,每個(gè)在所述鏈中有下一個(gè)用戶(hù)的用戶(hù)持有由所述下一個(gè)用戶(hù)正在等待的資源;以及管理在所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中最有需求的等待者的需求。
2.權(quán)利要求1的方法,其中所述管理步驟包括如下步驟把系統(tǒng)資源分配給所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中所述最有需求的等待者的需求。
3.權(quán)利要求1中的方法,其中所述識(shí)別步驟包括如下步驟定義所述資源的群集,其中,在該群集中的每個(gè)資源或者被等待該群集中另一資源的一個(gè)用戶(hù)所持有,或者由持有該群集中另一資源的一個(gè)用戶(hù)所等待。
4.權(quán)利要求3的方法,其中所述管理步驟包括如下步驟確定對(duì)所述群集中任何資源的最有需求的等待者的需求。
5.一種用于對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理的方法,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述方法包括如下步驟識(shí)別所述資源的群集,其中,在該群集中的每個(gè)資源或者由等待該群集中另一資源的一個(gè)用戶(hù)所持有,或者由持有該群集中另一資源的一個(gè)用戶(hù)所等待;確定對(duì)所述群集中任何資源的最有需求的等待者的需求;識(shí)別所述群集中一個(gè)資源的持有者,它不在等待任何其他資源;以及管理所述資源的所述持有者,如同它的需求至少是對(duì)所述群集中任何資源的所述最有需求的等待者的需求。
6.權(quán)利要求5的方法,其中所述管理步驟包括如下步驟把系統(tǒng)資源分配給所述資源的所述持有者,如同它的需求至少是對(duì)所述群集中任何資源的所述最有需求的等待者的需求。
7.權(quán)利要求5的方法,其中所述識(shí)別一個(gè)群集的步驟是對(duì)收到一個(gè)資源的爭(zhēng)用狀態(tài)變化的通知作出響應(yīng)而進(jìn)行的,并包括如下步驟如果一個(gè)資源現(xiàn)在被等待一個(gè)群集中另一資源的一用戶(hù)所持有或者現(xiàn)在被持有該群集中另一資源的一用戶(hù)所等待,則把該資源新賦予該群集。
8.權(quán)利要求5的方法,其中所述識(shí)別一個(gè)群集的步驟是對(duì)收到一個(gè)資源的爭(zhēng)用狀態(tài)變化的通知作出響應(yīng)而進(jìn)行的,并包括如下步驟如果一個(gè)資源不再被等待一個(gè)群集中另一資源的一用戶(hù)所持有或者不再被持有一個(gè)群集中另一資源的一用戶(hù)所等待,則從該群集中去掉該資源。
9.一種用于對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理的裝置,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述裝置包括識(shí)別邏輯,用于識(shí)別在用戶(hù)鏈中打頭的不是一個(gè)等待者的用戶(hù),在所述用戶(hù)鏈中,每個(gè)在所述鏈中有下一個(gè)用戶(hù)的用戶(hù)持有由所述下一個(gè)用戶(hù)正在等待的資源;以及管理邏輯,用于管理在所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中所述最有需求者的需求。
10.權(quán)利要求9的裝置,其中所述管理邏輯把系統(tǒng)資源分配給在所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中所述最有需求的等待者的需求。
11.一種用于對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理的裝置,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述裝置包括識(shí)別邏輯,用于識(shí)別所述資源的群集,其中,在該群集中的每個(gè)資源或者由等待該群集中另一資源的一個(gè)用戶(hù)所持有,或者由持有該群集中另一資源的一個(gè)用戶(hù)所等待;確定邏輯,用于確定所述群集中任何資源的最有需求的等待者的需求;識(shí)別邏輯,用于識(shí)別所述群集中一個(gè)資源的持有者,該持有者不在等待任何其他資源;以及管理邏輯,用于管理所述資源的所述持有者,如同它的需求至少是所述群集中任何資源的所述最有需求的等待者的需求。
12.權(quán)利要求11的裝置,其中所述管理邏輯把系統(tǒng)資源分配給所述資源的所述持有者,如同它的需求至少是所述群集中任何資源的所述最有需求的等待者的需求。
13.權(quán)利要求11的裝置,其中所述用于識(shí)別群集的邏輯對(duì)收到一個(gè)資源爭(zhēng)用狀態(tài)變化的通知作出響應(yīng),把該資源新賦予該群集,如果該資源現(xiàn)在被等待該群集中另一資源的用戶(hù)所持有或者現(xiàn)在被持有該群集中另一資源的用戶(hù)所等待的話(huà)。
14.權(quán)利要求11的裝置,其中所述用于識(shí)別群集的邏輯對(duì)收到一個(gè)資源爭(zhēng)用狀態(tài)變化的通知作出響應(yīng),從一群集中去掉該資源,如果該資源不再被等待該群集中另一資源的用戶(hù)所持有或者不再被持有該群集中另一資源的用戶(hù)所等待的話(huà)。
15.一種機(jī)器可讀的程序存儲(chǔ)設(shè)備,其有形地體現(xiàn)可由該機(jī)器執(zhí)行的指令程序,用于執(zhí)行方法步驟以對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它正尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述方法包括步驟識(shí)別在一用戶(hù)鏈中打頭的不是一個(gè)等待者的用戶(hù),在所述用戶(hù)鏈中,每個(gè)在所述鏈中有下一個(gè)用戶(hù)的用戶(hù)持有由所述下一個(gè)用戶(hù)正在等待的資源;以及管理在所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中最有需求的等待者的需求。
16.權(quán)利要求15的程序存儲(chǔ)設(shè)備,其中所述管理步驟包括如下步驟把系統(tǒng)資源分配給所述鏈中打頭的所述用戶(hù),如同它的需求至少是所述鏈中所述最有需求的等待者的需求。
17.一種機(jī)器可讀的程序存儲(chǔ)設(shè)備,其有形地體現(xiàn)可由該機(jī)器執(zhí)行的指令程序,用于執(zhí)行方法步驟以對(duì)在一信息管理系統(tǒng)中訪(fǎng)問(wèn)一個(gè)或多個(gè)資源的用戶(hù)之間的資源爭(zhēng)用進(jìn)行管理,每個(gè)所述用戶(hù)有被賦予的需求并且能夠是它尋求訪(fǎng)問(wèn)的資源的持有者或等待者,所述方法步驟包括識(shí)別所述資源的一群集,其中,在該群集中的每個(gè)資源或者由等待該群集中另一資源的一個(gè)用戶(hù)所持有,或者由持有該群集中另一資源的一個(gè)用戶(hù)所等待;確定對(duì)所述群集中任何資源最有需求的需求者的需求;識(shí)別所述群集中一個(gè)資源的持有者,該持有者不在等待任何其他資源;以及管理所述資源的所述持有者,如同它的需求至少是所述群集中任何資源的所述最有需求的等待者的需求。
18.權(quán)利要求17的程序存儲(chǔ)設(shè)備,其中所述管理步驟包括如下步驟把系統(tǒng)資源分配給所述資源的所述持有者,如同它的需求至少是所述群集中任何資源的所述最有需求的等待者的需求。
19.權(quán)利要求17的程序存儲(chǔ)設(shè)備,其中所述識(shí)別一個(gè)群集的步驟是對(duì)收到一個(gè)資源爭(zhēng)用狀態(tài)變化的通知作出響應(yīng)而進(jìn)行的,并包括如下步驟如果一個(gè)資源現(xiàn)在被等待一個(gè)群集中另一資源的一用戶(hù)所持有或者現(xiàn)在被持有該群集中另一資源的一用戶(hù)所等待,則把該資源新賦予該群集。
20.權(quán)利要求17的程序存儲(chǔ)設(shè)備,其中所述識(shí)別一個(gè)群集的步驟是對(duì)收到一個(gè)資源爭(zhēng)用狀態(tài)變化的通知作出響應(yīng)而進(jìn)行的,并包括如下步驟如果一個(gè)資源不再被等待一個(gè)群集中另一資源的用戶(hù)所持有或者不再被持有該群集中另一資源的用戶(hù)所等待,則從該群集中去掉該資源。
全文摘要
一種方法和裝置,其用來(lái)管理訪(fǎng)問(wèn)一個(gè)多系統(tǒng)群集中的資源的用戶(hù)之間對(duì)資源的爭(zhēng)用,其方法是識(shí)別爭(zhēng)用鏈,其中每個(gè)用戶(hù)在等待一個(gè)在該鏈中處于它之前的用戶(hù)持有的資源,并把系統(tǒng)資源分配給在該鏈中打頭的用戶(hù),如同它們的需求至少是該鏈中最有需求的等待者的需求。為最佳資源分配所必須的爭(zhēng)用數(shù)據(jù)被有效地跨系統(tǒng)群集分發(fā),即使在系統(tǒng)間的數(shù)據(jù)流是極小的,而且沒(méi)有一個(gè)系統(tǒng)具有跨系統(tǒng)爭(zhēng)用的完全視圖。每個(gè)系統(tǒng)跟蹤處于爭(zhēng)用中的、具有本地用戶(hù)作為持有者或等待者的資源,并把這些資源分組成爭(zhēng)用鏈中涉及的資源群集,在這些群集中的每個(gè)資源或者由等待該群集中另一資源的本地用戶(hù)所持有,或者由持有該群集中另一資源的本地用戶(hù)所等待。
文檔編號(hào)G06F9/46GK1514366SQ20031012159
公開(kāi)日2004年7月21日 申請(qǐng)日期2003年12月29日 優(yōu)先權(quán)日2002年12月31日
發(fā)明者J·E·阿維, J E 阿維 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司