專利名稱:用于管理多系統(tǒng)群集中資源爭用的方法和裝置的制作方法
技術領域:
本發(fā)明涉及用于管理用戶之間為訪問信息處理系統(tǒng)中的串行化資源的爭用。更具體地,本發(fā)明涉及用于管理包含多個這種系統(tǒng)的系統(tǒng)群集中的這種爭用的方法和裝置。
背景技術:
資源爭用是信息處理系統(tǒng)中眾所周知的現象。當用戶(例如,一進程或其他工作單元)試圖訪問已由另一用戶持有的資源,且第二個用戶所請求的訪問與第一個用戶的不相容時會發(fā)生資源爭用。例如,如果任何一個用戶請求獨占地訪問所討論的資源,則將發(fā)生資源爭用。資源管理器是管理競爭的請求者之間對于其控制的資源的爭用的軟件部件,這種管理是通過準許一個或多個這樣的用戶作為持有者訪問該資源并將任何剩余的用戶放置在等候者池中直到該資源變得可用為止來進行的。
在具有多個資源管理器和多個工作單元的諸如IBM z/OSTM操作系統(tǒng)的計算機操作系統(tǒng)中,資源爭用管理是一個復雜的問題??赡苄纬蔂幱面?,或換句話說,爭用可能跨資源。例如,作業(yè)A等待資源R1,卻持有R2,而作業(yè)B持有R1,卻在等待R3,而資源R3又由作業(yè)C持有。爭用可能跨系統(tǒng)。在上面的例子中,每一作業(yè)可能在分離的系統(tǒng)上。爭用可能跨資源管理器。例如,R1可以是GRS入隊(enqueue),R2可以是DB2TM鎖存器(latch)。分別地,z/OS的全局資源串行化(GRS)部件管理入隊,而IMSTM資源鎖管理器(IRLM)管理DB2資源。
跨資源爭用通常是在單個資源管理器(例如,GRS)內通過跟蹤每一資源的持有者和等候者的拓撲并找到任何交叉點來解決的。跨系統(tǒng)爭用通常是通過使資源管理器明了整個群集的數據(將群集作為一個單元而不是作為各獨立的系統(tǒng)來管理)來解決的。跨資源管理器爭用通常是通過使一報告產品查詢所有接口并將數據相互關聯,就好象它是一個虛擬資源管理器一樣,來“解決”的。因為該問題對于處于爭用中的資源數量是階O(2n)的,所以它在計算上也是復雜的。
z/OS的基本MVSTM部件具有簡單的效率方案(一般稱為“入隊提升”)自動(及暫時)提升任何持有據報告處于爭用中的資源的工作對CPU和MPL的訪問,而不注意該工作的需要程度。這相當于就好象存在資源的“重要”等候者一樣來管理持有者,而不管實際拓撲如何。為了理解這種方案的操作,考慮下面的例子。假設1.作業(yè)A持有資源R1;2.作業(yè)B持有資源R2并等待R1;3.作業(yè)C等待R2。
在符號上,這可以表示為鏈C→B→A,其中大寫字母代表上述作業(yè),而符號→(該鏈中的鏈接)表示該符號左邊的作業(yè)在等待由該符號右邊的作業(yè)所持有的資源。這樣,上述鏈的意思是作業(yè)C在等待由作業(yè)B持有的資源,而作業(yè)B又在等待由作業(yè)A持有的資源。
假定這些是GRS資源,則因為作業(yè)A和B持有處于競爭下的資源,所以傳統(tǒng)的MVS實現將幫助它們,平等地并在有限的時間內提升每一個作業(yè)。但是,幫助B不會有益處,因為B實際上在等待A。如果B本身是多任務的,則該幫助實際上可能會危害競爭的工作,而對于資源爭用未產生任何作用。
發(fā)明內容
作為上述同時提交的申請的主題的本發(fā)明的一個方面包括用于管理用戶之間對于訪問一信息處理系統(tǒng)中的資源的爭用的方法和裝置,其中每一用戶具有所指派的需求并且能夠作為其正尋求訪問的資源的持有者或等候者的。根據本發(fā)明的這一方面,識別出在用戶鏈的頭部的不是等候者的用戶,在該用戶鏈中具有該鏈中的下一用戶的每一用戶持有該下一用戶正等待的資源。對該用戶進行管理,就好像它的需求至少是該鏈中需求最大的等候者的需求,這優(yōu)選地是通過向該用戶分配系統(tǒng)資源,就好像它的需求至少是該需求最大的等候者的需求來完成的。
優(yōu)選地,并作為本發(fā)明的這一方面的獨立發(fā)明特征,通過識別資源群集,其中該群集中的每一資源或者由正等待該群集中的另一資源的用戶所持有或者由正持有該群集中的另一資源的用戶所等待,及確定該群集中任何資源的需求最大的等候者的需求,來識別爭用鏈。識別身為該群集中的一資源的持有者、但未在等待任何其他資源的用戶,并再次優(yōu)選地通過向該資源的此持有者分配系統(tǒng)資源,就好象它的需求至少是該群集中任何資源的需求最大的等候者的需求,來對該用戶進行管理,就好象它的需求至少是這種需求最大的等候者的需求。
優(yōu)選地,響應于接收到一資源的爭用狀態(tài)中的變化的通知,執(zhí)行識別群集的步驟。這樣,如果現在資源正由等待群集中的另一資源的用戶所持有,或正由持有群集中的另一資源的用戶所等待,則將該資源新分配給該群集。另一方面,如果資源不再由正等待群集中的另一資源的用戶所持有,或不再由持有群集中的另一資源的用戶所等待,則將該資源從該群集中移除。
因此,本發(fā)明的這一方面設想將“需求”因子結合到基本系統(tǒng)資源分配機制中,以便可如此運行鏈頭部的作業(yè)(例如上面的作業(yè)C,具有為1的需求),就好像它具有該鏈中其他位置上的需求更大的作業(yè)的需求因子,直到其釋放該資源為止。將需求的概念結合到前面的例子中,可更好地理解它怎樣表現得不同。假設1.作業(yè)A,具有為4的需求,持有資源R1。(在本說明書中,較小的數字表示較大的需求,因此它們可被認為“需要幫助的優(yōu)先級”。)2.作業(yè)B,具有為5的需求,持有資源R2并等待R1。
3.作業(yè)C,具有為1的需求,等待R2。
符號上,這可表示為鏈C(1)→B(5)→A(4),其中大寫字母代表作業(yè),括號中的數字代表那些作業(yè)的“需求”,且符號“→”(該鏈中的“鏈接”)表示該符號左邊的作業(yè)在等待由該符號右邊的作業(yè)所持有的資源。這樣,上面的鏈意指具有為1的需求的作業(yè)C在等待由具有為5的需求的作業(yè)B持有的資源,而作業(yè)B又在等待由具有為4的需求的作業(yè)A所持有的資源。
以這一方式使用“需求”因子具有幾個可能不是顯而易見的優(yōu)點。首先,它避免了幫助如上面的B的工作,因為我們理解作業(yè)B還在等待另一資源,這樣避免了一個在最好的情況下是無用的、在最壞的情況下會造成對無關競爭工作的損壞的行為。第二,它給予系統(tǒng)資源分配器使得它能夠幫助A的知識,這種幫助比在沒有此知識時更多,并且是不限期的,而不是僅僅有限時間的。雖然傳統(tǒng)實現會忽略此鏈,并在某一有限時間段內將A和B都作為“重要的”來對待,但對于本發(fā)明,可以理解A事實上具有為1的需求,或者說是“最重要的”,只要C在等待。第三,它給予系統(tǒng)資源分配器允許它在它希望的情況下放棄幫助該鏈中頭部的持有者的知識,例如如果網絡中需求最大的工作是當前的持有者的話。
本發(fā)明的這第一方面可實現于單個系統(tǒng)上或實現于包括多個這種系統(tǒng)的系統(tǒng)群集中。識別資源群集的本發(fā)明的變體尤其適于在多系統(tǒng)實現中使用,因為它需要交換僅僅本地爭用數據的子集,如下面所述的那樣。
作為本申請的主題的本發(fā)明的另一方面設想這樣一協(xié)議,該協(xié)議用于管理多個系統(tǒng)之中的資源分配,同時傳遞對于處于爭用中的多系統(tǒng)資源的數量的大約階O(n)的很少的數據。
合并了上述單系統(tǒng)發(fā)明方面的本發(fā)明的這另一方面設想用于管理用戶之間對于訪問包括多個系統(tǒng)的系統(tǒng)群集中的資源的爭用的方法和裝置,每一用戶具有所指派的需求并能夠作為其正尋求訪問的資源的持有者或等候者。根據本發(fā)明的這一方面,作為本地系統(tǒng)運行的每一個這樣的系統(tǒng)存儲本地群集數據,此本地群集數據指示根據本地系統(tǒng)上的爭用而將資源分為一些本地群集的分組,并對于每一本地群集指示對于該本地群集中的一個或多個資源的需求。每一系統(tǒng)還從作為遠程系統(tǒng)運行的、系統(tǒng)群集中的其他系統(tǒng)接收遠程群集數據,此遠程群集數據對于每一這種遠程系統(tǒng)指示根據該遠程系統(tǒng)上的爭用而將資源分為一些遠程群集的分組,并對于每一遠程群集指示對于該遠程群集中的一個或多個資源的需求。每一本地系統(tǒng)組合本地群集數據和遠程群集數據,以生成組合群集數據,該組合群集數據指示根據所述各系統(tǒng)之中的爭用而將資源分為一些組合群集的分組,并對于每一個組合群集指示對于該組合群集中的一個或多個資源的需求。然后,每一本地系統(tǒng)使用這一組合群集數據,來管理該組合群集中的資源的本地系統(tǒng)上的持有者。
優(yōu)選地,本地、遠程和組合群集數據指示所考慮的群集中任何資源的需求最大的等候者的需求,且通過識別未在等待任何其他資源的持有者及向這種持有者分配系統(tǒng)資源,就好像它們的需求至少是相應組合群集中的任何資源的需求最大的等候者的需求,來管理該組合群集中的資源的本地系統(tǒng)上的持有者。
優(yōu)選地,如果每一本地系統(tǒng)上的一用戶在等待另一資源的時候正持有一個資源,則該本地系統(tǒng)將該對資源分配給一共同本地群集,并且響應于接收到關于該本地系統(tǒng)上的一用戶的資源爭用狀態(tài)中的變化的通知,該本地系統(tǒng)更新該本地群集數據。每一本地系統(tǒng)還將其包括任何更新的本地群集數據傳送到遠程系統(tǒng),該些遠程系統(tǒng)將所傳送的群集數據作為相對于接收系統(tǒng)的遠程群集數據來對待,然后據此更新它們的組合群集數據。所傳送的本地群集數據指示資源、根據該本地系統(tǒng)上的爭用該資源被分配到的群集、及在該本地系統(tǒng)上對于該資源的需求。
使用來自該群集中每一參與的資源管理器實例的部分數據(而不是全部資源拓撲),以及“需求”的度量,每一系統(tǒng)單獨理解一資源的需求最大的等候者(包括跨“以上各項”資源的傳遞閉包中的任何等候者)是否比該鏈頭部的資源的任何持有者需求更大是可能的。然后,該系統(tǒng)可向這種持有者分配資源,就好像它們的需求度量不低于需求最大的被阻塞的那件工作。
該協(xié)議每一資源只傳送一組信息,而不是來自每一系統(tǒng)的持有者和等候者的完整列表,從而沒有系統(tǒng)具有該整個群集之上的爭用的完整概觀。該數據本身僅包括對群集唯一的資源名稱、發(fā)送系統(tǒng)上的需求最大等候者的需求值、及對發(fā)送系統(tǒng)唯一的令牌。如果對于兩個資源,后面的令牌匹配,則它們的管理必須結合起來(僅根據發(fā)送系統(tǒng)的本地數據來分配這些令牌)。該協(xié)議還只發(fā)送關于處于爭用中的資源的數據,即使拓撲中的某些件工作持有未處于爭用中的其他資源。可以各種方式對發(fā)送系統(tǒng)群集信息進行編碼。這樣,不是僅根據發(fā)送系統(tǒng)上的本地爭用發(fā)送令牌,而是如在一優(yōu)選實施例中那樣,本地系統(tǒng)也可根據遠程爭用發(fā)送群集名稱,以及非平凡群集分配(即對包括不只一個資源的群集的分配)是基于本地還是基于遠程信息的指示。
優(yōu)選地,本發(fā)明實現為計算機操作系統(tǒng)的一部分,或作為與這種操作系統(tǒng)協(xié)同工作的“中間件”軟件。這一軟件實現包括以指令程序為形式的邏輯,其中的指令程序可由硬件機器執(zhí)行以完成本發(fā)明的方法步驟。該指令程序可包含在使用半導體、磁、光和其他存儲技術、包括一個或多個卷的程序存儲裝置中。
圖1示出包含本發(fā)明的計算機系統(tǒng)群集。
圖2A-2C示出各種類型的爭用鏈。
圖3示出向爭用鏈頭部的用戶分配資源的過程。
圖4示出在幾個系統(tǒng)上的事務和資源之間典型的爭用情形。
圖5示出響應來自本地資源管理器的通知而執(zhí)行的一般過程。
圖6示出響應接收到來自遠程系統(tǒng)的爭用數據廣播而執(zhí)行的一般過程。
圖7A-7G示出各種操作示例中的多系統(tǒng)爭用狀態(tài)。
圖8A-8H示出在本發(fā)明的一個實施例中用于存儲爭用數據的各種數據結構。
圖9示出圖4中所示的爭用情形怎樣由群集各系統(tǒng)中的一個系統(tǒng)所捕獲。
具體實施例方式
圖1示出了包含本發(fā)明的計算機系統(tǒng)群集100。群集100包含由任何適當類型的互連104連接到一起的各系統(tǒng)102(Sy1,Sy2,Sy3)。雖然示出了示例性的三個系統(tǒng),但本發(fā)明不限于任何特定的系統(tǒng)數量。群集100具有一個或多個全局或多系統(tǒng)資源106,它們由來自各個系統(tǒng)的請求者所爭用。
該群集的每一系統(tǒng)102可包括一分離的物理機器或一個或多個物理機器的一分離的邏輯分區(qū)。每一系統(tǒng)包含操作系統(tǒng)(OS)108,該操作系統(tǒng)除了執(zhí)行本發(fā)明的功能之外,還執(zhí)行提供系統(tǒng)服務和管理系統(tǒng)資源的使用的通常功能。雖然本發(fā)明不局限于任何特定的硬件或軟件平臺,但優(yōu)選地,每一系統(tǒng)102包括運行于IBM zSeriesTM服務器或這種服務器的邏輯分區(qū)之上的IBM z/OS操作系統(tǒng)的實例。
每一系統(tǒng)102包含一個或多個請求者110,這些請求者相互之間爭奪對多系統(tǒng)資源106及可選地本地資源112的訪問,其中本地資源112只對同一系統(tǒng)上的請求者可用。請求者110可包括爭奪對資源106或112的訪問,且為了分配系統(tǒng)資源的目的被作為單個實體來看待的任何實體。
(分配給請求者110的系統(tǒng)資源應該與作為請求者之間的爭用對象的資源106和112區(qū)分開。系統(tǒng)資源是以通常對請求者自身透明的方式分配給請求者110的,以提高諸如吞吐量或響應時間的某種性能度量。另一方面,資源106和112由請求者作為它們的執(zhí)行的一部分而顯式地請求。在必須區(qū)分它們時,使用諸如“串行化資源”或類似的術語來稱呼后一類資源。)每一操作系統(tǒng)108包含幾個對本發(fā)明來說有興趣的部件,包括一個或多個資源管理器114和工作負荷管理器(WLM)116。每一資源管理器114管理競爭的請求者110之間對于它控制的資源106和112的爭用,這種管理是通過準許一個或多個這樣的請求者作為持有者訪問資源并將任何剩余的請求者放置在等候者池中直到該資源變得可用為止來進行的。盡管本發(fā)明并不限于任何特定的資源管理器,但一個這樣的資源管理器(用于多系統(tǒng)資源106)可以是z/OS操作系統(tǒng)的全局資源串行化(GRS)部件,該部件在諸如IBM出版物z/OS MVS PlanningGlobal Resource Serialization(z/OS MVS規(guī)劃全局資源串行化),SA22-7600-02(2002年3月)的參考文獻中進行了描述,在此引入該參考文獻作為參考。此外,雖然資源管理器114被描述為是操作系統(tǒng)108的一部分(如GRS是z/OS的一部分),但其他資源管理器(諸如IRLM)可以獨立于操作系統(tǒng)而存在。
工作負荷管理器(WLM)116根據指派給工作單元(或它所屬于的服務類)、并在某種意義上反映該工作單元相對于正被處理的其他工作單元的相對優(yōu)先級的“需求”值向該工作單元分配系統(tǒng)資源(其可能是地址空間、工作區(qū)域(enclave)等)。雖然本發(fā)明并不限于任何特定的工作負荷管理器,但這樣的一種工作負荷管理器是IBM z/OS操作系統(tǒng)的工作負荷管理部件,該部件在諸如IBM出版物z/OS MVS PlanningWorkloadManagement(z/OS MVS規(guī)劃工作負荷管理),SA22-7602-04(2002年10月),和z/OS MVS ProgrammingWorkload Management Services(z/OS MVS程序設計工作負荷管理服務),SA22-7619-03(2002年10月)的參考文獻中進行了描述,在此將這兩個參考文獻引入作為參考。這樣的工作負荷管理部件與IBM z/OS操作系統(tǒng)的系統(tǒng)資源管理器(SRM)部件協(xié)同進行工作,如在諸如IBM出版物z/OS MVS Initialization andTuning Guide(z/OS MVS初始化和調整向導),SA22-7591-01(2002年3月),尤其第3章(3-1頁到3-84頁)的參考文獻中描述的,在此將該出版物引入作為參考。由于這些部件交互的特定方式不是本發(fā)明的一部分,假定這些部件都由圖1中標記“WLM”的框116所標引。
向用戶指派需求值的特定方式和根據所指派的需求值向用戶分配系統(tǒng)資源的方式都不是本發(fā)明的一部分。本領域中公知的多種技術中的任何一種都可用于這兩種方式之一。優(yōu)選地,上述需求值應該是在整個該系統(tǒng)群集之中具有相同意義的值。在所示的實施例中,它是根據現行WLM策略計算的動態(tài)值,該值將資源組限制和重要性集成到可在各系統(tǒng)之間被可靠比較的單個數量中。雖然順序是任意的,但在本說明書中,較小數字代表較高需求或優(yōu)先級,從而具有為1的需求的用戶比具有為5的需求的用戶“需求更大”。
圖2A-2C示出在系統(tǒng)群集100中的資源106和112之中可能形成的各種爭用鏈。這些鏈更正式地被稱為有向圖,但這里使用鏈的術語。在這些鏈中由箭頭表示的每一鏈接代表這樣的一關系,其中某一用戶(由箭頭尾部的節(jié)點代表)在等待由另一用戶(由箭頭頭部的節(jié)點代表)持有的資源。這種關系的“傳遞閉包”是通過包括涉及該鏈的任何節(jié)點的所有這種關系而形成的鏈,從而如果順著這些箭頭行進,則所有節(jié)點最終指向沒有在等待爭用中的任何資源并因此位于該鏈的頭部的持有者。(下面在圖2D的說明中討論一個鏈是否能具有不只一個頭部。)圖2A示出在上面背景技術和發(fā)明內容部分中描述的爭用情形,其中用戶C在等待由用戶B持有的資源R2,用戶B又在等待由用戶A持有的資源R1。如這里所公開的,向作為持有者而不是等候者并因此處于該鏈頭部的用戶A分配系統(tǒng)資源,就好象它的需求至少是等候者B和C中需求最大者的需求一樣,因為它的這兩個等候者都將從使A完成對資源R1的占用中受益。用戶B也是持有者,但它未被給予這一優(yōu)先的分配,因為它在等待資源并因此未在運行;這樣,此時向B分配更多資源的是沒有意義的(盡管以后在B作為持有者獲得資源R1時會有意義)。
圖2A中所示的爭用情形是直的鏈,其中每一用戶正持有和/或等待由單個用戶所持有的資源。但是,一般地說,爭用鏈可以分支,從而單個用戶可能正持有由多個用戶所等待的資源,或在等待由多個用戶所持有的資源。某些資源還可能被請求共享訪問,從而允許多個同時的持有者。
圖2B示出具有第一類型分支的爭用情形,其與圖2A中所示情形的不同之處在于,現在一附加用戶D在等待由用戶B所持有的資源R3。這里,向用戶A分配系統(tǒng)資源,就好象它的需求至少是等候者B、C和D中的需求最大者的需求一樣,因為所有這些等候者將從使A完成對資源R1的占用中受益。
圖2C示出具有兩種類型的分支的爭用情形,其與圖2A中所示情形的不同之處在于,現在用戶C在等待由用戶D控制的附加資源R3,而用戶D在等待由用戶A控制的資源R4。這里再次地,向用戶A分配系統(tǒng)資源,就好象它的需求至少是等候者B、C和D中的需求最大者的需求一樣,因為所有這些等候者將從使用戶A完成對資源R1的占用中受益。
最后,圖2D示出具有第二類型分支的爭用情形,其與圖2A中所示鏈的不同之處在于,現在用戶C還在等待由用戶D持有的資源R3,而用戶D又在等待由用戶E持有的資源R4。理論上,可將這分析為兩個部分重疊的鏈,每一個鏈具有一個頭部,一個鏈是C→B→A,而另一個鏈是C→D→E。在第一個鏈中,用戶A被分配系統(tǒng)資源,就好象它的需求至少是等候者B和C中的需求最大者的需求一樣,而在第二個鏈中,用戶E被分配系統(tǒng)資源,就好象它的需求至少是等候者C和D中的需求最大者的需求一樣。
參照圖3,對此進行總結,在理想的實現中,將首先識別不是等候者的在用戶鏈頭部的用戶(步驟302),在該鏈中每一具有該鏈中下一用戶的用戶正持有該下一用戶正在等待的資源。在圖2D中,這對于包括用戶A-C的鏈來說將是用戶A,在包括用戶C-E的鏈中將是用戶E。然后,將向在該鏈頭部的用戶分配系統(tǒng)資源,就好象它的需求至少是該鏈中需求最大的等候者的需求(步驟304)。也就是說,如果存在這樣的具有比該鏈頭部的用戶更大的需求的需求最大的等候者,則將根據這樣的等候者的需求向此用戶分配系統(tǒng)資源,如果此等候者的需求大于該用戶的需求的話。
在這種作為兩個鏈的對待中,用戶A的資源分配不依賴于用戶D的需求,因為用戶D的分支(在箭頭方向上前進)不饋入用戶A,因此用戶D將不會從幫助用戶A中受益。基于同樣原因,用戶E的資源分配也不依賴于用戶B的需求。因此,在優(yōu)選實施例中,將這些鏈(或不如說是構成這些鏈中的鏈接的資源)分析為兩個單獨的資源群集第一個包含資源R1-R2,第二個包含資源R3-R4。在第一個群集中,用戶A被分配了系統(tǒng)資源,就好象它的需求至少是該第一個群集中的任何資源(R1和R2)的等候者(B和C)中需求最大者的需求一樣。類似地,在第二個群集中,用戶E被分配了系統(tǒng)資源,就好象它的需求至少是該第二個群集中的任何資源(R3和R4)的等候者(C和D)中需求最大者的需求一樣。
在所有上面的例子中,爭用鏈是無環(huán)的,意味著不能通過順著這些鏈接沿著它們的箭頭方向形成閉路。如果存在這樣的閉路,則將會存在資源死鎖,該死鎖只能通過終止一個或多個與該死鎖有關用戶打破。
現在轉到多系統(tǒng)實現的詳情中,圖4示出了幾個系統(tǒng)上的事務和資源之中典型的爭用情形。在該圖中,系統(tǒng)Sy1上的事務TxA(具有為1的需求)在等待由系統(tǒng)Sy2上的事務TxB(具有為2的需求)和TxD(具有為4的需求)持有的資源Ra。系統(tǒng)Sy2上的事務TxB又在等待由系統(tǒng)Sy3上的事務TxC(具有為3的需求)如系統(tǒng)Sy3上的事務TxE(具有為5的需求)一樣持有的資源Rb。
在該例中,考慮系統(tǒng)Sy2,來說明系統(tǒng)Sy1-Sy3如何管理爭用。根據本發(fā)明的一個方面,系統(tǒng)Sy2不存儲或維護群集中爭用的完整全局圖畫,而是存儲或維護如下表中示出的這種爭用信息的子集。
如上表中所示,系統(tǒng)Sy2存儲它的正在或者作為持有者或者作為等候者爭用資源的本地事務TxB和TxD的一組完整的爭用數據(“本地系統(tǒng)信息”)。對于本地事務在爭用的每一個這種資源,Sy2跟蹤本地持有者和等候者,包括它們的固有“需求”值。系統(tǒng)Sy2也將資源Ra和Rb分配給了共同群集Cab,因為至少有一個本地事務(TxB)既是一個所請求資源(Ra)的持有者,又是另一個所請求資源(Rb)的等候者。
上表中所示的數據、或由WLM的本地實例以其他方式跟蹤的數據(或者通過按其原樣存儲的或者通過按需要從其他數據中導出的)包括本地群集數據、遠程群集數據、和組合群集數據。本地群集數據指示根據本地系統(tǒng)上的爭用而將資源分為本地群集的分組,并對于每一個這樣的本地群集,指示該本地群集中任何資源的需求最大的等候者的需求。類似地,特定遠程系統(tǒng)的遠程群集數據指示根據該遠程系統(tǒng)上的爭用而將資源分為遠程群集的分組,并對于每一個這樣的遠程群集,指示該遠程群集中任何資源的需求最大的等候者的需求。最后,通過組合相應的本地和遠程數據而生成的組合群集數據指示根據這些系統(tǒng)之上的爭用而將資源分為組合群集的分組,并對于每一這樣的組合群集,指示該組合群集中任何資源的需求最大的等候者的需求。
在上面的表中,標題“本地系統(tǒng)信息”之下的項目代表本地群集數據,因為它們只基于在本地用戶等待資源或持有處于爭用下的資源的意義上的本地爭用??赏ㄟ^查看“本地系統(tǒng)信息”之下的“等候者”列,來確定資源的需求最大的本地等候者的需求。因此,對于資源Ra不存在本地等候者(并因此沒有“需求最大的”本地等候者),而對于資源Rb,需求最大的等候者(TxB)具有為2的需求。在表中未明確示出根據本地爭用而將資源分為群集的分組,但可通過尋找其中一本地用戶正持有一個資源而在等待另一資源的資源項目對來獲得。這樣,在上面的表中,用戶TxB作為資源Ra的持有者和資源Rb的等候者的列出意味著資源Ra和Rb根據本地爭用數據被分配給一共同群集。
類似地,在標題“遠程等候者信息”之下的項目代表遠程群集數據,因為它們只基于特定遠程系統(tǒng)上的爭用。對于在“系統(tǒng)名稱”列中對于資源列出的每一遠程系統(tǒng),在相鄰的“NQO”列中指出了需求最大的等候者的需求。在上面的表中未指示根據來自特定遠程系統(tǒng)的爭用數據而將資源分為群集的分組,但該分組由本地WLM實例進行跟蹤,以便它能夠與本地群集分配信息組合以獲得組合群集分配。群集的組合是以直接的方式進行的。這樣,如果第一個系統(tǒng)(根據它的本地爭用數據)向一共同群集分配資源A和B,第二個系統(tǒng)類似地向一共同群集分配資源B和C,而第三個系統(tǒng)向一共同群集分配資源C和D,則所得到的組合群集包含資源A、B、C和D。
另一方面,第一列(“資源群集”)代表組合群集數據,因為資源向一群集的分配是基于本地群集數據和遠程群集數據兩者的。最后一列(“NQO”)同樣代表組合群集數據,因為所列出的需求是所有系統(tǒng)上的資源的需求最大的等候者的需求(被報告給本地系統(tǒng)的)。
系統(tǒng)Sy2可以上面示出的表格形式存儲爭用數據,但更通常的是將這種數據分布于多種數據結構上,以優(yōu)化操作的簡易性,如下面進一步描述的那樣。
圖5示出WLM的本地實例響應來自本地資源管理器的爭用通知而執(zhí)行的一般過程500。雖然描述了特定的步驟順序,但該順序可以變化,只要在每一步驟執(zhí)行時所需的輸入數據可用即可。
在該WLM實例接收到來自本地資源管理器對涉及到本地用戶時的資源爭用狀態(tài)中的變化的通知時,過程500開始。這種變化可以表示下述各項中的任何一個1.本地用戶已變成由另一用戶持有的資源的等候者。
2.本地用戶不再是一資源的等待者。這可能是因為它已作為持有者獲得了該資源,或因為它不再作為或持有者或等候者對該資源感興趣(可能因為它已終止并因此不再存在,如下面的示例中所描述的那樣)。
3.由本地用戶持有的資源現在處于爭用中。
4.由本地用戶持有的資源不再處于爭用中。
來自本地資源管理器的通知將標識該資源以及其本地持有者和等候者。在優(yōu)選實施例中,WLM從一未單獨示出的SRM部件獲得這些持有者和等候者各自的“需求”(它們的固有需求,而不是它們根據本發(fā)明而改變的需求);雖然,此數據的特定來源不構成本發(fā)明的一部分。
響應從資源管理器實例接收到這種通知,WLM的本地實例首先更新考慮中的資源的本地爭用數據(步驟504)。這種更新可包括創(chuàng)建本地系統(tǒng)上新處于爭用中的資源的新項目,更改本地系統(tǒng)上已處于爭用中的資源的已有項目,或刪除本地系統(tǒng)上不再處于爭用中的資源的已有項。這種本地爭用數據包括持有或等待資源的任何本地用戶的標識,和這種用戶的“需求”。
在更新本地爭用數據之后,如果需要,則WLM的本地實例更新該資源的群集分配(步驟506)。默認地,該資源被分配給只包括它自己作為成員的平凡群集。該資源被分配給包括至少一個其他資源的非平凡群集,如果本地爭用數據或遠程爭用數據要求這樣的分配的話。該資源被根據本地爭用數據分配給包含另一資源的群集,如果該本地爭用數據指出同一本地用戶在持有這兩個資源中的一個而在等待另一個的話—也就是說,該資源或者由在等待另一資源的用戶所持有,或者由持有該另一資源的用戶所等待。該資源被根據遠程爭用數據分配給包含另一資源的群集,如果該遠程爭用數據指出至少一個遠程系統(tǒng)已根據該遠程系統(tǒng)本地的爭用數據將這兩個資源分配給了共同群集的話。因此,這一群集分配步驟可能包括(1)保持該資源的群集分配不變;(2)將該資源新分配給非平凡群集,如果改變過的本地爭用數據和任何已有的遠程爭用數據要求這樣的分配的話;(3)打破已有群集,如果改變過的本地爭用數據和任何已有的遠程爭用數據不再要求這樣的分配的話。如果該資源的群集分配被改變,則同時同樣地修改該改變所影響的其他資源的群集信息。
同時,WLM的本地實例更新該資源的、僅根據該資源的本地爭用數據而賦予的“需求”值(步驟508)。這一賦予的需求是該資源的任何本地等候者的需求中最大的,如由該資源的本地爭用數據所指示的。雖然這一步驟作為在群集分配步驟之后的步驟而示出,但這些步驟的順序是不重要的,因為每一步驟都不使用另一步驟的結果。
在已對該資源的群集分配和賦予的需求值進行更新之后的某一時間點,WLM的本地實例更新它的組合群集數據,該組合群集數據包括(1)根據本地和遠程爭用數據兩者而賦予的該資源的需求值(上表中的“NQO”列);(2)根據本地和遠程爭用數據而將該資源分為組合群集的分組;和(3)該資源群集作為一個整體而被賦予的“需求”值(步驟510)。最后一個所提的值僅是構成該組合群集的任何資源的需求中最大的需求,這里,該需求同樣基于構成該群集的資源的遠程以及本地爭用數據兩者。
然后,WLM的本地實例將它的更新后的本地爭用數據的概要廣播到該群集中的其他系統(tǒng)(步驟512)。該數據概要包括1.本地系統(tǒng)名稱;2.資源名稱。如果該資源是多系統(tǒng)資源,則資源名稱是在整個群集之中被認可的、該資源的實際名稱。如果該資源是本地資源,則資源名稱是作為實際本地資源名稱的“代理”的一般本地資源名稱,如下面的示例2中所描述的那樣。
3.標識該資源被分配到的群集的群集ID。該值是嚴格本地的;接收系統(tǒng)比較該值,以查看是否有兩個資源屬于發(fā)送系統(tǒng)上的同一群集,但關于該值的結構和內容不進行任何假設。在下面的示例中,群集名稱作為該群集中多系統(tǒng)資源的串接而給出,這完全是作為方便讀者理解的助記手段。但是,在優(yōu)選實施例中,“群集名稱”實際上是接收系統(tǒng)只能對與起源于同一發(fā)送系統(tǒng)的其他群集ID的相同性進行測試的不透明“群集ID”。
4.完全基于發(fā)送系統(tǒng)的“本地系統(tǒng)信息”—即該資源的需求最大的本地等候者—的、該資源的“需求”。這可被認為是該系統(tǒng)認為在只考慮它的數據的情況下該需求應該是什么的表決。如果不存在該資源的本地等候者,則傳送指示不存在本地需求的啞值,如下面的示例1中所描述的。
5.對發(fā)送系統(tǒng)上的任何事務是否強制該資源被包括在該群集中,即該資源是否根據本地爭用數據被分配給非平凡群集的指示。這是布爾值,但在本說明書中給予它的值不是“是/否”,而是本地/遠程。本地意味著(1)發(fā)送系統(tǒng)具有至少一個既是一個資源的等候者又是另一個資源的持有者的事務;以及(2)該同一事務是該資源的等候者或持有者(因此發(fā)送系統(tǒng)要求與該(些)事務連接的一組資源作為一組被管理)。遠程意味著發(fā)送系統(tǒng)的本地數據中沒有什么要求該資源作為非平凡群集的一部分。平凡群集僅具有一個資源,且其始終具有“遠程”的值,以使群集操作代碼稍微簡單一些。
如果已存在群集重新分配,則WLM還為該重新分配所影響的每一其他資源廣播同樣的信息。
最后,本地WLM實例對本地用戶的“需求”值進行任何必要的調整(步驟514)。更具體地,WLM調整不同時是另一資源的等候者(并因此在爭用鏈的頭部)的、一個資源的任何本地持有者的“需求”,以便其至少與包含該資源的群集中需求最大的等候者的固有需求相匹配。調整后的值是實際上用于向持有者分配系統(tǒng)資源的賦予的“需求”值,而不是指派給該用戶(并用于向其他用戶賦予值)的固有需求值。這樣,如果賦予特定需求值的原因不再存在,則賦予一個用戶的需求值恢復為固有需求值或一個更小的賦予的需求值。
圖6示出WLM的本地實例響應于接收到來自遠程系統(tǒng)上的WLM實例的遠程爭用數據的廣播(步驟602)所執(zhí)行的一般過程600。此廣播對于每一受影響的資源包括在步驟512的描述中所列出的信息。
響應于接收到這種通知,WLM的本地實例首先更新考慮中的資源的遠程爭用數據(步驟604)。如同在步驟504中描述的本地爭用數據的更新一樣,這種更新可包括在創(chuàng)建遠程系統(tǒng)上最近處于爭用中的資源的新項目,修改遠程系統(tǒng)上已經處于爭用中的資源的已有項目,或刪除遠程系統(tǒng)上不再處于爭用中的資源的已有項目。此遠程爭用數據包括具有該資源的等候者的任何遠程系統(tǒng)的標識,以及該遠程系統(tǒng)上對該資源需求最大的這種等候者的需求。
在更新它對于該資源的遠程爭用數據之后,WLM的本地實例更新它對于該資源的組合群集數據,如在步驟510中所進行的那樣。如在步驟510中,所更新的組合群集數據包括(1)該資源的根據本地和遠程爭用數據兩者而賦予的需求值;(2)根據本地和遠程爭用數據兩者而將該資源分為組合群集的分組;以及(3)根據本地和遠程爭用數據兩者將該資源群集作為一個整體而賦予的“需求”值(步驟606)。
最后,如在步驟514中一樣,本地WLM實例通過調整不同時是另一資源的等候者的、一個資源的任何本地持有者的“需求”,來對本地用戶的“需求”值進行任何必需的調整,以使其至少與包含該資源的群集中需求最大的等候者的固有需求相匹配(步驟608)。
詳細示例和情形如下示例1(“簡單”傳遞閉包實例)本示例是一跨系統(tǒng)傳遞閉包實例涉及不只一個資源,且?guī)椭钟幸粋€資源的需求小的用戶,以使等待不同資源的另一(需求大)用戶前進。該拓撲是多系統(tǒng)的,具有不同系統(tǒng)上的、相同資源的持有者和等候者。
這示出了當在同一資源群集中只涉及多系統(tǒng)資源時所發(fā)生的情況,因此它是“簡單”傳遞閉包實例。
該例中的標號如下。每一持有者和等候者是一個事務(Txn,例如TxA、TxB),并具有一個NQO(入隊順序)值。NQO值是這樣的值,即更小的值是需求更大的(更值得幫助)。每一系統(tǒng)都被編號(Sy1、Sy2),并且所有這些系統(tǒng)都在同一“系統(tǒng)群集”中。每一資源具有一個小寫字母(Ra、Rb),且在范圍上是多系統(tǒng)的。每一資源群集具有一個或多個小寫字母(Ca、Cab),表示該群集中的資源列表。對獲得資源的請求是請求獨占控制,除非另外指出。
在時間順序上,事件序列如下
在t<6時,不存在爭用,因此在每一系統(tǒng)上都不存在WLM爭用數據。
在t=6時,爭用形成(Sy1TxB請求Rb并由于TxC持有它而被暫停)。結果,Sv11.開始跟蹤對資源Rb的爭用。
2.創(chuàng)建只包括Rb的資源群集。
3.將TxB添加到Rb的本地等候者列表中。
此時,Sy1上的狀態(tài)如下
當Sy1接著重新估算它的資源拓撲時,它為Cb計算NQO。
1.由于Sy1知道的在Rb的拓撲中涉及的需求最大的實體(事實上,此時僅有的一個)是TxB,所以它使用TxB的NQO(4)作為Rb的NQO。
2.為Cb中的所有資源計算了NQO之后,它為Cb計算作為Cb中所有資源的NQO中需求最大者的NQO。這將為4的NQO從Rb傳播到Cb。
3.由于Rb是多系統(tǒng)資源,所以Sy1將Rb的信息廣播到該系統(tǒng)群集中的所有其他系統(tǒng)。如上面所述的,為Rb發(fā)送的信息包括系統(tǒng)名稱、資源名稱、群集ID、資源的完全基于發(fā)送系統(tǒng)的“本地系統(tǒng)信息”的NQO、以及布爾值(本地/遠程),其中該布爾值被設為“本地”時表示發(fā)送系統(tǒng)上的一個事務強制將該資源包括在該群集中。
4.根據上面的說明,所發(fā)送的數據是Sy1、Rb、Cb、4、遠程。
此時,Sy1上的狀態(tài)如下
Sy2接收這一信息;同時,Sy2上運行的資源管理器實例向Sy2通知有關Rb的爭用。這些操作的順序是無關緊要的,但會以先前描述的順序將它們列出。代碼中的僅有“技巧”在于,如果Sy2上的資源管理器贏得了這個比賽,則當遠程數據到達時,該代碼必須認識到它已經使一個等同的群集被構建,并將遠程信息添加到它已有的數據中。
在從Sy1接收到遠程信息之后,有關Sy2的狀態(tài)如下
一旦Sy2的本地資源管理器向Sy2通知了對于Rb的爭用,則在Sy1和Sy2上的狀態(tài)如下
應該注意,Sy2上Rb的本地NQO是4,而不是5,5是TxC的NQO。首先,資源持有者的NQO從不會影響該資源的NQO;由于該持有者正在運行,所以WLM的策略調整代碼已經在隱式地使用該NQO。其次,Sy2現在知道在該系統(tǒng)群集中的別的地方,具有為4的NQO的事務正在等待;由于4被定義為比5需求更大,所以Rb的NQO必須不低于4的需求。
在t=7時,對另一資源形成爭用(Sy2TxA請求Ra并由于TxB持有它而被暫停)。圖7A示出了在t=7之后的拓撲。
由于資源Ra也具有多系統(tǒng)范圍,這導致與剛剛對于Rb發(fā)生的相同的握手(handshake),其產生的狀態(tài)如下
一旦Sy1上的資源管理器實例向Sy1通知了對于Ra的爭用,Sy1執(zhí)行將Ca和Cb鏈接到(新的)群集Cab中的關鍵步驟。在只是被通知了對于Ra的爭用之后,有效的(但到目前為止不完全的)狀態(tài)可能是(根據代碼實現這些或者是兩個分離的步驟或者是一個結合的步驟,這里是將它們分離顯示的)
當系統(tǒng)Sy1接著重新估算它的拓撲時,它根據本地信息知道單個事務(TxB)涉及兩個不同的資源(Ra和Rb),且因此必須將對這些資源的管理結合起來(換句話說,Ra和Rb必須在同一資源群集Cab中)。該群集的NQO是它的組成資源的需求最大的NQO(在這個實例中是1)。
必須對Ra與Rb一起管理的“信號”是出現至少一個這樣的事務,該事務持有一個或多個處于爭用中的資源并等待一個或多個其他處于爭用下的資源。
在重新估算了它對拓撲的概觀之后,Sy1(象以前一樣)將它的概觀廣播到該群集中的其他系統(tǒng)。
1.Sy1、Ra、Cab、啞NQO值、本地。
2.Sy1、Rb、Cab、4、本地。
啞NQO值僅是一個比WLM可能生成的任何需求都要小的值。Sy1沒有完全本地的NQO值,因為它沒有本地等候者,但它確實需要發(fā)送必須根據它的本地數據將Ra和Rb作為一個單元進行管理的“虛擬消息”。
Sy2結合該數據(包括必須將Ra和Rb作為一個單元進行管理的事實,這意味著Ca與Cb必須合并),生成以下各項。
現在,這兩個系統(tǒng)在問題的重要之點(即需求最大的等候者的NQO值)上達成一致意見,即使這每一個系統(tǒng)都沒有完整拓撲的副本。
在t=10時,爭用開始解除(Sy2TxC釋放Rb)。Sy2對Rb的概觀現在只包括遠程數據。
在t=11時,Sy1上的資源管理器實例發(fā)現Rb可用并將其給予其隊列上的第一個等候者(Sy1TxB被恢復并獲得Rb)。由于資源管理器的等候隊列現在為空,因此它通知WLM以指出Rb的爭用已經結束。Sy1將Rb從它的資源群集中移除,因為在每一系統(tǒng)內,任何單個資源都只能屬于單個群集(雖然由于時間窗口(timing window),兩個系統(tǒng)可能具有不同群集中的同一資源)。
并行地,Sy2上的資源管理器實例被告知Rb不再被爭用(根據資源管理器實現,這可能早在t=10時便已發(fā)生了),且它也將Rb從它的資源拓撲中移除。
在t=12時,不存在變化,因為所釋放的資源不再處于爭用中(Sy1TxB釋放Rb)。
在t=13時,爭用完全解除(Sy1TxB釋放Ra)。Sy1上的資源管理器實例通知WLM,以便信號通知Ra的爭用的結束。
在t=14時,Sy2也了解到爭用的結束(Sy2TxA被恢復并獲得Ra(無爭用))。Sy2上的資源管理器實例通知WLM,以便信號通知Ra的爭用的結束。
示例2(具有本地資源的傳遞閉包實例)本示例是另一跨系統(tǒng)傳遞閉包實例涉及不只一個資源,并且?guī)椭钟幸粋€資源的需求小的用戶,以使等待不同資源的另一(需求大)用戶前進。該拓撲也是多系統(tǒng)的,具有不同系統(tǒng)上的、相同資源的持有者和等候者。此外,與示例1形成對比的是,每一系統(tǒng)具有涉及相同事務的對完全本地(非多系統(tǒng))資源的爭用。這示出了當在同一資源群集中包括多系統(tǒng)和單系統(tǒng)資源兩者時所發(fā)生的情況。
符號與示例1中的相同,除了多系統(tǒng)資源使用大寫字母R(Ra、Rb),而本地資源使用小寫字母(rc、rd)。Rlocal(=RL)是“對于遠程系統(tǒng)來說在本地范圍中的某一組不知名資源的”的代理名稱。其實際值是無關緊要的,僅有的要求是所有的參與者對該值達成一致意見,并且不允許其與任何有效的資源名稱相沖突。
在時間順序上,事件序列如下
在t<8時,每一系統(tǒng)上的爭用狀態(tài)與示例1中的完全相同,因此,這里不再描述。
在t=8時,對本地(非多系統(tǒng))資源rl形成爭用(Sy1TxS請求rl,并由于TxB持有它而暫停)。資源rl僅被結合到Sy1上的資源群集中。rl的NQO是來自TxS的3,但群集Cab1仍然具有由于Ra而為1的NQO。
當Sy1廣播它對該群集的概觀時,它不會直接廣播rl,因為Ra和Rb是該群集中僅有的對其他系統(tǒng)可見的資源。而是,它將廣播Sy1的所有本地資源(我們知道只有rl)的代理(Rlocal)。
1.Sy1、Ra、Cabl、啞NQO值、本地。
2.Sy1、Rb、Cabl、4、本地。
3.Sy1、Rlocal、Cabl、3、本地。
在接收到該數據并更新其拓撲之后,Sy2認為以下是其狀態(tài)。
在t=9時,另一本地資源展現其他系統(tǒng)上的爭用(Sy2TxT請求rj,并由于TxA持有它而暫停)。圖7B示出在t=9之后的拓撲。
在Sy2上發(fā)生與在Sy1上所剛剛進行的相同的處理,然后,Sy2將它的數據廣播到Sy1。 Sy2廣播如下數據1.Sy2、Ra、CabL、1、本地。
2.Sy2、Rb、CabL、啞NQO值、遠程。
3.Sy2、Rlocal、CabL、2、本地。
在上面的廣播中,Sy2上的本地資源的代理名稱是由群集名稱隱式限定的,因為,如下面所指出的那樣,代理是對于每一資源群集定義的,而不是僅對該系統(tǒng)群集作為一個整體而定義的。此外,只有對于Ra和Rlocal的廣播包括布爾值“本地”,因為只有這兩個資源可根據本地數據分配給共同群集。
沒有理由不可以通過向Sy2上的Rlocal的“遠程等候者信息”中添加“Sy2,2”項目,或向Sy2上的“本地系統(tǒng)信息.等候者”中添加啞事務來概括所有本地資源爭用;上表示出的是沒有這種優(yōu)化。通過上述方法之一以確實使Rlocal概括本地狀態(tài)數據很可能會使廣播代碼更加簡單;然后,可生成具有多系統(tǒng)范圍的Rlocal,且在該廣播代碼中將不需要特殊情況了。存在其他明顯需要特殊情況的情形。實際上,必須允許每一個資源群集有一個Rlocal,而不僅僅是每一個系統(tǒng)有一個Rlocal。
在t=10時,爭用開始解除(Sy2TxC釋放Rb)?,F在,Sy2對Rb的概觀只包括遠程數據。
在t=11時,Sy1上的資源管理器實例發(fā)現Rb可用,并將它給予其隊列上的第一個等候者(Sy1TxB被恢復并獲得Rb)。由于資源管理器的等候隊列現在為空,因此它通知WLM以指出Rb的爭用已經結束。并行地,Sy2上的資源管理器實例被告知Rb不再被爭用(根據資源管理器的實現,這可能早在t=10時就已發(fā)生)。這兩個系統(tǒng)都必須將Rb從它的資源群集中移除,因為在每一系統(tǒng)內,任何單個資源都只能屬于單個群集。兩個系統(tǒng)可能暫時由于時間窗口或永久由于資源拓撲而同時具有不同群集中的相同資源。當涉及到兩個以上的系統(tǒng)時,出現了不對稱拓撲的例子。
在t=12時,不存在變化,因為所釋放的資源不再處于爭用中(Sy1TxB釋放Rb)。
在t=13時,多系統(tǒng)爭用完全解除(Sy1TxB釋放Ra)。Sy1上的資源管理器實例通知WLM,以便信號通知Ra的爭用的結束。
由于Sy1上的資源群集現在只包括本地資源和涉及多系統(tǒng)爭用的遠程本地資源的代理,所以也可將該代理從該群集中移除。由于Sy2還未被通知Ra的爭用的結束,所以它仍然將其代理資源作為群集的一部分。
在t=14時,Sy2也看到爭勝的結束(Sy2TxA被恢復,且獲得Ra)。Sy2上的資源管理器實例通知WLM,以便信號通知Ra的爭用的結束。
在t=15時,對于一個本地資源的爭用結束(Sy1TxB釋放rl),且TxS被恢復。一旦資源管理器向Sy1通知了關于rl的爭用已經結束,Sy1的拓撲便再次為空。
在t=17時,最后的爭用結束(Sy2TxA釋放rj),且TxT被恢復。一旦資源管理器向Sy2通知了對于rj的爭用已經結束,則Sy2的拓撲再次為空。
示例3分解群集(BreakClul)本示例涉及將資源群集分解為一些較小群集,而對于所涉及的任何資源都沒有爭用結束。鏈接Ra和Rb的事務被取消,但由于每一資源都具有其他等候者,所以這兩個資源隨后仍然處于爭用中。符號與示例1中的相同。
以時間順序的事件序列如下
在t<4時,不存在爭用,因此在每一系統(tǒng)上都沒有WLM爭用數據。在時間t=4與t=7之間發(fā)生的事件已經包括在前面的例子中。
圖7C示出在t=7之后的拓撲。此時的狀態(tài)數據如下
當事務TxD(無論由于什么原因)在t=8終止時,每一系統(tǒng)上的資源管理器實例移除TxD所具有的所有未完成的等待請求(Ra),并釋放所有其持有的資源(Rb)。一旦向WLM通知了這些拓撲變化,Sy1知道應該將資源群集Cab分解為兩部分(Ca和Cb)。它之所以知道這一點,是因為Sy1在本地確定兩者本來是鏈接的(并可看出這在本地不再真實),且沒有遠程系統(tǒng)的數據表示它們必須被鏈接。但是,這兩個資源仍然處于爭用中。下次Sy1廣播它的拓撲數據時,Sy2上的“Sy1Ra、Rb鏈接”數據被移除,且Sy2也更新它的拓撲。假定WLM在資源管理器實例重新分配所有權之前實現所有這些,則所得到的狀態(tài)為
因此,這意味著具有某種移除必須一起管理Ra和Rb的“記憶”的機制,而不是依賴于對于所涉及的某一個資源的爭用的結束。其他一些可選機制如下1.Sy1顯式發(fā)送數據以指出其不再認為所給定的資源群集是必須的。例如,發(fā)送Ra、Ca、4、遠程。當Sy2替換Sy1前面對于Ra的數據時,它不再查看來自Sy1的任何對于一起管理Ra和Rb的需求;如果Sy2沒有其他對于保持該群集的“表決”,則Sy2可本地分解該群集。
2.Sy1的數據過時(因此如果其不被“立刻”替換便被刪除)。這可能通過發(fā)送“生存時間”(TTL)值來實現,在該生存時間之后該數據將被接受者刪除。此機制可為出故障系統(tǒng)、丟失信號、程序錯誤、恢復問題等提供一安全網。TTL還具有使得通信等待時間透明且不需要發(fā)送者和接受者對共同間隔達成一致意見的優(yōu)點。
最強健的方案很可能是所有這三個方案。讓全局性地信號通知爭用結束的資源管理器處理本地刪除“Ra”塊的情況,以便不必堅持它足夠長時間來發(fā)送“分解該群集”消息。如果對于資源的爭用在本地結束而未在遠程結束,且本地系統(tǒng)是表決強制非平凡群集被構建的那個系統(tǒng),則讓TTL值引發(fā)在遠程系統(tǒng)上該群集的破壞。如果該群集需要分解,但爭用未結束,則仍然有“Ra”塊,且“分解該群集”的消息就是畢竟要發(fā)送的自然結果。示例4分解群集(BreakClu2)在本例中,只由共同持有者加入的資源群集可看作“n”個資源的一個群集或“n”個各一個資源的群集。此結果是令人驚訝的,因而值得證明。
符號與示例1中的相同。
以時間順序的事件序列如下
圖7D示出在t=6之后的拓撲。
直到t=6的所發(fā)生的事件已包括在前面的例子中。這里讓人感興趣的是根據怎樣對事物進行定義,可將此情形或者作為一個資源群集或者作為兩個資源群集來對待。如果使用前面例子中的定義,即資源群集可由系統(tǒng)識別為具有作為一個資源的持有者和作為不同資源的等候者的同一事務(且然后在系統(tǒng)群集中所有系統(tǒng)之上將此認知匯總起來),則上面的圖表清楚地表示了兩個資源群集而不是如可能期望的一個資源群集。
由于形成資源群集Cab沒有價值,且在這樣作時存在相關的開銷(更精確地說,當決定是否應該分解一個群集時存在相關的開銷),所以此定義將持續(xù)使用。因此,與上面的圖表所對應的狀態(tài)數據為
與此定義相關的固有的假設是當WLM試圖幫助工作時,它將檢查每一資源,并基于NQO值根據需要幫助持有者。如果此拓撲被看作為單個資源群集,則TxA將從群集Cab繼承為1的NQO。將這作為兩個群集對待,則WLM會斷定1.Ca不需要幫助,因為持有者的為3的NQO比該資源群集的為4的NQO需求更大。
2.Cb需要幫助,因為該群集的為1的NQO比TxA的為3的NQO需求更大。
由于TxA最終繼承為1的NQO,而不管此情境被作為一個還是兩個群集來對待,所以可選擇任何一個。由于對什么時候需要分解組合群集進行的測試使得管理兩個“平凡”(單個資源)群集比管理單個組合群集效率更高,所以此實例被作為兩個平凡資源群集來看待。
示例5簡單的三路情境(3wayEase)本例是簡單的三系統(tǒng)情境。它也是一個傳遞閉包實例,但其不對稱拓撲強制這些系統(tǒng)跟蹤沒有來自資源管理器的本地等候者/持有者信息的資源。符號與示例1中的相同。
以時間順序的事件序列如下
直到t=5的所發(fā)生事件已包括在前面的例子中。圖7E示出在t=5之后的拓撲。此時的狀態(tài)數據為
這里使人感興趣的是Sy3不涉及Ra,然而它跟蹤有關Ra的至少某些數據,以便確定TxC的NQO應該為1(從Sy1上的TxA繼承)。但這不會引起太多的困難Sy1和Sy2不知道其他哪一個系統(tǒng)涉及Ra,這只是在所有系統(tǒng)已廣播了它們最近的拓撲數據(其當然是一個移動的目標)之后“發(fā)現的”。這樣,Sy1和Sy2無論怎樣都必須廣播它們的數據。另外的負擔是Sy3必須簿記其從對等方接收的概要數據,但只要它仍不涉及Ra,則不會有任何復雜的基于事務的邏輯被調用。這可能通過廣播該群集的NQO和導致該NQO的系統(tǒng)的身份來消除,但當再次將群集分解為較小部分時會出現某些問題。跟蹤每一資源看起來是為我們可以看到導致正確的NQO的事物所付出的小的代價。
從該狀態(tài)的解除如前面的例子中那樣進行。
示例6具有群集分解的三路情境(3wayBreakClu)本示例是三系統(tǒng)傳遞閉包實例,其中大群集被分解為較小的群集,而沒有任何“爭用的結束”事件驅使我們。本例還示出具有資源的多個共享持有者的拓撲。符號與示例1中的相同。
以時間順序的事件序列如下
直到t=7所發(fā)生的事件已包括在前面的例子中。如在前面的例子中,Sy3不涉及Ra,然而它跟蹤有關Ra的至少某些數據。
圖7F示出在t=7之后的拓撲。此時的狀態(tài)數據為
從這一狀態(tài)的解除如在前面的例子中那樣進行。此時,在t=8和t=9時的事件意味著資源群集Cab不再需要,且按照前面的例子,該群集在此情況下將被分解。因此,在t=9之后,有圖7G和下表中所示的狀態(tài)
如同前面的情況,即分解資源群集而沒有對于所包括的任何一個資源的爭用清除,可以看出單個事務(這里是TxB)可同時涉及兩個不同的資源群集,只要它或者僅在持有或者僅在等待處于爭用下的資源。它一等待任何處于爭用下的資源,就必須將它或者持有或者等待的處于爭用下的所有資源作為單個資源群集來管理。
數據結構圖8A-8H示出根據本發(fā)明的用于存儲爭用數據的一組可能的數據結構。
參照圖8A,資源爭用控制表(RCCT)802用于錨定(anchor)僅(或主要)對單個WLM子部件來說有興趣的各項目。它包含1.對于資源群集組件(RCLU)806(圖8B)的錨點804。
2.對于資源組件(RSRC)810(圖8C)的錨點808。
3.對于事務表(TRXNT)814(圖8F)的錨點812。
參照圖8B,每一資源群集組件(RCLU)806包括與單個資源群集有關的數據。它包括1.群集ID 816。
2.群集NQO 818(該群集中所有資源中最小的)。
3.對于該群集中的資源的資源組件(RSRC)810(圖8C)的錨點820。
參照圖8C,每一資源組件(RSTC)810描述處于爭用下的資源。它包括1.資源標志(fingerprint)/名稱822。
2.資源NQO 824。(為了廣播路徑上的效率,可能希望保持本地/系統(tǒng)群集值分開;否則,這是系統(tǒng)群集NQO。)3.到群集組件(RCLU)806(圖8B)的指針826。
4.對于本地持有者的資源爭用隊列組件(RCQE)830(圖8H)的錨點828。
5.對于本地等候者的資源爭用隊列組件(RCQE)830的錨點832。
6.對于有關該資源的遠程數據的系統(tǒng)數據錨點(SDA)836(圖8D)的錨點834。
參照圖8D,每一系統(tǒng)數據錨點(SDA)836用作對于單個系統(tǒng)的遠程系統(tǒng)信息的錨點。它包括1.遠程系統(tǒng)ID 838。
2.從該系統(tǒng)對于遠程系統(tǒng)數據組件(RSDE)842(圖8E)的錨點840。
3.表示遠程系統(tǒng)的最高已知發(fā)送順序號的值844。換句話說,在外向路徑上,發(fā)送系統(tǒng)包括一個對于每一“批”拓撲數據都相同的值(如時戳)。每一接收系統(tǒng)將進入的消息中的值與此值進行比較;如果該消息具有較低的值(意味著它是陳舊的,因為該接收系統(tǒng)已經從同一發(fā)送者接收到了更近的數據),則該消息被忽略。
4.時戳846,當從遠程系統(tǒng)接收到拓撲消息時,使用本地時鐘將該時戳更新。
參照圖8E,每一遠程系統(tǒng)數據組件(RSDE)842包括資源的遠程系統(tǒng)信息。它包括1.到系統(tǒng)的系統(tǒng)數據錨點(圖8D)的指針848。
2.到資源的資源組件(RSRC)810(圖8C)的指針850。
3.對于同一資源的其他RSDE 842的隊列鏈接852。
4.遠程系統(tǒng)的NQO 854,只考慮遠程系統(tǒng)上的等候者。
5.僅用于調試的發(fā)送時戳856(在發(fā)送時的遠程系統(tǒng)上的時鐘值)。
6.表示接收到時的本地時鐘值的用于調試和TTL處理的時戳858。
7.此資源的遠程群集ID 860。如果遠程系統(tǒng)具有既是持有者又是等候者的事務,則所涉及的所有資源在那里將具有相同的群集ID,且在這里需要處于同一群集中。如果來自不同系統(tǒng)的遠程數據對于哪些資源屬于一個群集意見不一致,則該些群集將在本地聯合(union)。
8.由遠程系統(tǒng)提供的生存時間(TTL)期間862,其對應于遠程系統(tǒng)計劃多長時間發(fā)送一次數據加一點額外時間。如果本地時間超過接收時戳加該值,則該組件適合于被刪除。
參照圖8F,事務表(TRNXT)814用于錨定僅(或主要)對于單個WLM子部件來說有興趣的項目。它包括1.當該事務表814構建時的地址空間的數量864。
2.當該事務表814構建時的工作區(qū)域的數量866。
3.從該事務表的開始到第一個表項的偏移868。
4.用于身為地址空間的事務的表項(TRXNE)(最多達數量864)的區(qū)域870。
5.用于身為工作區(qū)域的事務的表項(TRXNE)(最多達數量866)的區(qū)域872。
參照圖8G,事務表(TRXNT)814的區(qū)域870或872中的每一表項(TRXNE)874包括關于單個事務的信息,其中該單個事務涉及至少一個其爭用正由WLM所管理的資源。它包括1.類型876地址空間或工作區(qū)域。
2.這一事務的地址空間ID(ASID)或工作區(qū)域ID 878。
3.這一事務的地址空間或工作區(qū)域令牌880。ASID和工作區(qū)域ID可重新使用;令牌提供在單個映象內的唯一性,即使這些ID是重新使用的。
4.由這一事務持有的資源的爭用組件(RCQE)830(圖8H)的隊列884的錨點882。
5.由這一事務等待的資源的爭用組件(RCQE)830的隊列888的錨點。
6.這一事務的NQO 888。
參照圖8H,每一資源爭用隊列組件(RCQE)830將事務(持有者或等候者)與資源相關。它包括1.在TRXNT 810中的事務的TRXNE 874的偏移892。
2.這一事務的下一個/上一個RCQE 830的隊列鏈接894。
3.到資源的資源組件(RSRC)810的指針896。
4.這一資源的下一個/上一個RCQE 830的隊列鏈接898。
5.持有/等待位899(很可能僅用于隊列驗證)。
圖9示出圖8A-8H中所示的各種數據結構怎樣捕獲在圖4中所示的和伴隨著圖4說明的表中對于Sy2所概括的爭用情境。
盡管已經示出和描述了特定實施例,各種修改對于本領域的技術人員來說是顯而易見的。因此,不是(根據本地或遠程爭用數據)對于被認為是共同群集的一部分的所有資源發(fā)送共同群集ID,而是本地系統(tǒng)可以僅對于那些根據本地爭用數據已知屬于共同群集的資源使用共同群集ID。還有其他一些變換對于本領域的技術人員來說是顯而易見的。
權利要求
1.一種用于管理用戶之間對于訪問包括多個系統(tǒng)的系統(tǒng)群集中的一個或多個資源的爭用的方法,每一所述用戶具有所指派的需求并且能夠作為其正尋求訪問的資源的持有者或等候者,所述方法在作為本地系統(tǒng)的至少一個所述系統(tǒng)上執(zhí)行,并且包括以下步驟存儲本地群集數據,該本地群集數據指示根據所述本地系統(tǒng)上的爭用而將所述資源分為一個或多個本地群集的分組,并對于每一個所述本地群集指示用于所述本地群集中的一個或多個資源的需求;從作為遠程系統(tǒng)的、所述系統(tǒng)群集中的另一個系統(tǒng)接收遠程群集數據,該遠程群集數據指示根據所述遠程系統(tǒng)上的爭用而將所述資源分為一個或多個遠程群集的分組,并對于每一個所述遠程群集指示用于所述遠程群集中的一個或多個資源的需求;組合所述本地群集數據和所述遠程群集數據,以生成組合群集數據,該組合群集數據指示根據所述各系統(tǒng)之上的爭用而將所述資源分為一個或多個組合群集的分組,并對于每一個所述組合群集指示用于該組合群集中的一個或多個資源的需求;以及根據一個所述組合群集的組合群集數據,管理該群集中的資源的、所述本地系統(tǒng)上的持有者。
2.權利要求1的方法,其中所述用于任何一個所述群集中的一個或多個資源的需求是該群集中對于任何資源的需求最大的等候者的需求。
3.權利要求1的方法,其中所述管理步驟包括以下步驟識別未在等候任何其他資源的、一個所述組合群集中的資源的、所述本地系統(tǒng)上的持有者;以及將系統(tǒng)資源分配給所述本地系統(tǒng)上的所述資源的所述持有者,就好像它的需求至少是所述組合群集中的任何資源的需求最大的等候者的需求。
4.權利要求1的方法,其中所述接收步驟對于作為遠程系統(tǒng)的、所述系統(tǒng)群集中的多個其他系統(tǒng)中的每一個來執(zhí)行。
5.權利要求1的方法,其中如果所述本地系統(tǒng)上的一用戶在等待另一資源的時候正持有一個資源,則所述本地系統(tǒng)將該對資源分配給一共同的本地群集。
6.權利要求1的方法,其中所述本地系統(tǒng)響應于接收到有關所述本地系統(tǒng)上的用戶的、資源爭用狀態(tài)中的變化的通知,更新所述本地群集數據。
7.權利要求6的方法,其中所述本地系統(tǒng)將更新后的本地群集數據傳送給所述遠程系統(tǒng)。
8.權利要求1的方法,其中所述本地系統(tǒng)在從所述遠程系統(tǒng)接收到遠程群集數據時,更新所述組合群集數據。
9.權利要求1的方法,其中所述本地系統(tǒng)將本地群集數據傳送到所述遠程系統(tǒng)。
10.權利要求9的方法,其中上述傳送的本地群集數據指示資源、根據本地系統(tǒng)上的爭用而被分配了該資源的群集、及所述本地系統(tǒng)上用于所述資源的需求。
11.一種用于管理用戶之間對于訪問包括多個系統(tǒng)的系統(tǒng)群集中的一個或多個資源的爭用的裝置,每一所述用戶具有所指派的需求并且能夠作為其正尋求訪問的資源的持有者或等候者,所述裝置與作為本地系統(tǒng)的至少一個所述系統(tǒng)相關,并且包括用于存儲本地群集數據的邏輯,該本地群集數據指示根據所述本地系統(tǒng)上的爭用而將所述資源分為一個或多個本地群集的分組,并對于每一個所述本地群集指示用于所述本地群集中的一個或多個資源的需求;用于從作為遠程系統(tǒng)的、所述系統(tǒng)群集中的另一系統(tǒng)接收遠程群集數據的邏輯,該遠程群集數據指示根據所述遠程系統(tǒng)上的爭用而將所述資源分為一個或多個遠程群集的分組,并對于每一個所述遠程群集指示用于所述遠程群集中的一個或多個資源的需求;用于組合所述本地群集數據和所述遠程群集數據,以生成組合群集數據的邏輯,該組合群集數據指示根據所述各系統(tǒng)之上的爭用而將所述資源分為一個或多個組合群集的分組,并對于每一個所述組合群集指示用于該組合群集中的一個或多個資源的需求;以及用于根據一個所述組合群集的組合群集數據,管理該群集中的資源的、所述本地系統(tǒng)上的持有者的邏輯。
12.權利要求11的裝置,其中所述管理邏輯包括用于識別未在等待任何其他資源的、一個所述組合群集中的資源的、所述本地系統(tǒng)上的持有者的邏輯;以及用于將系統(tǒng)資源分配給所述本地系統(tǒng)上的所述資源的所述持有者,就好像它的需求至少是所述組合群集中的任何資源的需求最大的等候者的需求的邏輯。
13.權利要求11的裝置,其中如果所述本地系統(tǒng)上的一用戶在等待另一資源的時候正持有一個資源,則所述本地系統(tǒng)將該對資源分本地配給一共同的本地群集。
14.權利要求11的裝置,其中所述本地系統(tǒng)響應于接收到有關所述本地系統(tǒng)上的用戶的、資源爭用狀態(tài)中的變化的通知,更新所述本地群集數據并將更新后的本地群集數據傳送給所述遠程系統(tǒng)。
15.權利要求11的裝置,其中所述本地系統(tǒng)將本地群集數據傳送給所述遠程系統(tǒng),所傳送的本地群集數據指示資源、根據本地系統(tǒng)上的爭用而被分配了該資源的群集、及在所述本地系統(tǒng)上用于所述資源的需求。
16.一種機器可讀的程序存儲裝置,其有形地體現可由該機器執(zhí)行以執(zhí)行用于管理用戶之間對于訪問包括多個系統(tǒng)的系統(tǒng)群集中的一個或多個資源的爭用的方法步驟的指令程序,每一所述用戶具有所指派的需求并且能夠作為其正尋求訪問的資源的持有者或等候者,所述方法步驟在作為本地系統(tǒng)的一個所述系統(tǒng)上執(zhí)行,且包括存儲本地群集數據,該本地群集數據指示根據所述本地系統(tǒng)上的爭用而將所述資源分為一個或多個本地群集的分組,并對于每一個所述本地群集指示用于所述本地群集中的一個或多個資源的需求;從作為遠程系統(tǒng)的、所述系統(tǒng)群集中的另一系統(tǒng)接收遠程群集數據,該遠程群集數據指示根據所述遠程系統(tǒng)上的爭用而將所述資源分為一個或多個遠程群集的分組,并對于每一所述遠程群集指示用于所述遠程群集中的一個或多個資源的需求;組合所述本地群集數據和所述遠程群集數據,以生成組合群集數據,該組合群集數據指示根據所述系統(tǒng)之上的爭用而將所述資源分為一個或多個組合群集的分組,并對于每一個所述組合群集指示用于該組合群集中的一個或多個資源的需求;以及根據一個所述組合群集的組合群集數據,管理該群集中的資源的、所述本地系統(tǒng)上的持有者。
17.權利要求16的程序存儲裝置,其中所述管理步驟包括以下步驟識別未在等待任何其他資源的、一個所述組合群集中的資源的、所述本地系統(tǒng)上的持有者;以及將系統(tǒng)資源分配給所述本地系統(tǒng)上的所述資源的所述持有者,就好像它的需求至少是所述組合群集中的任何資源的需求最大的等候者的需求。
18.權利要求16的程序存儲裝置,其中如果所述本地系統(tǒng)上的用戶在等待另一資源的時候正持有一個資源,則所述本地系統(tǒng)將該對資源分配給一共同的本地群集。
19.權利要求16的程序存儲裝置,其中所述本地系統(tǒng)響應于接收到有關所述本地系統(tǒng)上的用戶的資源爭用狀態(tài)中的變化的通知,更新所述本地群集數據并將更新后的本地群集數據傳送給所述遠程系統(tǒng)。
20.權利要求16的程序存儲裝置,其中所述本地系統(tǒng)將本地群集數據傳送給所述遠程系統(tǒng),所傳送的本地群集數據指示資源、根據本地系統(tǒng)上的爭用而被分配了該資源的群集、及在所述本地系統(tǒng)上用于所述資源的需求。
全文摘要
本發(fā)明公開了一種用于通過識別其中每一用戶在等待爭用鏈中它前面的用戶所持有的資源的爭用鏈,并將系統(tǒng)資源分配給該鏈頭部的用戶,就好像它們的需求至少是該鏈中需求最大的等候者的需求,來管理用戶之間對于訪問多系統(tǒng)群集中的資源的爭用的方法和裝置。最佳資源分配所需的爭用數據被有效分布于整個系統(tǒng)群集之中,即使這些系統(tǒng)之間的數據流極小,且沒有系統(tǒng)具有跨系統(tǒng)爭用的完整概觀。
文檔編號G06F15/173GK1711523SQ200380103005
公開日2005年12月21日 申請日期2003年11月14日 優(yōu)先權日2002年12月31日
發(fā)明者J·E·阿維 申請人:國際商業(yè)機器公司