專利名稱:對多處理器系統(tǒng)進行負荷平衡的裝置和方法
技術領域:
本發(fā)明系針對計算機系統(tǒng)中的資源分配。更具體言之,本發(fā)明系針對根據(jù)系統(tǒng)管理員設定的某些限制或使用策略對計算機系統(tǒng)的資源進行負荷平衡的方法和裝置。
注意,進程是一個程序。當一個程序執(zhí)行時,不嚴格地稱其是一個任務。在多數(shù)操作系統(tǒng)中,在任務和程序之間存在一對一的關系。然而,有些操作系統(tǒng)容許將一個程序分割成為多個任務或線程。這種系統(tǒng)稱為多線程操作系統(tǒng)。為簡單起見,下面線程和進程可以互換使用。
調(diào)度器是一個可以協(xié)調(diào)計算機系統(tǒng)的共享資源(比如,CPU)的使用的軟件程序。調(diào)度器通常使用先進先出(即FIFO)、輪轉(zhuǎn)法或后進先出(LIFO)、優(yōu)先級排隊、樹等等算法或多個算法的組合來進行調(diào)度?;旧?,如果一個計算機系統(tǒng)具有3個CPU(CPU1、CPU2和CPU3),每個CPU將相應地具有一個就緒待處理隊列或運行隊列。如果用來對運行隊列分配進程的算法是輪轉(zhuǎn)法并且如果生成的最后進程是分配與CPU2相關聯(lián)的隊列,則生成的下一個進程將分配CPU3的隊列。而生成的下一個進程將分配與CPU1相關聯(lián)的隊列,依此類推。這樣,調(diào)度器的設計可使每個進程公平共享計算機系統(tǒng)的資源。
有時系統(tǒng)管理員可能希望不同的進程對資源的共享是不同的。在此場合,與調(diào)度器相結合使用工作負荷管理器(WLM)。WLM對每個進程分配一個數(shù)字表示一個進程可利用計算機系統(tǒng)的資源的時間的百分比。每當一個進程使用資源時,減小其被分配的數(shù)字。這一方案容許具有較低分配數(shù)字的進程仍然可以利用資源。
在某些時候,將這一概念應用于各類進程。在此情況下,一類進程可以是屬于一組特定用戶的一組進程。于是,恰好與給一個進程分配一個數(shù)字的情況一樣,當一類進程利用資源時,分配給此類進程的數(shù)字減小。同樣,這一方案也是保證具有較低分配數(shù)字的那些類進程有機會利用資源。
然而,問題是有時在一個例如具有兩類進程(每一類進程都具有不同的分配數(shù)字)的兩處理器系統(tǒng)中,最終是一個處理器處理其隊列中的一類進程,而另一處理器處理其隊列中的另一類進程。當出現(xiàn)這種情況時,計算機系統(tǒng)的兩個處理器的利用效率可能不如系統(tǒng)管理員希望的那樣高。特別是,一個運行隊列中的進程將得到比容許其得到的更多的處理時間。
這樣,需要有一種系統(tǒng)、裝置和方法來保證系統(tǒng)的每個隊列永遠包含分配數(shù)字不同的各類進程的混合以保證系統(tǒng)管理員建立的處理器使用策略可以得到堅持。
在一個
具體實施例方式
中,按類組織線程,每一類由一組相關的線程構成。每一類都與遵循使用策略的優(yōu)先級相關聯(lián)。此優(yōu)先級用于修改分配給此類中的每個線程的調(diào)度優(yōu)先級。根據(jù)類優(yōu)先級的值,類和該類中的每個線程可處于多個優(yōu)先級區(qū)域或范圍之一中。本發(fā)明周期性地判斷一運行隊列中一個優(yōu)先級區(qū)域內(nèi)的線程數(shù)另一運行隊列中該優(yōu)先級區(qū)域內(nèi)的線程數(shù)相比是否超過一個預先確定的數(shù)值。如果是這樣,系統(tǒng)就被認為是負荷失衡。本發(fā)明就力圖均衡此系統(tǒng)的負荷,從線程數(shù)大的運行隊列中移動該優(yōu)先級區(qū)域內(nèi)的一個線程送到線程數(shù)較小的運行隊列。如果此系統(tǒng)在最高優(yōu)先級區(qū)域的負荷是平衡的,本發(fā)明將通過檢查了解系統(tǒng)在次高優(yōu)先級區(qū)域的負荷是否平衡,依此類推。
圖1為示出根據(jù)本發(fā)明的分布式數(shù)據(jù)處理系統(tǒng)的示例性框圖。
圖2為根據(jù)本發(fā)明的服務器裝置的示例性框圖。
圖3為根據(jù)本發(fā)明的客戶機的示例性框圖。
圖4示出可由系統(tǒng)管理員設計的資源使用策略。
圖5示出了類優(yōu)先級如何影響運行隊列中的線程。
圖6示出了由3組不同的用戶共享的計算機系統(tǒng)的運行隊列。
圖7為可用來實現(xiàn)本發(fā)明的軟件程序的流程圖。
在示例中,服務器104以及存儲單元106與網(wǎng)絡102連接。此外,客戶機108、110和112與網(wǎng)絡102相連。這些客戶機108、110和112可以是,例如,個人計算機或網(wǎng)絡計算機。在示例中,服務器104向客戶機108、110和112提供數(shù)據(jù),如引導文件、操作系統(tǒng)映像及應用??蛻魴C108、110和112是服務器104的客戶機。網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100可包括附加的服務器、客戶機和其他未示出的裝置。在示例中,網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100是由網(wǎng)絡102代表使用TCP/IP協(xié)議集互相通信的全世界網(wǎng)絡和網(wǎng)關集合的因特網(wǎng)。在因特網(wǎng)的中心是在主節(jié)點或主計算機之間的主干高速數(shù)據(jù)通信線路,由成千上萬個傳送數(shù)據(jù)和消息的商用、政府、教育及其他計算機系統(tǒng)組成。當然,網(wǎng)絡數(shù)據(jù)處理系統(tǒng)100也可以由不同類型的網(wǎng)絡實現(xiàn),比如像內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。圖1的意圖是作為一個示例,而不是對本發(fā)明的體系結構的限制。
下面參照圖2,圖2示出的是根據(jù)本發(fā)明的優(yōu)選實施例的數(shù)據(jù)處理系統(tǒng)的框圖,此系統(tǒng),可以作為服務器,例如圖1中的服務器104。數(shù)據(jù)處理系統(tǒng)200可以是對稱的多處理器(SMP)系統(tǒng),包含多個與系統(tǒng)總線206連接的處理器202和204。另一種方案是采用單處理器系統(tǒng)。與系統(tǒng)總線206相連接的還有可提供與局部存儲器209的接口的存儲器控制器/高速緩存208。I/O總線橋210與系統(tǒng)總線206相連接并提供與I/O總線212的接口。存儲器控制器/高速緩存208和I/O總線橋210可如圖所示地集成。
與I/O總線212連接的外圍部件互連(PCI)總線橋214可提供與PCI局部總線216的接口??梢杂卸鄠€調(diào)制解調(diào)器與PCI局部總線216相連接。典型的PCI總線設備可支持4個PCI擴展槽或附加連接器。至圖1的網(wǎng)絡計算機108、110和112的通信鏈路可通過藉助附件電路板連接到PCI局部總線216的調(diào)制解調(diào)器218和網(wǎng)絡適配器220來提供。附加的PCI總線橋222和224可提供對附加的PCI局部總線226和228的接口,從這些接口附加的調(diào)制解調(diào)器或者網(wǎng)絡適配器可以得到支持。以這種方式,數(shù)據(jù)處理系統(tǒng)200允許與多個網(wǎng)絡計算機相連接。存儲器映像圖形適配器230和硬盤232也可以或者直接或者間接地與I/O總線212相連接,如圖所示本技術領域的人員可以理解,圖2所示的硬件是可以變化的。比如,其他的外圍設備,如光盤驅(qū)動器等等,也可以用來代替所示的硬件或者與其一起使用。上述的示例并不意味著對本發(fā)明進行系統(tǒng)結構上的限制。
圖2所示的數(shù)據(jù)處理系統(tǒng)也可以是,例如,IBM的e-Server pSeries系統(tǒng),紐約阿芒口國際商業(yè)機器公司的產(chǎn)品,可運行先進交互執(zhí)行(AIX)操作系統(tǒng)或LINUX操作系統(tǒng)。
下面參考圖3,圖中示出可以應用本發(fā)明的數(shù)據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)300是客戶計算機的一個示例。數(shù)據(jù)處理系統(tǒng)300采用外圍部件互連(PCI)局部總線系統(tǒng)結構。雖然示出的示例采用PCI總線,但是也可以采用其他的總線結構,如加速圖形端口(AGP)和工業(yè)標準體系結構(ISA)。處理器302和主存儲器304通過PCI橋308與PCI局部總線306相連接。PCI橋308也可包含應用于處理器302的集成存儲器控制器和高速緩沖存儲器。至PCI局部總線306的附的連接,可以通過元件直接互連或通過附加電路板來實現(xiàn)。在上述示例中,局域網(wǎng)(LAN)適配器310、SCSI主機總線適配器312和擴展總線接口314通過元件直接互連連接到PCI局部總線306。與此相對,音頻適配器316、圖形適配器318和音頻/視頻適配器319通過插入擴展槽的附加電路板與PCI局部總線306相連接。擴展總線接口314可提供到鍵盤和鼠標適配器320、調(diào)制解調(diào)器322和附加存儲器324的連接。小型計算機系統(tǒng)接口(SCSI)主機總線適配器312可提供到硬盤驅(qū)動器326、磁帶驅(qū)動器328和CD-ROM驅(qū)動器330的連接。典型的PCI局部總線裝置可以支持三個或者四個擴展槽或附加連接器。
操作系統(tǒng)在處理器302上運行并且用來協(xié)調(diào)和提供對圖3中的數(shù)據(jù)處理系統(tǒng)300內(nèi)的各種部件的控制。操作系統(tǒng)可以是市售的操作系統(tǒng),如微軟公司出售的Windows 2000。面向?qū)ο蟮木幊滔到y(tǒng),如Java,可以與操作系統(tǒng)配合運行并提供從在數(shù)據(jù)處理系統(tǒng)300上執(zhí)行的程序或應用對操作系統(tǒng)的調(diào)用。“Java”是Sun微系統(tǒng)公司的商標。操作系統(tǒng)的指令、面向?qū)ο蟮牟僮飨到y(tǒng)、應用或程序存儲在存儲裝置,如硬盤驅(qū)動器326中,并且裝載到主存儲器304由處理器302執(zhí)行。
本領域的人員可以理解,圖3所示的硬件可隨實現(xiàn)而改變。其他的內(nèi)部硬件或外設,如閃速ROM(或等效的非易失性存儲器)或光盤驅(qū)動器等等,也可以用來代替圖3所示的硬件或者與其一起使用。同樣,本發(fā)明的進程也可應用到多處理器數(shù)據(jù)處理系統(tǒng)。
另外一個例子,數(shù)據(jù)處理系統(tǒng)300可以是一個獨立系統(tǒng),配置成為可以引導而無需依靠某種網(wǎng)絡通信接口,不管數(shù)據(jù)處理系統(tǒng)300是否包含某種網(wǎng)絡通信接口。再舉一個例子,數(shù)據(jù)處理系統(tǒng)300可以是個人數(shù)字助理(PDA),其配置為具有ROM和/或閃速ROM存儲器,用來提供存儲操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)的非易失性存儲器。
圖3中的示例和上述的示例并不代表對本發(fā)明的體系結構的限制。比如,數(shù)據(jù)處理系統(tǒng)300除了采取PDA形式之外,也可以是筆記本計算機或手持計算機。數(shù)據(jù)處理系統(tǒng)300也可以是信息站設備或web設備。
本發(fā)明可以提供一種裝置、系統(tǒng)和方法來保證多處理器系統(tǒng)的每個運行隊列包含不同線程類中的進程,每個類具有不同的優(yōu)先級數(shù),從而保證建立的使用策略可以得到遵守。對于圖1的客戶機108、110和112或?qū)τ诜掌?04或?qū)τ诜掌?04及客戶機108、110和112兩者,本發(fā)明也可以是局部性質(zhì)的。因此,本發(fā)明可以駐留在計算機系統(tǒng)所使用的任何數(shù)據(jù)存儲介質(zhì)(即軟盤、CD盤、硬盤、ROM、RAM等等)之上。
圖4示出可由系統(tǒng)管理員設計的資源使用策略。如圖4A所示,此資源使用策略的開發(fā)是針對一個大學中的3個系(例如物理系、化學系和數(shù)學系)共享的計算機系統(tǒng)(例如服務器)。根據(jù)此策略,物理系400的用戶402得到60%的計算機系統(tǒng)CPU時間,化學系410的用戶412得到30%的計算機系統(tǒng)CPU時間,而數(shù)學系420的用戶422得到10%的計算機系統(tǒng)CPU時間。為了互相區(qū)別各組線程,將其標記為類。具體說,屬于物理系的用戶的線程標記為A類,屬于化學系的用戶的線程標記為B類,而屬于數(shù)學系的用戶的線程標記為C類。
此資源使用策略的一個附加策略是區(qū)域分布策略。此區(qū)域分布策略示于圖4B。其中顯示出兩個區(qū)域,區(qū)域1和區(qū)域2。這一分布策略將優(yōu)先級在0-14之間的所有類歸類到區(qū)域1中,而將優(yōu)先級在15-30之間的所有類歸類到區(qū)域2中。這樣,新創(chuàng)建的屬于數(shù)學系用戶的線程將落在區(qū)域1中,而屬于物理系或化學系用戶的線程將落在區(qū)域2中。
與現(xiàn)有技術中一樣,生成的每個線程具有默認的優(yōu)先級。此默認優(yōu)先級對于所有的線程都相同。然而,當線程置于運行隊列中時,其優(yōu)先級根據(jù)其所屬的類進行調(diào)節(jié)。例如,對A類線程的默認優(yōu)先級將加上30。與此類似,對B類線程的默認優(yōu)先級將加上20,而對C類線程的默認優(yōu)先級將加上10。這樣,運行隊列中的線程的總優(yōu)先級為P總=P默認+P類。
圖5示出類優(yōu)先級如何影響運行隊列中的線程。在圖5中,處理器的優(yōu)先級空間500分割為優(yōu)先級數(shù)0、10、20和30。還示出A類線程520、B類線程540和C類線程560。線程的P默認分配零(0)值。于是,所有的線程都從同一優(yōu)先級零(0)開始。將優(yōu)先級增量ΔA530,30加在A類線程之上,將優(yōu)先級增量ΔB550,20加在B類線程之上,而將優(yōu)先級增量ΔC570,10加在C類線程之上。于是,處理器對待A類線程將會優(yōu)先于B類線程。與此類似,處理器對待B類線程將會優(yōu)先于C類線程。
在現(xiàn)有技術中,在線程受到處理時,其優(yōu)先級也減小。這一方案容許運行隊列中的所有線程可以公平地得到處理器的注意。在本發(fā)明中也采用同一方案。即在線程受到處理時,其P默認將減小。這容許類內(nèi)的線程互相公平地競爭。此外,在一類線程受到處理時,類優(yōu)先級也同樣地減小。例如,由于A類線程具有比B類線程和C類線程高的優(yōu)先級,A類線程將在其他兩類之前處理。但是,在A類線程受到處理時,A類優(yōu)先級30也將減小,直到達到20或20以下。此時,A類和B類線程兩者都將受到處理。兩類的優(yōu)先級將減小到10或10以下,到那時所有三類中的線程將受到處理。
在類優(yōu)先級減小時,類可能從一個區(qū)域進入另一個區(qū)域。于是,類優(yōu)先級可看作是流動的。當類中的線程受到處理時,優(yōu)先級減小,而當線程未受到處理時,優(yōu)先級增加,如在使用策略中所示。
圖6示出共享的計算機系統(tǒng)的運行隊列。其中假設計算機系統(tǒng)具有兩個CPU和兩個運行隊列,每個運行隊列都與一個CPU(即CPU0600和CPU1650)有聯(lián)系。還假設每一類的優(yōu)先級增量已經(jīng)加到線程上。系統(tǒng)中存在三類線程。具體地說,與CPU0600相聯(lián)系的運行隊列既包含A類610的線程,也包含B類620的線程。與CPU1相聯(lián)系的運行隊列包含C類630的線程。
在運行中,當創(chuàng)建一個線程時,工作負荷管理器根據(jù)其屬于的用戶判斷線程的類,而調(diào)度器利用放置算法(比如,輪轉(zhuǎn)法)將線程放置于運行隊列中。當線程受到處理脫離運行隊列并且新的線程放置到運行隊列中時,可能出現(xiàn)線程按照圖6所示分布到系統(tǒng)的場合。
圖6中線程的分布并不理想,因為由系統(tǒng)管理員設定的使用策略(見圖4A)將不會得到堅持。例如,由于C類線程是與CPU1650相聯(lián)系的運行隊列中的唯一的線程,這些線程將得到50%的系統(tǒng)處理時間。顯然,這比容許其得到的10%高得多。一種保證其一點兒都不會得到多于容許其得到的處理時間的方法是使運行隊列中存在另一類線程。這將促使兩類線程之間的競爭。的確,線程的理想分布是使每個運行隊列中包含所有三個不同類的線程。
保證建立的使用策略得到堅持的一種方法是周期地檢查每個運行隊列來判斷其中是否至少存在不同的兩類線程(即一個優(yōu)先級較高的類和一個優(yōu)先級較低的類)。如不是如此,則應該在該運行隊列中放置一個具有比現(xiàn)在存在于其中的類優(yōu)先級高的不同類的線程。另外,如果盡管在運行隊列中具有這樣不同的兩類線程,但兩類中的任何一類或兩類仍然得到高于容許的處理時間,那就需要在運行隊列中再放置一個具有更高的類優(yōu)先級的不同的類的線程。
為了檢查運行隊列中的所有的線程來判斷其中是否每一個都包含至少兩類不同的線程,需要花費很多時間并且使CPU高強度運行。結果,本發(fā)明每0.1秒檢查線程的一部分以便了解其是否分布于全部運行隊列中。本發(fā)明利用此前引入的區(qū)域概念(見圖4B)來判斷對哪一部分線程進行調(diào)查。具體說,本發(fā)明將在每一個運行隊列中包括相同數(shù)目的特定區(qū)域中的線程的系統(tǒng)定義為良好平衡系統(tǒng)。如果兩個A類線程、兩個B類線程和兩個C類線程存在于兩個處理器中的每一個的運行隊列中(見圖6B),此系統(tǒng)將是平衡系統(tǒng)。此系統(tǒng)之所以是平衡系統(tǒng)是因為在兩個運行隊列中都有四個區(qū)域2中的線程和兩個區(qū)域1中的線程。
如果系統(tǒng)不是平衡系統(tǒng)(即,如果一個運行隊列比另一個運行隊列具有更多的某一特定區(qū)域中的線程),則線程將從具有較大線程數(shù)的運行隊列轉(zhuǎn)移到在該區(qū)域中具有較小線程數(shù)的運行隊列。應該指出,此系統(tǒng)是很強的動態(tài)系統(tǒng)。就是說,在任何時刻,一個線程可以放置到運行隊列中,而一個或多個線程可以受到處理脫離運行隊列,而一個類或多個類可從一個區(qū)域轉(zhuǎn)移到另一個區(qū)域等。于是,因為這一動態(tài)機制,本發(fā)明在一個時候只處理一個區(qū)域,并且當系統(tǒng)不平衡時只有一個線程從一個運行隊列中轉(zhuǎn)移到另一個運行隊列。
再參考圖6A。當本發(fā)明檢查區(qū)域2時,將會發(fā)現(xiàn)在該區(qū)域中有八(8)個線程,不過其全部都是在與CPU0610相聯(lián)系的運行隊列中。因此,系統(tǒng)將被確定為不平衡的。結果,一個線程將從與CPU0相聯(lián)系的運行隊列轉(zhuǎn)移到與CPU1相聯(lián)系的運行隊列,并且該過程結束。
在此場合,轉(zhuǎn)移的線程是A類還是B類線程實際上沒什么關系,因為兩類都早在區(qū)域2中。如果系統(tǒng)是平衡的并且在此進程中所有的B類線程從與CPU0相聯(lián)系的運行隊列轉(zhuǎn)移到與CPU1相聯(lián)系的運行隊列,則B類線程可能會啟動取得大量的處理時間(因為其類優(yōu)先級高于C類線程)。當發(fā)生這種情況時,其類優(yōu)先級將開始減小。如果其類優(yōu)先級減小到足夠使其類優(yōu)先級現(xiàn)在進入?yún)^(qū)域1,系統(tǒng)將會再變成為不平衡的。此時,A類線程將從一個運行隊列轉(zhuǎn)移到另一個運行隊列以使系統(tǒng)重新變?yōu)槠胶庀到y(tǒng)。
在使區(qū)域2平衡之后,區(qū)域1將受到檢查。在此場合,將會發(fā)現(xiàn)系統(tǒng)是非平衡系統(tǒng),因為所有的C類線程(請注意C類是區(qū)域1中唯一的一類)處于與CPU1相聯(lián)系的運行隊列中。結果,C類線程將每次轉(zhuǎn)移一個直到兩個運行隊列都包含相同數(shù)目的C類線程。
在我們的示例中,理想的線程分布是示于圖6B中的情況。在圖6B中,每個運行隊列都包含相同數(shù)目的各類線程。于是,假設線程既沒有放置于運行隊列中,也沒有進行處理脫離運行隊列,則系統(tǒng)將會永遠保持平衡。如果一個類從一個區(qū)域轉(zhuǎn)移到另一個區(qū)域,該類中的所有線程將會發(fā)生遷移。因此,系統(tǒng)將會繼續(xù)保持平衡。
圖7為可用來實現(xiàn)本發(fā)明的軟件程序的流程圖。當計算機系統(tǒng)打開或重置時,此軟件程序啟動(步驟700)。此程序監(jiān)視每個運行隊列中的每個類中的線程數(shù)。此程序做到這一點的方法是通過對運行隊列每秒取樣100次以便得到在每個運行隊列中每個類中的平均線程數(shù)。之后,每0.1秒此過程利用線程類來判斷一個運行隊列最高區(qū)域中的線程數(shù)(例如區(qū)域2)平均來講是否比另一運行隊列中同一區(qū)域(即區(qū)域2)中的線程數(shù)大1.5個線程。如果是,則此系統(tǒng)將被認為是不平衡的。此過程將嘗試通過將在該區(qū)域中具有最高線程數(shù)的運行隊列中的一個線程轉(zhuǎn)移到在該區(qū)域中具有最低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
如前所述,因為此系統(tǒng)具有很強的動態(tài)性,此過程將不能保證此系統(tǒng)的確是平衡的(即此過程將不能保證在每個運行隊列中在該區(qū)域都存在相同數(shù)目的線程)。此外,因為這需要花費很多時間并且使CPU高強度運行來保證從所有區(qū)域來看此系統(tǒng)是平衡的,此過程將在此中止。
這樣,此過程永遠從最高區(qū)域開始。如果最高區(qū)域是不平衡的,則此過程將嘗試平衡此區(qū)域并在該處中止。如果最高區(qū)域是平衡的,則此過程將會調(diào)查次高區(qū)域。每個區(qū)域都將受到調(diào)查,從最高的到最低的,直到一個運行隊列的線程數(shù)比另一運行隊列的中的線程數(shù)大1.5個線程。當發(fā)生這種情況時,將把具有最高線程數(shù)的運行隊列的一個線程轉(zhuǎn)移到具有最低線程數(shù)的運行隊列中而此過程將結束。如果在所有的運行隊列中所有的區(qū)域中的線程數(shù)都相等,則此過程將結束而不將任何線程從一個運行隊列轉(zhuǎn)移到另一個運行隊列(步驟700-714)。
對本發(fā)明的上述描述的目的在于顯示和描述,而并不企圖包羅一切或局限于所公開的形式的本發(fā)明。對于本技術領域的人士各種改變和變形是顯而易見的。本實施方式的選擇和描述是為了最好地說明本發(fā)明的原理,實際應用,并且使本技術領域的其他人士理解本發(fā)明的可適應預期的各種實際利用的各種改型的各種實施方式。
權利要求
1.一種對多處理器系統(tǒng)進行負荷平衡的方法,所述系統(tǒng)的構成包括多個處理器運行隊列,每個運行隊列用于保持待處理的線程,此方法的構成包括對每個創(chuàng)建的線程分配一個優(yōu)先級并且將創(chuàng)建的線程放置于運行隊列中,分配的優(yōu)先級將線程歸類到一個區(qū)域中;判斷系統(tǒng)是否負荷不平衡,如歸類到一個運行隊列中的一個區(qū)域中的線程數(shù)多于另一運行隊列中的同一區(qū)域中的線程數(shù),系統(tǒng)就是負荷不平衡的;以及對系統(tǒng)進行負荷平衡處理,如果系統(tǒng)是負荷不平衡的,可通過將在該區(qū)域中具有較高線程數(shù)的運行隊列中的線程轉(zhuǎn)移到在該區(qū)域中具有較低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
2.如權利要求1所述的方法,其中按類來組織每個隊列的線程。
3.如權利要求2所述的方法,其中根據(jù)線程所屬于的多處理器系統(tǒng)的用戶,來確定線程所屬于的類。
4.如權利要求3所述的方法,其中分配的優(yōu)先級是線程屬于的類的優(yōu)先級。
5.如權利要求4所述的方法,其中當類中的線程受到處理時,類優(yōu)先級減小,而當類中的線程在容許的范圍內(nèi)未受到處理時,其類優(yōu)先級增加。
6.如權利要求5所述的方法,其中當類優(yōu)先級減小或增加時,線程可重新歸類到另一個區(qū)域。
7.如權利要求6所述的方法,其中如果一個運行隊列的一個區(qū)域中的線程數(shù)超過另一個運行隊列的同一個區(qū)域中的線程數(shù)一個預定的數(shù)目以上,則系統(tǒng)是負荷不平衡的。
8.一種在計算機可讀介質(zhì)上用來對多處理器系統(tǒng)進行負荷平衡的計算機程序產(chǎn)品,所述系統(tǒng)的構成包括多個處理器運行隊列,每個運行隊列用于保持待處理的線程,此計算機程序的構成包括對每個創(chuàng)建的線程分配一個優(yōu)先級并且將創(chuàng)建的線程放置于運行隊列中的代碼單元,分配的優(yōu)先級將線程歸類到一個區(qū)域;判斷系統(tǒng)是否負荷不平衡的代碼單元,如歸類到一個運行隊列中的一個區(qū)域中的線程數(shù)多于另一運行隊列中的同一區(qū)域中的線程數(shù),系統(tǒng)就是負荷不平衡的;以及對系統(tǒng)進行負荷平衡處理的代碼單元,如果系統(tǒng)是負荷不平衡的,可通過將在該區(qū)域中具有較高線程數(shù)的運行隊列中的線程轉(zhuǎn)移到在該區(qū)域中具有較低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
9.如權利要求8所述的計算機程序產(chǎn)品,其中按類來組織每個隊列的線程。
10.如權利要求9所述的計算機程序產(chǎn)品,其中根據(jù)線程所屬于的多處理器系統(tǒng)的用戶,來確定線程所屬于的類。
11.如權利要求10所述的計算機程序產(chǎn)品,其中分配的優(yōu)先級是線程屬于的類的優(yōu)先級。
12.如權利要求11所述的計算機程序產(chǎn)品,其中當類中的線程受到處理時,類優(yōu)先級減小,而當類中的線程在容許的范圍內(nèi)未受到處理時,其類優(yōu)先級增加。
13.如權利要求12所述的計算機程序產(chǎn)品,其中當類優(yōu)先級減小或增加時,線程可重新歸類到另一個區(qū)域。
14.如權利要求13所述的計算機程序產(chǎn)品,其中如果一個運行隊列的一個區(qū)域中的線程數(shù)超過另一個運行隊列的同一個區(qū)域中的線程數(shù)一個預定的數(shù)目以上,則系統(tǒng)是負荷不平衡的。
15.一種對多處理器系統(tǒng)進行負荷平衡的裝置,所述系統(tǒng)的構成包括多個處理器運行隊列,每個運行隊列用于保持待處理的線程,此裝置的構成包括對每個創(chuàng)建的線程分配一個優(yōu)先級并且將創(chuàng)建的線程放置于運行隊列中的裝置,分配的優(yōu)先級將線程歸類到一個區(qū)域中;判斷系統(tǒng)是否負荷不平衡的裝置,如歸類到一個運行隊列中的一個區(qū)域中的線程數(shù)多于另一運行隊列中的同一區(qū)域中的線程數(shù),系統(tǒng)就是負荷不平衡的;以及對系統(tǒng)進行負荷平衡處理的裝置,如果系統(tǒng)是負荷不平衡的,可通過將在該區(qū)域中具有較高線程數(shù)的運行隊列的線程轉(zhuǎn)移到在該區(qū)域中具有較低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
16.如權利要求15所述的裝置,其中按類來組織每個隊列的線程。
17.如權利要求16所述的裝置,其中根據(jù)線程所屬于的多處理器系統(tǒng)的用戶,來確定線程所屬于的類。
18.如權利要求17所述的裝置,其中分配的優(yōu)先級是線程屬于的類的優(yōu)先級。
19.如權利要求18所述的裝置,其中當類中的線程受到處理時,類優(yōu)先級減小,而當類中的線程在容許的范圍內(nèi)未受到處理時,其類優(yōu)先級增加。
20.如權利要求19所述的裝置,其中當類優(yōu)先級減小或增加時,線程可重新歸類到另一個區(qū)域。
21.如權利要求20所述的裝置,其中如果一個運行隊列的一個區(qū)域中的線程數(shù)超過另一個運行隊列的同一個區(qū)域中的線程數(shù)一個預定的數(shù)目以上,則系統(tǒng)是負荷不平衡的。
22.一種可自行進行負荷平衡處理的多處理器系統(tǒng),所述系統(tǒng)的構成包括多個處理器運行隊列,每個運行隊列用于保持待處理的線程,此系統(tǒng)的構成包括至少一個用來存儲代碼數(shù)據(jù)的存儲系統(tǒng);以及至少一個用來處理代碼數(shù)據(jù)以便進行以下處理的處理器對每個創(chuàng)建的線程分配優(yōu)先級并且將創(chuàng)建的線程放置于運行隊列中,分配的優(yōu)先級將線程歸類到一個區(qū)域中;判斷系統(tǒng)是否負荷不平衡,如歸類到一個運行隊列中的一個區(qū)域中的線程數(shù)多于另一運行隊列中的同一區(qū)域中的線程數(shù),系統(tǒng)就是負荷不平衡的;以及對系統(tǒng)進行負荷平衡處理,如果系統(tǒng)是負荷不平衡的,可通過將在該區(qū)域中具有較高線程數(shù)的運行隊列中的線程轉(zhuǎn)移到在該區(qū)域中具有較低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
23.如權利要求22所述的多處理器系統(tǒng),其中按類來組織每個隊列的線程。
24.如權利要求23所述的多處理器系統(tǒng),根據(jù)線程所屬于的多處理器系統(tǒng)的用戶,來確定線程所屬于的類。
25.如權利要求24所述的多處理器系統(tǒng),其中分配的優(yōu)先級是線程屬于的類的優(yōu)先級。
26.如權利要求25所述的多處理器系統(tǒng),其中當類中的線程受到處理時,類優(yōu)先級減小,而當類中的線程在容許的范圍內(nèi)未受到處理時,其類優(yōu)先級增加。
27.如權利要求26所述的多處理器系統(tǒng),其中當類優(yōu)先級減小或增加時,線程可重新歸類到另一個區(qū)域。
28.如權利要求27所述的多處理器系統(tǒng),其中如果一個運行隊列的一個區(qū)域中的線程數(shù)超過另一個運行隊列的同一個區(qū)域中的線程數(shù)一個預定的數(shù)目以上,則系統(tǒng)是負荷不平衡的。
全文摘要
本發(fā)明公開了一種對多處理器系統(tǒng)進行負荷平衡的方法,系統(tǒng)和裝置,所述多處理器系統(tǒng)包括多個處理器運行隊列,每個運行隊列用于保持待處理的線程。本發(fā)明對每個創(chuàng)建的線程分配一個優(yōu)先級并且將創(chuàng)建的線程放置于運行隊列中,分配的優(yōu)先級將線程歸類到一個區(qū)域中;如歸類到一個運行隊列中的一個區(qū)域中的線程數(shù)多于另一運行隊列中的同一區(qū)域中的線程數(shù),系統(tǒng)就是負荷不平衡的;如果系統(tǒng)是負荷不平衡的,可通過將在該區(qū)域中較高線程數(shù)的運行隊列中的線程轉(zhuǎn)移到在該區(qū)域中較具有低線程數(shù)的運行隊列中來平衡此系統(tǒng)。
文檔編號G06F9/00GK1469246SQ0314515
公開日2004年1月21日 申請日期2003年6月16日 優(yōu)先權日2002年6月20日
發(fā)明者L·B·布倫納, D·J·伯迪克, L B 布倫納, 伯迪克 申請人:國際商業(yè)機器公司