專利名稱:動態(tài)分配計算機資源的方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機和計算機軟件,特別是涉及多線程計算機中的計算機資源分配。
背景技術:
由于當代社會中對計算機的依賴不斷增長,計算機技術不得不在許多前沿取得進步,以跟上不斷增長的需求。大量研究與開發(fā)工作的一個特別課題是并行化,即多個任務并行執(zhí)行的性能。
已開發(fā)出若干計算機軟件和硬件技術,以有利于增強并行處理。從軟件的角度看,已開發(fā)出多線程操作系統(tǒng)和內核,它們允許計算機程序以多“線程”并發(fā)執(zhí)行,從而使多個任務基本上能同時進行。線程通常代表程序的一些獨立的執(zhí)行路徑。例如,對于一個電子商務計算機應用,不同的線程可被指定到不同的客戶,從而每個客戶的指定電子商務事務可以在一單獨的線程中得到處理。
從硬件角度看,計算機越來越依賴于多個微處理器,以提供增強的工作負荷能力。再有,已開發(fā)出某些微處理器,它們支持并行執(zhí)行多個線程的能力,在效果上提供了通過使用多個微處理器所能得到的許多同樣的性能增益。
然而,在多處理器計算機中出現的一個重要的瓶頸與進、出每個微處理器的數據傳送相關聯,這個瓶頸通常被稱作通信成本。大多數計算機依靠主存儲器,其作為該計算機的主要工作存儲器。然而,從主存儲器中檢索數據和把數據存回主存儲器往往被要求以明顯低于微處理器內部數據傳送速度的速度進行。當微處理器使用數據時,往往利用稱作高速緩存的中間緩沖器來暫時存儲來自主存儲器的數據。這些高速緩存往往比主存儲器尺寸小但速度顯著較快。高速緩存往往利用數據的時間和空間的局部性,結果往往顯著減少計算機中發(fā)生的比較慢的對主存儲器的訪問次數并減少了計算機承受的總通信成本。
在一個計算機中的全部微處理器往往共享同一個主存儲器,這種體系結構通常稱作對稱多處理(SMP)。然而,這類計算機的一個限制是由于通常要求在一個公共總線或互連上進行多個微處理器與主存儲器之間的所有通信。隨著計算機中微處理器個數的增加,到主存儲器的通信量成為計算機性能的瓶頸,其與是否使用中間高速緩存無關。
為克服這一潛在的瓶頸,許多計算機設計依靠非均衡存儲器訪問(NUMA),以此使多個主存儲器基本上分布在一個計算機上并與各組微處理器和高速緩存組合成物理子系統(tǒng)或模塊。一個NUMA計算機的每個物理子系統(tǒng)中的微處理器、高速緩存和存儲器通常被安裝在同一電路板或電路卡上,以提供物理子系統(tǒng)內的所有“本地”部件之間較高速的交互。這些物理子系統(tǒng)還通過網絡(如一系統(tǒng)總線或一些點到點互連的集合)彼此連接,從而允許一個物理子系統(tǒng)中的微處理器訪問存儲在另一物理子系統(tǒng)中的數據,這樣便能有效地擴展計算機的總體能力。然而,由于對存儲在本地存儲器(即與微處理器處在同一物理子系統(tǒng)中的存儲器)中的數據的訪問時間往往顯著地短于對存儲在遠程存儲器(即處在另一物理子系統(tǒng)中的存儲器)中的數據的訪問時間,所以這種存儲器訪問被稱作“非均衡的”。
所以,從通信成本的角度看,在NUMA系統(tǒng)中,通過使數據通信本地化于每個物理子系統(tǒng)內并最大限度地減少需在各物理子系統(tǒng)之間傳送數據的次數,使NUMA系統(tǒng)中的性能達到最佳。
有效地利用計算機中的硬件資源往往需要軟件和硬件之間的協(xié)調努力。如前所指,從軟件的角度看,由計算機進行的大部分工作由各線程處理。為保證最佳性能,線程通常被指定到各可用計算機資源子集,其指定方式是更使計算機的工作負荷在各可用計算機資源上均勻分布。
例如,為了有效地利用微處理器,希望在可用微處理器當中均勻分布線程,以平衡每一單個微處理器的工作負荷,這一過程稱作“對稱”資源分配。然而,由于通信成本也能對系統(tǒng)性能造成顯著影響,所以也希望邏輯上把一個線程與它將使用的數據綁在一起,于是,只要可能,便把線程對數據的訪問本地化在一個高速緩存中,或者,如果是在一個NUMA計算機中,則至少本地化在同一物理子系統(tǒng)之內。否則,訪問非本地化數據的通信成本可能超過線程對稱分布所帶來的好處。通常,數據與線程的捆綁需要由人決定把通用型線程與物理上本地化的存儲器、處理器以及相關資源關聯起來。
在對稱資源管理方案中,線程是在激活時,例如每當創(chuàng)建或再激活線程的時候,被分配的。被激活的線程通常被指定到最可能得到的或負荷最小的資源或資源組。然而,為解決通信成本問題進行的資源(如存儲器資源)非均衡分布通常不是以這種自動和透明的方式實現的。而是,非均衡資源管理往往需要大量的用戶分析和定制配置,包括例如計算機程序的定制編程以具體解決資源分配問題。
資源管理更希望在計算機的操作系統(tǒng)級或內核級進行,從而不依賴于用到可能安裝在計算機上的應用或其他計算機程序上的任何特定編程技術。具體地說,當把資源管理嵌入操作系統(tǒng)或內核中時,這樣的資源管理將不需要在較高級計算機程序中進行特定的定制以支持計算機資源的最佳分配,從而對可能在給定計算機上執(zhí)行的所有計算機程序提供性能上的好處。特別是在NUMA計算機中,那里通過把線程利用的資源本地化在單個物理子系統(tǒng)中而獲得性能上的好處,將更加希望以更透明的方式實現有效的資源分配,而無需顯著的定制。
發(fā)明內容
本發(fā)明通過提供一種裝置、程序產品和方法來解決與現有技術有關的這些及其他問題,在這一裝置、程序產品和方法中,根據與線程關聯的特定“類型”把線程動態(tài)地指定到備計算機資源。具體地說,按線程類型分配駐留在計算機的同一物理子系統(tǒng)內的資源,從而那些特定類型的新建線程和/或再激活線程被動態(tài)地指定到分配給它們各自線程類型的資源。這樣,共享同一類型的那些線程通常被指定到駐留在計算機的同一物理子系統(tǒng)內的計算機資源,而且往往是以基本上透明的方式,而無需對這些線程所關聯的計算機程序進行任何顯著的定制。
如在下文中將清楚看到的那樣,可以利用很多線程屬性或特征把線程分類成各種線程類型。除了其他可能的區(qū)分外,可根據運行優(yōu)先級、對緩沖區(qū)的指定、用戶標識、用戶簡檔、存儲器子系統(tǒng)、父任務、父線程、父作業(yè)、父應用以及用戶授權等屬性中的一個或多個來定義線程類型。
在許多實例中,這里描述的線程指定將顯著減少一特定物理子系統(tǒng)內的資源與駐留在其他物理子系統(tǒng)中的其他資源交互的需求。而是,一個特定線程的通信量和處理開銷更可能局限在單個物理子系統(tǒng)內,從而消除伴隨子系統(tǒng)之間通信的開銷并使系統(tǒng)性能達到最好。
在一些實施例中,與給定線程類型相關聯的資源可被限定在單一物理子系統(tǒng)內。然而,在其他一些實施例中,一個線程類型可被分配來自多個物理子系統(tǒng)的資源。然而,在后一些實施例中,可能仍然希望把具有給定線程類型的各個線程指定到駐留在已為該線程類型分配了資源的那些物理子系統(tǒng)中的只一個子系統(tǒng)上的那些資源。
在這里所附的并構成本說明書又一部分的權利要求中列舉了表征本發(fā)明的這些和其他特點和優(yōu)點。然而,為了更好地理解本發(fā)明以及通過使用本發(fā)明所獲得的好處和達到的目的,應參考附圖以及相關的描述,其中描述了本發(fā)明的實施示例。
圖1是一多線程計算機中主要硬件組件的方框圖,在該計算機中納入了根據本發(fā)明的動態(tài)資源分配。
圖2是圖1的多線程計算機中主要軟件組件的方框圖。
圖3是流程圖,顯示由圖2中引用的線程調度程序執(zhí)行的激活線程例程的程序流。
圖4是流程圖,顯示由圖2中引用的線程調度程序執(zhí)行的另一個激活線程例程的程序流。
圖5是流程圖,顯示由操作系統(tǒng)執(zhí)行的啟動應用/邏輯子系統(tǒng)例程的程序流,該例程與圖4所示激活線程例程結合使用。
圖6A-6D是方框圖,顯示按本發(fā)明的方式在一多線程計算機的兩個物理子系統(tǒng)之間分配計算機資源的示例。
圖7是方框圖,顯示按本發(fā)明的方式在一多線程計算機的兩個物理子系統(tǒng)之間分配計算機資源的另一示例,其顯示把來自不只一個物理子系統(tǒng)的計算機資源分配給一個特定的線程類型。
具體實施例方式
下文討論的實施例利用了一種動態(tài)資源分配機制,這種機制至少是部分地根據線程類型在包括多個物理子系統(tǒng)的那類多線程計算機中把資源分配給那些線程。根據本發(fā)明,每當一個特定線程類型與特定一組資源關聯時,所有其后被激活并與那個線程類型匹配的線程將被指定到這同一組資源。再有,這些資源組通常被限定于單個物理子系統(tǒng),以便最大限度地減少計算機的多個物理子系統(tǒng)之間的交叉通信量,從而使總體系統(tǒng)性能最優(yōu)化。
這樣,在根據本發(fā)明的實施例中,通常只有當創(chuàng)建唯一類型的線程時,才會發(fā)生資源對稱指定;否則,對于和先前已被分配資源的其他線程共享相同線程類型的那些線程,發(fā)生的是非對稱指定。與其他非均衡資源指定相似,按類型對線程分組通常將提供一個好處,即增大容易地得到一特定線程所需資源而無顯著延時的可能性。
在下文討論的實施例中,通常能在一計算機系統(tǒng)中比較透明地實現資源指定。一旦定義了線程分類規(guī)則,通常往往能在無需明顯的用戶管理的情況下進行資源指定。這與傳統(tǒng)的NUMA體系結構相反,NUMA體系結構往往需要明顯的配置、定制和用戶分析。這也與傳統(tǒng)的對稱資源管理方案相反,其中線程通常被指定到當這些線程被創(chuàng)建或重新激活時最可用的那些資源,而不管多個線程之間有任何特定的相似性。
下文的討論將把被指定到特定資源組的實體稱作“線程”。然而,應該理解,其他術語可用于描述那些定義一計算機系統(tǒng)中唯一執(zhí)行路徑的實體。這樣,術語“線程”應被認為對應于計算機中的定義計算機系統(tǒng)中特定執(zhí)行路徑的任何實體。
在本發(fā)明的上下文中,線程類型實際上可包括一個線程的任何屬性或其他區(qū)別特征,其包括但不限于運行優(yōu)先級、對同一虛擬或物理緩沖區(qū)或存儲器的指定、用戶標識、父邏輯子系統(tǒng)、父作業(yè)、父應用、父任務或父線程、對同一存儲器子系統(tǒng)的指定、線程啟動時要執(zhí)行的初始程序的名稱、線程優(yōu)先級以及用戶簡檔。
再有,一組資源可包括處理器、本地高速緩存、共享高速緩存、共享存儲器等計算機資源的任何組合。此外,計算機資源可包括其他形式的資源,如各種輸入/輸出(I/O)資源。通常,適于通過非對稱相似性作為組指定的資源位于一個計算機的特定的與其他物理子系統(tǒng)不同的一個物理子系統(tǒng)內,這里一個子系統(tǒng)通常被認為是一組計算機資源,它們彼此交互比和其他物理子系統(tǒng)中的資源交互更有效。例如,在下文討論的實施例中,物理子系統(tǒng)由位于同一模塊中的硬件資源組合來確定,例如位于同一電路卡或多芯片模塊(MCM)上,或由這同一電路卡或多芯片模塊直接訪問或以其它方式控制。例如,在來自國際商業(yè)機器公司的eServer iSeries中型計算機系統(tǒng)中,物理子系統(tǒng)可包括含有多個處理器和一個共享存儲器以及各級(例如L1、L2和/或L3)中間共享的和/或本地的高速緩存的唯一的或與其他不同的MCM。再有,在一些實例中,存儲器可放置在與一物理子系統(tǒng)的其余組件分離的卡上,然而可使用駐留在MCM上的控制器直接訪問。在這樣的實施例中,一個給定MCM上的資源之間的通信往往比不同MCM上的資源之間的通信快得多。這樣,把歸為同類的線程指定到放置在單一MCM上的資源可使MCM之間的通信減至最少而有利于增加的MCM內部通信,從而使計算機系統(tǒng)的總體性能最佳化。
在所示實施例中,每當線程被激活,例如每當它們被創(chuàng)建(如果是新線程)和/或每當它們被重新激活(如果已存在,但當前處于未激活或休眠狀態(tài))時,它們便被指定到特定的資源組。然而,在不同的實施例中,可在不同的時間點進行對特定線程類型分配資源組。例如,在一個實施例中,可隨著尚未分配資源和/或需要添加資源的那種類型的一個線程的激活,為一個線程類型指定資源。然而,在其他實施例中,可在激活一種類型的任何線程之前為那種線程類型指定資源,例如,隨著一個應用的啟動、一個邏輯子系統(tǒng)的啟動或響應為特定線程類型預分配資源的一特定的程序指令。在這方面,邏輯子系統(tǒng)實際上可包括邏輯上彼此相關的應用、作業(yè)、線程或任務的任何集合。
再有,如在下文中將更清楚看到的那樣,在一些實施例中,一個線程類型可被分配一組與一計算機系統(tǒng)中的多個物理子系統(tǒng)關聯的計算機資源。例如,當一個特定線程類型預計需要比在一個給定物理子系統(tǒng)中可得到的資源還多的資源時,可能希望分配來自多個物理子系統(tǒng)的計算機資源。還有,當放置在一個物理子系統(tǒng)中的資源明顯不夠用時,可能希望允許多個物理子系統(tǒng)分擔負荷。然而,即使在這類情況中,可能希望定義子類型,或者至少是把一給定類型的特定線程分配給只位于一個物理子系統(tǒng)上的資源組(例如,對于一個特定線程,把該線程指定到位于一單個MCM上的諸處理器和存儲器)。
在又一些實施例中,線程類型可指定到這樣一組計算機資源,該組資源只包括一個給定物理子系統(tǒng)中可得到的計算機資源的子集。
現在轉到附圖,其中若干圖中的相似數字代表相似組件,圖1顯示一個計算機10中的主要硬件組件,在該計算機10中納入了根據本發(fā)明的動態(tài)資源分配。計算機10一般性地代表若干諸如網絡服務器、中型計算機、大型計算機等的多用戶計算機中的任何一個,如AS/4000或eServer iSeries中型計算機。然而,應該理解,本發(fā)明可在其他計算機或數據處理系統(tǒng)中實現,如在諸如工作站、桌面計算機、便攜計算機等的單用戶計算機中,或在其他可編程電子設備(如包含嵌入式控制器等)中實現。
計算機10一般包括多個物理子系統(tǒng)12,它們通過系統(tǒng)總線或其他通信接口彼此連接。此外,計算機10通常包括各種I/O資源,其一般化地以16表示,包括諸如存儲設備、工作站、終端、網絡、成像設備等各類資源。
每個物理子系統(tǒng)12包括一組計算機資源,如共享存儲器18、一個或多個微處理器20以及一級或多級高速緩沖存儲器,如共享高速緩存22以及一個或多個本地高速緩存24。每個物理子系統(tǒng)12中的資源18-24的特點是它們彼此之間進行的交互或通信與它們和其他物理子系統(tǒng)12中的資源進行的交互或通信相比更有效。例如,在每個物理子系統(tǒng)12中的資源可放置在同一個多芯片模塊(MCM)或電路卡上,從而使這些資源之間的互連可以比連接于系統(tǒng)總線14的互連快一個數量級或更快。
在本發(fā)明的其他實施例中可利用計算機資源的其他物理分區(qū)。再有,其他計算機硬件體系結構也可利用這里討論的動態(tài)資源分配技術。所以,本發(fā)明不限于圖1中所示的具體硬件實現。
接下來,圖2顯示能在圖1的計算機10中被利用的軟件體系結構示例30。如圖中所示,體系結構30可依靠操作系統(tǒng)32,在該操作系統(tǒng)上執(zhí)行多個作業(yè)或應用。在一些實施例中,在一個共同的邏輯子系統(tǒng)36中的一個或多個應用可被彼此關聯,而另一些應用可能不與任何特定的邏輯子系統(tǒng)關聯。
如圖2中所示,作為多線程計算機的計算機10可執(zhí)行或處理多個線程38,以代表用戶去完成所請求的任務。線程38可在若干情境內被利用,包括在操作系統(tǒng)32內、在一特定應用34內、在一特定邏輯子系統(tǒng)36內和/或在體系結構30中的其他地方。在一些體系結構中,甚至可以定義多個邏輯分區(qū),從而在一個給定體系結構中可發(fā)現多個包括獨立執(zhí)行的操作系統(tǒng)的邏輯分區(qū)。所以,實際上線程38可邏輯上駐留在給定計算機體系結構中的任何地方。
對線程38的管理,包括向特定線程分配資源,通常由線程調度程序40完成,其通常駐留在操作系統(tǒng)32內。例如,在上文討論的eServer iSeries實現中,線程調度程序40可駐留在這樣的計算機中的特許內部代碼(LIC)中。還可以理解,在根據本發(fā)明的一些實施例中,一個線程調度程序可能只管理一個計算機中可能線程的一個子集。
一般地,為實現本發(fā)明的實施例而執(zhí)行的例程,不論是實現為一個操作系統(tǒng)的一部分還是實現為一個具體應用、組件、程序、對象、模塊或指令序列,或者甚至是它們的子集,在這里都被稱作“計算機程序代碼”,或簡單地稱作“程序代碼”。程序代碼通常包含一個或多個指令,它們在各個時間駐留在一個計算機中的各個存儲器和存儲設備中,而且當由計算機中的一個或多個處理器讀取和執(zhí)行時,這些指令使計算機進行各種必要的步驟,以執(zhí)行體現本發(fā)明各方面的步驟或單元。再有,盡管本發(fā)明已經和將要在全功能計算機和計算機系統(tǒng)的情境內被描述,但本領域技術人員將會理解,本發(fā)明的各種實施例能作為程序產品以多種形式分發(fā),而且不管實際用于進行這種分發(fā)的信號承載介質的特定類型是什么,本發(fā)明都同樣適用。信號承載介質的實例包括但不限于易失性和非易失性存儲設備、軟盤和其他可卸盤、硬盤驅動盤、磁帶、光盤(例如CD-ROM、DVD等)等可記錄型介質以及數字和模擬通信鏈路等傳輸型介質。
再有,下文描述的各種程序代碼可根據在本發(fā)明的特定實施例中該程序代碼在其中實現的應用或軟件組件加以標識。然而,應該理解,所遵循的任何特定的程序命名都只是為了方便而使用的,因此本發(fā)明不應被局限于只是應用于由這種命名所標識和/或隱含的任何特定應用。再有,由于通??捎袩o窮多的方式把計算機程序組織成例程、過程、方法、模塊、對象等,而且有各種方式在典型計算機內駐留的各種軟件層(操作系統(tǒng)、庫、API應用、小應用程序等)當中分配程序功能,所以應該理解,本發(fā)明不限于這里描述的程序功能的特定組織和分配方式。
本領域技術人員將會理解,圖1和圖2所示環(huán)境示例不是要限制本發(fā)明。相反,本領域技術人員將會理解,可以使用其他替代硬件和/或軟件環(huán)境而不脫離本發(fā)明的范圍。
現在轉向本發(fā)明的具體實施例,圖3顯示一個激活線程例程示例50,該例程可以由圖2的線程調度程序40響應于一激活(例如創(chuàng)建或重新激活)線程請求而執(zhí)行。例程50在塊52開始,在那里確定與該線程關聯的線程類型。如前文指出的那樣,很多線程特征和屬性可用于按類型區(qū)分線程。例如,下文討論的例子集中在由父應用或邏輯子系統(tǒng)定義的線程類型,于是為一特定應用或邏輯子系統(tǒng)而啟動的所有線程將共用相同的類型。一般而言,對于線程的任何特征或屬性,如果據此而來的一類線程被分配共同的資源組而不是不同的資源組,會產生較好的性能,則該特征或屬性可被用于對線程進行根據本發(fā)明的分類。
一旦確定了線程類型,接下來塊54確定所確定的線程類型是否已被分配了一組資源。首先,假定尚未有資源分配給那個確定的線程類型,則塊54將把控制交給塊56,以把一個物理子系統(tǒng)上的一組資源指定給所確定的線程類型,例如通過對稱指定被本地化到單個或已知一組物理子系統(tǒng)的最可得到的一組資源。例如,當不同的資源組與不同的物理子系統(tǒng)關聯時,塊56可把一最可得到的物理子系統(tǒng)的諸資源指定給所確定的線程類型。再有,如果分配單一物理子系統(tǒng)上的資源是不可能的或不現實的,則該線程類型能被透明地分成多個子類型,以使一個類型與多個物理子系統(tǒng)上的不同組資源關聯。
一旦資源已被分配給該線程類型,接下來塊58把要激活的線程指定到已經為所確定的線程類型分配的那些資源。然后該線程被以傳統(tǒng)方式激活,于是例程50完成。
回到塊54,如果已經為所確定的線程類型分配了資源,則塊56可被越過,控制可直接傳給塊58,以把這新線程指定到先前為那個線程類型分配的資源。在另一種作法中,如圖3所示,塊54可把控制傳給塊60,以動態(tài)確定該線程類型是否需要附加資源。例如,如果與一特定線程類型關聯的資源已被完全利用,則可能希望把控制傳給塊56,以便向該線程分配附加資源(通常,如果可能,則使用放置在同一物理子系統(tǒng)中的資源)。否則,控制可從塊60傳到塊58。然而,在另一些實施例中,可能不支持附加資源的動態(tài)分配。
使用圖3中的例程50,可以看到對一線程類型的資源分配與激活這樣一個線程相聯系,該線程具有的類型先前尚未被分配資源。然而,作為圖3的線程激活例程的替代作法,可能希望在與線程激活分開的一個單獨操作中對給定線程類型預先分配計算機資源。例如,在eServer iSeries計算機中,當用戶作業(yè)被啟動時,通常這些用戶作業(yè)要被指定到一個物理子系統(tǒng)內的存儲器池。然而,當邏輯子系統(tǒng)被初始化或被啟動時,存儲器池通常被指定到這些邏輯子系統(tǒng)。所以,在一個計算機中可以得到多組存儲器和處理器的一個實施例中(例如當諸物理子系統(tǒng)被定義在多個MCM上時),可能希望在一個邏輯子系統(tǒng)被初始化或被啟動時,只要可能,便試圖把一特定存儲器池的全部存儲器分配在單個MCM或物理子系統(tǒng)上。再有,如果一個存儲器池太大,則可定義諸子存儲器池并使其位于各單個MCM上,但通常是以對用戶透明的方式進行??梢灶A見,根據本發(fā)明,一個線程調度程序可被配置成使在一個關聯的子系統(tǒng)或存儲器池中運行的作業(yè)高度親合那些與該子系統(tǒng)或存儲器池相關聯的處理器。
例如,圖4和圖5顯示另一個實施例,其中向線程類型分配資源是隨著一個父應用或邏輯子系統(tǒng)的啟動進行的。如圖4中所示,在這一實施例中的激活線程例程70可通過在塊72中確定線程類型來執(zhí)行,這類似于圖3的塊52中進行的過程。然而,一旦線程類型被確定,便認為資源已分配給所確定的類型。這樣,控制可直接傳到塊74以把這新的線程指定到已分配給那個線程類型的資源。然后例程70便完成了。還應該理解,在這一不同的實施例中,如果希望的話,也可檢驗是否需要附加的資源。
如圖5中所示,每當收到一個啟動應用或邏輯子系統(tǒng)的請求時,便可執(zhí)行啟動應用/邏輯子系統(tǒng)例程80。例程80在塊82開始,在那里創(chuàng)建一個與正啟動的該應用或邏輯子系統(tǒng)關聯的線程類型。接下來,塊84為這新創(chuàng)建的線程類型分配一個物理子系統(tǒng)上的資源,例如使用對稱指定,而且通常使用位于一單個物理子系統(tǒng)中的資源。如前文指出的那樣,如果分配單一物理子系統(tǒng)上的資源是不可能的或不現實的,則該線程類型能被透明地分成多個子類型,以使一個類型與多個物理子系統(tǒng)上的不同組資源關聯。
接下來,塊86啟動所請求的應用或邏輯子系統(tǒng),激活所希望的任何線程,于是例程80完成??梢岳斫?,對于在塊86中激活的任何線程,通常例程70將被調用,以便激活那個線程,如上文中結合圖4描述的那樣。
下面結合圖6A-6D描述實現本發(fā)明的一種方式的實例。假定計算機有兩個物理子系統(tǒng),例如處理器卡或MCM,其中每個包含多個處理器和一定容量的存儲器。每個物理子系統(tǒng)的存儲器可由所有處理器訪問,但當從與發(fā)請求的處理器相同的物理子系統(tǒng)獲取信息時,對存儲器的訪問最快。結果,如果每個處理器的絕大多數存儲器訪問都能被本地化,那會是有好處的。在這種情況下,資源組是具有相關聯的處理器、高速緩存以及存儲器的卡。在圖6A中,這兩個物理子系統(tǒng)示為PS A和PS B,每個物理子系統(tǒng)的資源組由處理器(P)、高速緩存(C)以及存儲器(M)資源表示。
現在轉到圖6B,假定一個邏輯子系統(tǒng)被啟動以支持第一個應收帳款應用,其將有50個線程運行。因為根據本發(fā)明全部50個線程被“分類”為相似的,這些線程可全部被指定到第一個物理子系統(tǒng)PS A。如圖6B中加到PS A中的資源上的陰影所代表的那樣,通常在該物理子系統(tǒng)中的所有處理器和高速緩存都可由這個應收帳款應用中的諸線程使用。再有,通常一個代表該物理子系統(tǒng)中可用存儲器子集的存儲器池也可供這些線程使用。
然而,應該理解,在一些實施例中,在這個應收帳款應用中的線程可能不總是只被指定到第一個物理子系統(tǒng)。特別是,應該理解,可能存在這樣一些情況,使得希望把一個線程或應用所利用的資源擴展到它被指定到的資源之外,例如,如果這個應收帳款應用是在該系統(tǒng)上執(zhí)行的唯一應用的話。線程和它們的資源之間的“親合”概念往往要求指定規(guī)則不總是一成不變的,而是可以隨時間根據具體場合的要求而改變。
現在轉到圖6C,假定在另一個邏輯子系統(tǒng)中啟動了第二個應用,這是一個存貨控制應用。為了這一例子的目的,在這一應用中的線程的“類型”被認為不同于與應收帳款應用相關聯的線程的類型(由于它們駐留在一單獨的邏輯子系統(tǒng)這一情況)。這樣,可使用對稱指定把這些線程指定到最少使用的一組資源(在這一情況中是第二個物理子系統(tǒng)PS B),造成對處理器和高速緩存資源以及存儲器池的分配,如圖6C中的附加陰影所示。
接下來,轉到圖6D,假定第三個應用被啟動,這是一個顧客信息應用,與這一應用的類型關聯的線程將被指定到任何最少活動的處理器/存儲器組。為了這個例子的目的,假定第二個物理子系統(tǒng)是最少活動的。如圖6D中的附加陰影所示,處理器和高速緩存資源被分配給與存貨控制和顧客信息兩個應用親合的線程類型使用。然而,通常為每個線程類型保持駐留在同一物理子系統(tǒng)中的單獨的存儲器池。
應該指出,盡管在全局的意義上資源可能沒有被均勻地使用,但單個線程將趨向于即使在利用程度較高的資源上也能更有效地操作,因為它們將能有效地訪問正由它們的線程“類型”處理的數據。在一天結束時,應收帳款應用的活動顯著減少,而工資單應用被啟動,工資單“類型”將透明地、自動地指定到最可得到的資源,這可能是先前被應收帳款應用頻繁地使用過的資源。然而,當需要大量額外的應收帳款工作,因而在啟動工資單應用之前該應用的活動沒有下降時,自動指定到可能選擇其他處理器/存儲器資源組,而無需任何操作員或系統(tǒng)管理員干預。
接下來,圖7顯示一個與結合圖6A-6D討論的例子相似的例子。然而,在圖7的例子中,第一個線程類型被分配來自兩個物理子系統(tǒng)的資源,而第二個線程類型被分配只來自一個物理子系統(tǒng)的資源。例如,可能是這樣一種情況一個應收帳款應用需要的資源多于單個物理子系統(tǒng)所能提供的資源,而存貨控制應用有較低的資源需求。將會理解,盡管應收帳款線程類型被分配來自多個物理子系統(tǒng)的資源,但那個類型的各單個線程將被透明地分成“子類型”,這些子類型將被指定到只來自一個物理子系統(tǒng)的資源,從而趨向于在逐個線程的基礎上維持資源本地性??筛鶕付ńo同一基礎類型的各個物理子系統(tǒng)的總體可用性,把該基礎類型的新線程指定到一個特定的子類型。這一可用性可基于不同的因子,包括例如線程計數、處理器利用程度和/或存儲器利用程度。
利用所公開的內容,對本領域技術人員而言,其他修改將是顯然的。所以,本發(fā)明取決于所附權利要求。
權利要求
1.一種在包括多個不同物理子系統(tǒng)的多線程計算機中動態(tài)分配計算機資源的方法,該方法包括(a)對于多個線程類型當中的每個線程類型,使物理上位于該多線程計算機中一個共同的物理子系統(tǒng)內的一組計算機資源與這一線程類型相關聯;以及(b)響應激活一個線程的請求,把該線程指定到與該線程的線程類型相關聯的那組計算機資源。
2.權利要求1的方法,其中當還沒有任何計算機資源與這多個線程類型中的第一個線程類型關聯時,使這多個線程類型中的第一個線程類型與該組計算機資源關聯是響應對一個具有該第一個線程類型的線程的激活請求而進行的。
3.權利要求1的方法,其中使這多個線程類型中的第一個線程類型與該組計算機資源關聯是在接收對一個具有這第一個線程類型的線程的激活請求之前進行的。
4.權利要求3的方法,其中使這多個線程類型中的第一個線程類型與該組計算機資源關聯是響應為這第一個線程類型預先分配資源的請求而進行的。
5.權利要求3的方法,其中使這多個線程類型中的第一個線程類型與該組計算機資源關聯是響應在該多線程計算機中啟動一個邏輯子系統(tǒng)的請求而進行的。
6.權利要求1的方法,其中多個線程類型是根據從這樣一組特征中選出的一特征來區(qū)分的,這組特征包括運行優(yōu)先級、對緩沖區(qū)的指定、用戶標識、用戶簡檔、存儲器子系統(tǒng)、父任務、父線程、父作業(yè)、父應用、父邏輯子系統(tǒng)、用戶授權以及它們的組合。
7.權利要求1的方法,其中每個物理子系統(tǒng)包括一個存儲器和至少一個處理器。
8.權利要求7的方法,其中每個物理子系統(tǒng)包括多個處理器,其中至少一部分存儲器由這多個處理器共享。
9.權利要求7的方法,其中每個物理子系統(tǒng)還包括一個高速緩存。
10.權利要求7的方法,其中每個物理子系統(tǒng)包括一個唯一的多芯片模塊(MCM)。
11.權利要求1的方法,其中所述多個線程類型中的第一個線程類型與物理上位于所述多個物理子系統(tǒng)當中的第一個物理子系統(tǒng)內的第一組計算機資源關聯,該方法進一步包括(a)使物理上位于該多線程計算機中不同于所述第一個物理子系統(tǒng)的一個物理子系統(tǒng)內的第二組計算機資源與所述第一個線程類型關聯;以及(b)響應激活該第一個線程類型的一個線程的請求,把這個線程指定到與該第一個線程類型關聯的所述第一組和所述第二組計算機資源之一。
12.一種在包括多個不同物理子系統(tǒng)的多線程計算機中動態(tài)分配計算機資源的方法,該方法包括(a)對于多個線程類型當中的第一個線程類型,使物理上分別位于該多線程計算機中第一個和第二個物理子系統(tǒng)內的第一組和第二組計算機資源與這第一個線程類型相關聯;(b)響應激活該第一個線程類型的第一個線程的請求,把這第一個線程指定到所述第一組計算機資源,使得在該第一個線程執(zhí)行過程中該第一個線程利用該第一組計算機資源中的資源;以及(c)響應激活該第一個線程類型的第二個線程的請求,把這第二個線程指定到所述第二組計算機資源,使得在該第二個線程執(zhí)行過程中該第二個線程利用該第二組計算機資源中的資源。
13.一種裝置,包括(a)一個多線程計算機,其包括多個不同的物理子系統(tǒng);以及(b)駐留在該多線程計算機上的程序代碼,其被配置成對于多個線程類型當中的每個線程類型,使物理上位于該多線程計算機中的一個共同物理子系統(tǒng)內的一組計算機資源與這一線程類型相關聯;以及響應激活一個線程的請求,把該線程指定到與該線程的線程類型相關聯的那組計算機資源。
14.權利要求13的裝置,其中該程序代碼被配置成當還沒有任何計算機資源與這多個線程類型中的第一個線程類型關聯時,響應對一個具有該第一個線程類型的線程的激活請求使這多個線程類型中的該第一個線程類型與該組計算機資源相關聯。
15.權利要求13的裝置,其中該程序代碼被配置成在接收對一個具有這多個線程類型中第一個線程類型的線程的激活請求之前,使該第一個線程類型與該組計算機資源相關聯。
16.權利要求15的裝置,其中該程序代碼被配置成響應為這多個線程類型中第一個線程類型預先分配資源的請求,使該第一個線程類型與該組計算機資源相關聯。
17.權利要求15的裝置,其中該程序代碼被配置成響應在該多線程計算機中啟動一個邏輯子系統(tǒng)的請求,使這多個線程類型中的第一個線程類型與該組計算機資源相關聯。
18.權利要求13的裝置,其中多個線程類型是根據從這樣一組特征中選出的一特征來區(qū)分的,該組特征包括運行優(yōu)先級、對緩沖區(qū)的指定、用戶標識、用戶簡檔、存儲器子系統(tǒng)、父任務、父線程、父作業(yè)、父應用、父邏輯子系統(tǒng)、用戶授權以及它們的組合。
19.權利要求13的裝置,其中每個物理子系統(tǒng)包括一個存儲器和至少一個處理器。
20.權利要求19的裝置,其中每個物理子系統(tǒng)包括多個處理器,其中至少一部分存儲器由這多個處理器共享。
21.權利要求19的裝置,其中每個物理子系統(tǒng)還包括一個高速緩存。
22.權利要求19的裝置,其中每個物理子系統(tǒng)包括一個唯一的多芯片模塊(MCM)。
23.權利要求13的裝置,其中所述多個線程類型中的第一個線程類型與物理上位于所述多個物理子系統(tǒng)當中的第一個物理子系統(tǒng)內的第一組計算機資源關聯,該程序代碼進一步被配置成使物理上位于該多線程計算機中不同于所述第一個物理子系統(tǒng)的一個物理子系統(tǒng)內的第二組計算機資源與該第一個線程類型關聯;以及響應激活該第一個線程類型的一個線程的請求,把這個線程指定到與該第一個線程類型關聯的該第一組和該第二組計算機資源之一。
24.一個程序產品,其包含(a)駐留在包括多個不同物理子系統(tǒng)的一類多線程計算機上的程序代碼,該程序代碼被配置成對于多個線程類型當中的每個線程類型,使物理上位于該多線程計算機中一個共同物理子系統(tǒng)內的一組計算機資源與這一線程類型相關聯;以及響應激活一個線程的請求,把該線程指定到與該線程的線程類型相關聯的那組計算機資源;以及(b)承載該程序代碼的信號承載介質。
25.權利要求24的程序產品,其中所述信號承載介質包括傳輸介質和可記錄介質二者當中的至少一個。
全文摘要
一種裝置、程序代碼和方法,根據與線程關聯的特定“類型”把這些線程動態(tài)地指定到包括多個物理子系統(tǒng)的多線程計算機中的計算機資源。具體地說,按線程類型分配駐留在計算機的同一物理子系統(tǒng)內的資源,從而那些特定線程類型的新建線程和/或再激活線程動態(tài)地被指定到分配給它們各自線程類型的資源。這樣,共享同一類型的那些線程通常被指定到駐留在計算機的同一物理子系統(tǒng)內的計算機資源,這往往減少駐留在一個計算機中的多個物理子系統(tǒng)之間的交叉通信量,從而改善系統(tǒng)總體性能。
文檔編號G06F15/177GK1517872SQ20041000057
公開日2004年8月4日 申請日期2004年1月14日 優(yōu)先權日2003年1月16日
發(fā)明者P·J·海爾曼, K·R·赫普勒, H·J·梅, K·C·沃森, P J 海爾曼, 梅, 沃森, 赫普勒 申請人:國際商業(yè)機器公司