国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      減少遠(yuǎn)程存儲(chǔ)器對(duì)多節(jié)點(diǎn)計(jì)算機(jī)中共享數(shù)據(jù)的訪問(wèn)的機(jī)構(gòu)的制作方法

      文檔序號(hào):6538265閱讀:149來(lái)源:國(guó)知局
      專利名稱:減少遠(yuǎn)程存儲(chǔ)器對(duì)多節(jié)點(diǎn)計(jì)算機(jī)中共享數(shù)據(jù)的訪問(wèn)的機(jī)構(gòu)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及操作系統(tǒng)中的作業(yè)/線程處理,具體涉及當(dāng)訪問(wèn)共享數(shù)據(jù)時(shí)如何組織作業(yè)和線程以最佳地利用存儲(chǔ)器資源。
      背景技術(shù)
      計(jì)算機(jī)系統(tǒng)廣泛地用于存儲(chǔ)和管理數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器中,并且由在計(jì)算機(jī)系統(tǒng)的處理器上執(zhí)行的計(jì)算機(jī)系統(tǒng)程序管理。如所公知,處理器經(jīng)常被當(dāng)作計(jì)算機(jī)系統(tǒng)的“頭腦”,因?yàn)樗窃谟?jì)算機(jī)系統(tǒng)中執(zhí)行計(jì)算機(jī)系統(tǒng)的程序的組件,使得計(jì)算機(jī)系統(tǒng)可以進(jìn)行實(shí)際的工作。存儲(chǔ)器用于保存正在執(zhí)行的計(jì)算機(jī)程序,并且用于保存正在由執(zhí)行計(jì)算機(jī)程序的處理器訪問(wèn)的數(shù)據(jù)。
      為了具有競(jìng)爭(zhēng)性,計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)者不斷努力來(lái)使得計(jì)算機(jī)系統(tǒng)更強(qiáng)大,同時(shí)保持或降低計(jì)算機(jī)系統(tǒng)的大小。一種普通手段是通過(guò)提高所使用的處理器的數(shù)量來(lái)提高計(jì)算機(jī)系統(tǒng)的整個(gè)處理能力。為了獲得制造效率,處理器和存儲(chǔ)器經(jīng)常被封裝在一起以形成所謂的節(jié)點(diǎn),計(jì)算機(jī)系統(tǒng)包括一個(gè)或多個(gè)這樣的節(jié)點(diǎn)。在這些多節(jié)點(diǎn)計(jì)算機(jī)系統(tǒng)中,任何處理器可以訪問(wèn)在任何節(jié)點(diǎn)上的存儲(chǔ)器,但是處理器一般可以比它可以訪問(wèn)在任何其他節(jié)點(diǎn)上的存儲(chǔ)器(遠(yuǎn)程訪問(wèn))更有效地訪問(wèn)在其本身節(jié)點(diǎn)上的存儲(chǔ)器(本地訪問(wèn))。
      計(jì)算機(jī)程序包括由計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行的一系列指令。通過(guò)執(zhí)行這些指令,就說(shuō)處理器執(zhí)行計(jì)算機(jī)程序。操作系統(tǒng)(主要負(fù)責(zé)操作計(jì)算機(jī)系統(tǒng)以獲得其他程序的益處的程序)通過(guò)使用作業(yè)(有時(shí)稱為任務(wù)或進(jìn)程)控制這些程序的執(zhí)行。多數(shù)處理器僅僅可以一次執(zhí)行一個(gè)指令流,但是因?yàn)樗鼈儾僮鞯煤芸欤鼈兛雌饋?lái)同時(shí)運(yùn)行許多作業(yè)并且服務(wù)許多用戶。所述計(jì)算機(jī)操作系統(tǒng)在運(yùn)行時(shí)向每個(gè)作業(yè)提供一個(gè)“時(shí)機(jī)(turn)”,然后要求所述作業(yè)在另一個(gè)作業(yè)獲得時(shí)機(jī)的同時(shí)等待。在作業(yè)在進(jìn)行(例如訪問(wèn)輔助存儲(chǔ)器)之前需要等待某事發(fā)生或可以獲得多個(gè)處理器的情況下,作業(yè)可以建立線程(有時(shí)稱為子進(jìn)程或子任務(wù))來(lái)異步地繼續(xù)或加速處理。還沒有建立任何線程的作業(yè)本身可以被當(dāng)作具有單個(gè)線程。因此,可以說(shuō)作業(yè)由一個(gè)或多個(gè)線程組成。
      從節(jié)點(diǎn)的角度來(lái)看,操作系統(tǒng)可以分配線程以便以任意方式來(lái)執(zhí)行。例如,可以選擇一個(gè)作業(yè)的線程來(lái)在給定的節(jié)點(diǎn)上執(zhí)行,同時(shí)可以選擇另一個(gè)作業(yè)的線程來(lái)在不同的節(jié)點(diǎn)上執(zhí)行。類似地,來(lái)自同一作業(yè)的線程可以在不同節(jié)點(diǎn)上執(zhí)行,并且也可以選擇被選擇來(lái)在給定節(jié)點(diǎn)上執(zhí)行的線程在終止之前在一個(gè)或多個(gè)其他節(jié)點(diǎn)上執(zhí)行。雖然這種靈活性在某些方面是有益的,但是從數(shù)據(jù)訪問(wèn)角度來(lái)看是有問(wèn)題的。如上所述,節(jié)點(diǎn)由處理器和存儲(chǔ)器組成,并且處理器可以比在另一個(gè)節(jié)點(diǎn)上更有效地訪問(wèn)在其本身節(jié)點(diǎn)上的存儲(chǔ)器。因此,為了有效地執(zhí)行,操作系統(tǒng)必須保證每個(gè)線程訪問(wèn)在它正在其上執(zhí)行的同一節(jié)點(diǎn)上的存儲(chǔ)器中的其數(shù)據(jù)。
      操作系統(tǒng)解決這個(gè)問(wèn)題的一種方式是通過(guò)將每個(gè)線程與一個(gè)節(jié)點(diǎn)相關(guān)聯(lián),所述線程對(duì)所述節(jié)點(diǎn)具有執(zhí)行和訪問(wèn)數(shù)據(jù)的偏好。然后,當(dāng)在執(zhí)行給定的線程的時(shí)間,操作系統(tǒng)只要可能就選擇在其偏好的節(jié)點(diǎn)上的處理器。類似地,當(dāng)數(shù)據(jù)需要以線程的名義置于存儲(chǔ)器中的時(shí)候,只要可能就選擇在其偏好節(jié)點(diǎn)上的存儲(chǔ)器。這種手段一般有益于最小化遠(yuǎn)程存儲(chǔ)器訪問(wèn),只要由執(zhí)行的線程進(jìn)行的工作在計(jì)算機(jī)系統(tǒng)的各節(jié)點(diǎn)間得以平衡。
      具有一個(gè)或多個(gè)節(jié)點(diǎn)的計(jì)算機(jī)系統(tǒng)也可以被劃分為兩個(gè)或多個(gè)邏輯分離的系統(tǒng)。一個(gè)邏輯分區(qū)可以被分配到處理器和存儲(chǔ)器而與它們所屬的節(jié)點(diǎn)無(wú)關(guān)。而且,由于配置改變或容量升級(jí)或降級(jí),處理器和/或存儲(chǔ)器可以動(dòng)態(tài)地添加到所述分區(qū)和/或計(jì)算機(jī)系統(tǒng)或從所述分區(qū)和/或計(jì)算機(jī)系統(tǒng)中去除。與在計(jì)算機(jī)系統(tǒng)內(nèi)本地對(duì)遠(yuǎn)程存儲(chǔ)器訪問(wèn)有關(guān)的效率問(wèn)題也適用于每個(gè)邏輯分區(qū)內(nèi)。在本說(shuō)明書中,術(shù)語(yǔ)系統(tǒng)用于指示整個(gè)非分區(qū)的計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)系統(tǒng)的邏輯分區(qū)。
      雖然將線程與偏好節(jié)點(diǎn)相關(guān)聯(lián)的現(xiàn)有技術(shù)有益于最小化遠(yuǎn)程存儲(chǔ)器訪問(wèn),但是它不處理對(duì)共享數(shù)據(jù)的存儲(chǔ)器訪問(wèn)的頻發(fā)問(wèn)題。共享數(shù)據(jù)訪問(wèn)是這樣的,其中來(lái)自相同或不同作業(yè)的不同的線程需要訪問(wèn)同一信息。數(shù)據(jù)將在一些節(jié)點(diǎn)上的存儲(chǔ)器中(通常是與首先引用它的線程相關(guān)聯(lián)的節(jié)點(diǎn)),但是除非引用它的所有線程與同一節(jié)點(diǎn)相關(guān)聯(lián),與其他節(jié)點(diǎn)相關(guān)聯(lián)的那些線程將不太有效地訪問(wèn)它。共享的數(shù)據(jù)訪問(wèn)是很普通的,使得容易看到對(duì)于共享數(shù)據(jù)的低效的多節(jié)點(diǎn)存儲(chǔ)器訪問(wèn)是如何嚴(yán)重的問(wèn)題。
      不使用用于最小化對(duì)于共享數(shù)據(jù)的遠(yuǎn)程存儲(chǔ)器訪問(wèn)的機(jī)構(gòu),計(jì)算機(jī)系統(tǒng)性能將繼續(xù)缺少由多節(jié)點(diǎn)系統(tǒng)提供的可能承諾。

      發(fā)明內(nèi)容
      本發(fā)明涉及一種裝置、方法和程序產(chǎn)品,用于識(shí)別和分組具有相互依賴的數(shù)據(jù)訪問(wèn)需求的線程。
      本發(fā)明的優(yōu)選實(shí)施例使用兩種不同的結(jié)構(gòu)來(lái)實(shí)現(xiàn)這種分組。第一種是存儲(chǔ)器親和組(affinity),它使得多個(gè)線程能夠與同一節(jié)點(diǎn)相關(guān)聯(lián)而不預(yù)先知道哪些線程將被涉及在所述關(guān)聯(lián)中,并且沒有對(duì)于它們相關(guān)聯(lián)的特定節(jié)點(diǎn)的任何控制。第二種是邏輯節(jié)點(diǎn),它使得多個(gè)線程能夠與同一特定節(jié)點(diǎn)相關(guān)聯(lián)而不預(yù)先知道哪些線程將被涉及在所述關(guān)聯(lián)中。雖然邏輯節(jié)點(diǎn)不明顯地識(shí)別包括所述系統(tǒng)的基礎(chǔ)物理節(jié)點(diǎn),但是它們提供了將特定線程與同一節(jié)點(diǎn)相關(guān)聯(lián)和將其他線程與其他節(jié)點(diǎn)相關(guān)聯(lián)的手段。


      圖1A是示出能夠支持本發(fā)明的優(yōu)選實(shí)施例的計(jì)算環(huán)境的方框圖。
      圖1B是示出能夠支持本發(fā)明的優(yōu)選實(shí)施例的替代計(jì)算環(huán)境的方框圖。
      圖2是示出本發(fā)明的優(yōu)選實(shí)施例的核心服務(wù)(Kernel Service)的擴(kuò)展視圖的方框圖。
      圖3A和3B是示出用于執(zhí)行優(yōu)選實(shí)施例的線程建立機(jī)構(gòu)的突出處理的步驟的流程圖。
      圖4是示出用于將線程與親和組去關(guān)聯(lián)的、在優(yōu)選實(shí)施例的線程建立機(jī)構(gòu)內(nèi)的突出步驟的流程圖。
      圖5是示出用于使得其他系統(tǒng)組件可以獲得存儲(chǔ)器親和組信息的、在優(yōu)選實(shí)施例的線程建立機(jī)構(gòu)內(nèi)的突出步驟的流程圖。
      圖6是示出用于初始化在優(yōu)選實(shí)施例中使用的各種權(quán)重以實(shí)現(xiàn)核心組件平衡通告(KCBN)的、在初始程序負(fù)荷(IPL)內(nèi)的突出步驟的流程圖。
      圖7-11、14和15是示出用于響應(yīng)于在系統(tǒng)內(nèi)的配置改變而調(diào)整各種KCBN權(quán)重的、在優(yōu)選實(shí)施例中使用的突出步驟的流程圖。
      圖11-14和16-25是示出用于執(zhí)行工作重新分配的、在優(yōu)選實(shí)施例的監(jiān)視處理器和節(jié)點(diǎn)平衡器中使用的突出步驟的流程圖。
      圖26-28是示出與優(yōu)選實(shí)施例的線程建立機(jī)構(gòu)如何執(zhí)行本地節(jié)點(diǎn)分配相關(guān)聯(lián)的突出步驟的流程圖。
      圖29A-31示出了在本發(fā)明的優(yōu)選實(shí)施例中使用的數(shù)據(jù)結(jié)構(gòu)。
      具體實(shí)施例方式
      現(xiàn)在轉(zhuǎn)向附圖,圖1A示出了在本發(fā)明的優(yōu)選實(shí)施例的計(jì)算裝置中使用的一些操作組件。計(jì)算機(jī)裝置100是增強(qiáng)的IBM iSeries計(jì)算機(jī)系統(tǒng),不過(guò)也可以使用其他計(jì)算機(jī)。所描述的組件包括處理節(jié)點(diǎn)130、網(wǎng)絡(luò)接口125、用戶界面150和海量存儲(chǔ)器155。優(yōu)選實(shí)施例的計(jì)算機(jī)裝置100包括四個(gè)處理節(jié)點(diǎn),不過(guò)可以使用更少或更多的節(jié)點(diǎn)。網(wǎng)絡(luò)接口125用于與其他計(jì)算機(jī)系統(tǒng)通信。用戶界面150用于接受命令和將信息轉(zhuǎn)送到計(jì)算機(jī)系統(tǒng)100的一個(gè)或多個(gè)用戶。
      也示出了節(jié)點(diǎn)130之一的分解圖(即節(jié)點(diǎn)131)。節(jié)點(diǎn)131包括處理器132和存儲(chǔ)器134。在優(yōu)選實(shí)施例中,每個(gè)節(jié)點(diǎn)可以包括多達(dá)8個(gè)處理器132,不過(guò)包括更多或更少處理器的其他配置也是可能的。處理器132用于執(zhí)行在存儲(chǔ)器134中存儲(chǔ)的線程,不過(guò)應(yīng)當(dāng)明白,在某些時(shí)間,這些線程可以部分地或全部駐留在海量存儲(chǔ)器155中。處理器可以訪問(wèn)在任何節(jié)點(diǎn)上的存儲(chǔ)器,雖然它可以更有效地訪問(wèn)在其本身節(jié)點(diǎn)上的存儲(chǔ)器。
      圖1B示出了優(yōu)選實(shí)施例的計(jì)算環(huán)境的更詳細(xì)的視圖。如圖所示,優(yōu)選實(shí)施例能夠在邏輯分區(qū)的計(jì)算機(jī)系統(tǒng)上操作。在這種情況下,核心服務(wù)137的一個(gè)實(shí)例被配置為駐留在每個(gè)分區(qū)中(在圖1B上被示出為系統(tǒng)1-3)。優(yōu)選實(shí)施例的機(jī)構(gòu)將每個(gè)分區(qū)看作完整的系統(tǒng)。因此,在此使用的術(shù)語(yǔ)系統(tǒng)應(yīng)當(dāng)被解釋為指示非分區(qū)的計(jì)算機(jī)裝置或在計(jì)算機(jī)裝置內(nèi)的單個(gè)邏輯分區(qū)。系統(tǒng)可以使用整個(gè)計(jì)算機(jī)裝置的少于全部的節(jié)點(diǎn),就像對(duì)于系統(tǒng)1和2的情況那樣。也可能一個(gè)節(jié)點(diǎn)支持多個(gè)系統(tǒng),這是對(duì)于節(jié)點(diǎn)1和2的情況。優(yōu)選實(shí)施例的許多機(jī)構(gòu)涉及分配和調(diào)整如何在一個(gè)系統(tǒng)的多個(gè)節(jié)點(diǎn)上分布工作(線程)。因此,當(dāng)一個(gè)系統(tǒng)的配置改變時(shí),優(yōu)選實(shí)施例的機(jī)構(gòu)確定是否需要工作分布調(diào)整,如果是肯定的,則執(zhí)行那些調(diào)整。
      每個(gè)系統(tǒng)被示出為包括線程135和操作系統(tǒng)136。核心服務(wù)137被集成到操作系統(tǒng)136中。核心服務(wù)向其他操作系統(tǒng)實(shí)體和其他程序提供操作系統(tǒng)級(jí)服務(wù)。應(yīng)當(dāng)注意,雖然優(yōu)選實(shí)施例提供了重新平衡需要的核心服務(wù)通告,但本發(fā)明不限于核心或操作系統(tǒng)級(jí)服務(wù),也可以被應(yīng)用到能夠利用重新平衡通告優(yōu)點(diǎn)的所有服務(wù)。
      作為最后的預(yù)備事項(xiàng),應(yīng)當(dāng)明白,雖然在此在計(jì)算機(jī)裝置環(huán)境中描述本發(fā)明的實(shí)施例,但是諸如核心服務(wù)137的某些程序機(jī)構(gòu)能夠以程序產(chǎn)品形式被分布。當(dāng)然,可以使用不同類型信號(hào)承載媒體來(lái)分布程序產(chǎn)品,所述信號(hào)承載媒體包括但是不限于可記錄類型媒體(諸如軟盤和CD-ROM),傳輸型媒體(諸如數(shù)字和模擬通信鏈路)。
      圖2是優(yōu)選實(shí)施例的核心服務(wù)137的一些方面的分解圖。如圖所示,核心服務(wù)137包括線程管理器200、節(jié)點(diǎn)管理器220和配置管理器240。線程管理器200還被示出為包括線程建立機(jī)構(gòu)(TCM)205、線程分派機(jī)構(gòu)(TDM)215和線程存儲(chǔ)器管理器(TMM)217。TCM 205在優(yōu)選實(shí)施例用來(lái)建立可執(zhí)行的線程以及必要的線程控制結(jié)構(gòu)。作為建立進(jìn)程的一部分,本地節(jié)點(diǎn)也被TCM 205分配到這些可執(zhí)行的線程。本地節(jié)點(diǎn)分配是重要的,因?yàn)門DM215偏向于盡可能在它們的所分配的本地節(jié)點(diǎn)上執(zhí)行線程,并且TMM偏向于盡可能從它們的本地節(jié)點(diǎn)分配存儲(chǔ)器。這種偏向的含義與整個(gè)系統(tǒng)利用和資源分配相關(guān)。在伴隨附圖26-28的文本中描述了TCM 205的本地節(jié)點(diǎn)分配方面。
      在線程已經(jīng)由TCM 205建立和分配到本地節(jié)點(diǎn)后,它們被TDM 215分派來(lái)執(zhí)行。一般而言,可以在在系統(tǒng)的各種節(jié)點(diǎn)上的多個(gè)處理器中的任何一個(gè)上執(zhí)行線程。TCM 205是在優(yōu)選實(shí)施例內(nèi)的實(shí)體,它負(fù)責(zé)分組線程以便最佳地利用可用的處理器和存儲(chǔ)器資源。在以下圖3A-5的討論中提供了關(guān)于TCM 205的功能和內(nèi)部工作的其他細(xì)節(jié)。
      在附圖2中也示出了節(jié)點(diǎn)管理器220。節(jié)點(diǎn)管理器220——它本身由三個(gè)離散的實(shí)體組成——用于優(yōu)選實(shí)施例中以確定在系統(tǒng)中的各種節(jié)點(diǎn)的相對(duì)工作負(fù)荷。節(jié)點(diǎn)管理器220被另外地用于優(yōu)選實(shí)施例來(lái)識(shí)別和校正在系統(tǒng)內(nèi)的工作負(fù)荷不平衡,并且向其他核心服務(wù)通告節(jié)點(diǎn)工作負(fù)荷的改變,以便這些服務(wù)可以因此而自我調(diào)整。在本專利申請(qǐng)的工作重新分配部分(圖11-14和16-25)中說(shuō)明了不平衡識(shí)別和處理,而在伴隨附圖7-11、14和15的文本中描述了核心組件平衡通告。
      在節(jié)點(diǎn)管理器220內(nèi)示出了分派處理器230、監(jiān)視處理器(WDH)225和節(jié)點(diǎn)平衡器235。這三個(gè)實(shí)體在優(yōu)選實(shí)施例的系統(tǒng)內(nèi)來(lái)作為異步線程工作。本領(lǐng)域內(nèi)技術(shù)人員明白這些線程的異步特性表示對(duì)于原子數(shù)據(jù)訪問(wèn)(atomicdata access)的需要。因此,雖然在此偶爾提及原子性問(wèn)題,但是這個(gè)專利申請(qǐng)不包括在基礎(chǔ)原子性機(jī)構(gòu)的大量處理,所述基礎(chǔ)原子性機(jī)構(gòu)如所述是本領(lǐng)域內(nèi)的技術(shù)人員公知的。如其名稱所示,分派處理器230負(fù)責(zé)處理來(lái)自TDM215的分派請(qǐng)求。因?yàn)榫€程持續(xù)被分派,因此分派處理器230很頻繁地運(yùn)行。關(guān)于這一點(diǎn),其責(zé)任之一是在本地節(jié)點(diǎn)的基礎(chǔ)上累積處理器執(zhí)行周期計(jì)數(shù)。(由分派處理器230使用來(lái)獲得這個(gè)周期信息的精確手段對(duì)于明白優(yōu)選實(shí)施例不重要,因此在此不說(shuō)明它。)被調(diào)度來(lái)每秒執(zhí)行的WDH 225每7秒獲得這些累加的周期。這7秒的間隔在此被稱為當(dāng)前權(quán)重間隔。在獲得所述信息后,WDH 225對(duì)于最后變?yōu)楫?dāng)前權(quán)重的信息執(zhí)行各種計(jì)算。(在后面說(shuō)明在優(yōu)選實(shí)施例內(nèi)的當(dāng)前權(quán)重的使用。)在某些時(shí)間,WDH 225每當(dāng)當(dāng)前權(quán)重間隔期滿時(shí)也負(fù)責(zé)通告節(jié)點(diǎn)平衡器。節(jié)點(diǎn)平衡器235使用這個(gè)通告來(lái)確定是否需要核心組件平衡通告。
      在圖2中也示出了配置管理器240。配置管理器240是優(yōu)選實(shí)施例中的實(shí)體,它以信號(hào)向節(jié)點(diǎn)平衡器235通告配置的改變。節(jié)點(diǎn)平衡器235然后考慮配置的改變,并且采取與工作分布和核心組件平衡通告相關(guān)的適當(dāng)行動(dòng)。配置改變的示例包括增加或減少系統(tǒng)上的處理器或存儲(chǔ)器的數(shù)量。
      根據(jù)存儲(chǔ)器親和性來(lái)分組線程本發(fā)明提供了這樣的優(yōu)點(diǎn)為了允許對(duì)于用于多個(gè)線程的共享數(shù)據(jù)的本地訪問(wèn)而將兩個(gè)或多個(gè)線程分組到一個(gè)存儲(chǔ)器親和組(MAG)中。由此,通過(guò)允許具有相互依賴的數(shù)據(jù)訪問(wèn)需要的線程在同一節(jié)點(diǎn)上執(zhí)行,來(lái)實(shí)現(xiàn)可歸因于本地存儲(chǔ)器訪問(wèn)的性能增益。在優(yōu)選實(shí)施例中,獨(dú)立地或根據(jù)作業(yè)來(lái)在MAG中放置線程。如果根據(jù)作業(yè)來(lái)在MAG內(nèi)放置,則給定作業(yè)的所有線程全部被放置在同一MAG中。但是,本領(lǐng)域內(nèi)技術(shù)人員明白存在替代方式。例如,有可能在兩個(gè)級(jí)上指定MAG參與,所述兩個(gè)級(jí)的一個(gè)指定覆蓋另一個(gè)。
      圖3A-5在此用于描述本發(fā)明的存儲(chǔ)器親和分組方面。在優(yōu)選實(shí)施例中,MAG確定和邏輯節(jié)點(diǎn)分配發(fā)生在一個(gè)執(zhí)行的線程請(qǐng)求建立另一個(gè)線程的時(shí)間。圖3A在此用于描述負(fù)責(zé)與請(qǐng)求的線程的直接交互的TCM 205的一部分。這種交互的結(jié)果最后導(dǎo)致線程建立,如在與圖3B相關(guān)聯(lián)的文本中所述。首先轉(zhuǎn)向圖3A,方框300示出了接收請(qǐng)求以建立線程。接著,在方框302中,TCM205確定線程建立請(qǐng)求是否指定了是否期望參與MAG。在優(yōu)選實(shí)施例中,在TCCM 205訪問(wèn)的永久線程建立屬性(TCA)內(nèi)指定了對(duì)于MAG參與的期望。如果對(duì)于這個(gè)線程期望MAG參與,則TCM 205接著確定TCA是否指定了特定的MAG[方框304]。在優(yōu)選實(shí)施例中,通過(guò)使用MAG標(biāo)識(shí)符(即組ID)來(lái)進(jìn)行這個(gè)指定。如果在TCA內(nèi)指定了組ID,則TCM 205將兌現(xiàn)所述請(qǐng)求,并且簡(jiǎn)單地建立具有所指定的組ID的線程[方框308]。如果TCA還沒有指定的組ID,則它將被分配下一個(gè)可以獲得的組ID(并且其后這是將由TCA使用的組)[306]。
      如果在方框302中TCM 205確定未請(qǐng)求參與MAG,則TCM 205將接著確定在TCA中是否已經(jīng)指定了“邏輯節(jié)點(diǎn)”的使用[方框310]。在優(yōu)選實(shí)施例中,與物理節(jié)點(diǎn)不同的邏輯節(jié)點(diǎn)用于使得請(qǐng)求的線程可以指定所建立的線程被分配到相同或不同的本地節(jié)點(diǎn)。作為線程的實(shí)際本地節(jié)點(diǎn)的物理節(jié)點(diǎn)對(duì)于請(qǐng)求線程被隱藏。這種手段具有優(yōu)點(diǎn)允許對(duì)于請(qǐng)求者的邏輯節(jié)點(diǎn)指定,同時(shí)保留使用具有不同標(biāo)識(shí)符的物理節(jié)點(diǎn)來(lái)兌現(xiàn)請(qǐng)求的靈活性。因此,邏輯節(jié)點(diǎn)的指定具有指定線程的本地節(jié)點(diǎn)的效果。
      如果在方框310中已經(jīng)指定了邏輯節(jié)點(diǎn)的使用,則TCM 205確定TCA是否包括特定邏輯節(jié)點(diǎn)的指定[方框312]。如果是否定的,則TCM 205分配下一個(gè)可以獲得的邏輯節(jié)點(diǎn)ID,并且將其存儲(chǔ)在TCA中[方框314]。最后,TCM 205使用在TCA中指定的邏輯節(jié)點(diǎn)ID或新分配的邏輯節(jié)點(diǎn)ID來(lái)進(jìn)行建立線程[方框316]?,F(xiàn)在返回方框310,如果TCM 205從TCA的查看確定未指定邏輯節(jié)點(diǎn)的使用,則TCM 205將在方框318中確定TCA是否包括參考線程的標(biāo)識(shí)。參考線程與要建立的線程相比較是這樣的其中期望存儲(chǔ)器親和性。在優(yōu)選實(shí)施例中,通過(guò)在TCA中包括線程ID來(lái)實(shí)現(xiàn)對(duì)于參考線程的指定。如果還未指定參考線程ID,則TCM 205建立沒有邏輯節(jié)點(diǎn)或MAGID的線程[方框320]。這將具有允許TCM 205選擇用于所請(qǐng)求的線程的本地節(jié)點(diǎn)的效果。
      如果已經(jīng)指定了參考線程,則TCM 205將接著確定所指定的參考線程是否已經(jīng)與MAG相關(guān)聯(lián)[方框322]。如果是肯定的,則TCM 205將提取所述參考線程的MAG ID[方框324],并且使用所指定的MAG ID來(lái)進(jìn)行建立所述線程[326]。如果在方框322中TCM 205確定所述參考線程還未與MAG相關(guān)聯(lián),則TCM 205確定所述參考線程是否具有被分配給它的邏輯節(jié)點(diǎn)。如果是肯定的,則TCM 205提取參考線程的邏輯節(jié)點(diǎn)[方框330],并且使用指定的邏輯節(jié)點(diǎn)來(lái)建立所述線程[方框332]。如果在方框328中TCM 205確定事實(shí)上還沒有向參考線程分配邏輯節(jié)點(diǎn),則TCM 205將分配下一個(gè)可用的MAG ID[方框334],并且從參考線程提取本地節(jié)點(diǎn)[方框336]。一旦完成了這一點(diǎn),則一個(gè)新的MAG被建立和增加到MAG列表,并且參考線程也被增加到MAG[方框338]。TCM 205然后使用所指定的MAG ID來(lái)建立線程[方框340]。
      圖3B示出了在優(yōu)選實(shí)施例的TCM 205中使用來(lái)實(shí)際執(zhí)行線程建立的步驟。存在到圖3B的邏輯的三個(gè)進(jìn)入點(diǎn)。可以使用MAG ID來(lái)作為輸入[方框354]、使用邏輯節(jié)點(diǎn)ID來(lái)作為輸入[方框352]或不指定MAG ID或邏輯節(jié)點(diǎn)ID來(lái)建立一個(gè)線程[方框350]。
      如果TCM 205通過(guò)方框350進(jìn)入圖3B的邏輯,則TCM 205將進(jìn)行確定用于所述線程的本地節(jié)點(diǎn)[方框356]。如上所述,線程的本地節(jié)點(diǎn)是這樣的節(jié)點(diǎn),在其上,線程只要可能就被分派,并且本地節(jié)點(diǎn)的存儲(chǔ)器在可能時(shí)以線程的名義被分配。在進(jìn)行本地節(jié)點(diǎn)確定中,系統(tǒng)考慮到幾個(gè)方面,包括當(dāng)前和期望的工作負(fù)荷。在與附圖26-28相關(guān)聯(lián)的文本中提供了關(guān)于本地節(jié)點(diǎn)確定的細(xì)節(jié)。TCM 205然后進(jìn)行建立用于所述線程的核心線程結(jié)構(gòu)[方框372]。在優(yōu)選實(shí)施例中,使用核心線程結(jié)構(gòu)來(lái)表示線程。因此,建立核心線程結(jié)構(gòu)與建立線程是同義的。TCM 205接著確定近期建立的線程是否是MAG的成員。在這部分說(shuō)明中的工作假設(shè)是線程建立請(qǐng)求不包括MAG或邏輯節(jié)點(diǎn)ID的指定(參見上面方框350的討論)。因此,確定方框380和384的處理導(dǎo)致為否,這使得TCM 205在方框388終止處理。此處,已經(jīng)建立和向本地節(jié)點(diǎn)分配了所請(qǐng)求的線程。
      如果TCM 205通過(guò)方框352進(jìn)入圖3B的邏輯,則TCM 205將指定的邏輯節(jié)點(diǎn)轉(zhuǎn)換為物理節(jié)點(diǎn),于是,所述物理節(jié)點(diǎn)是所述線程的本地節(jié)點(diǎn)。在優(yōu)選實(shí)施例中,使用一種確定算法來(lái)保持在給定的邏輯節(jié)點(diǎn)和給定的物理節(jié)點(diǎn)之間的一致的關(guān)聯(lián)。但是,應(yīng)當(dāng)注意,可以使用其他映射手段。方框372和380的處理與上述的相同。但是,在這種情況下,已經(jīng)指定了邏輯節(jié)點(diǎn)ID,這使得TCM 205將線程標(biāo)為不可移動(dòng)的[方框386],表示不能改變其本地節(jié)點(diǎn)(參見下面的工作重新分配部分)。這樣做是用于兌現(xiàn)請(qǐng)求線程對(duì)特定的邏輯節(jié)點(diǎn)的指定。
      如果TCM 205通過(guò)方框354來(lái)進(jìn)入圖3B的邏輯,則TCM 205將首先試圖找到與該組ID相關(guān)聯(lián)的MAG[方框360]。在優(yōu)選實(shí)施例中,通過(guò)一個(gè)組對(duì)象來(lái)表示每個(gè)MAG,并且每個(gè)組對(duì)象包括組ID、MAG的本地節(jié)點(diǎn)和成員線程的列表。所述對(duì)象被鏈接在一起來(lái)形成MAG的列表。TCM 205確定通過(guò)遍歷MAG的列表是否找到一個(gè)組ID匹配[方框362]。如果找到匹配[方框362],則TCM 205在方框372建立核心線程結(jié)構(gòu)之前從組對(duì)象提取用于MAG的本地節(jié)點(diǎn)[方框364]。
      現(xiàn)在返回處理方框362,如果在MAG的列表中未找到匹配,則TCM 205需要確定要建立的線程和MAG的本地節(jié)點(diǎn)。TCM 205在方框370進(jìn)行確定這個(gè)線程的本地節(jié)點(diǎn)。(如上所述,在與圖26-28相關(guān)聯(lián)的文本中更詳細(xì)地解釋本地節(jié)點(diǎn)確定)。一旦確定了本地節(jié)點(diǎn),則TCM 205建立新的MAG(即組對(duì)象)并且在MAG中存儲(chǔ)本地節(jié)點(diǎn)和組ID[方框378],并且向所述列表增加組對(duì)象[方框374]。使用被加到所述列表的新MAG,然后建立線程(即核心線程結(jié)構(gòu))[方框372]。
      如上所述,一旦已經(jīng)建立了核心線程結(jié)構(gòu),則TCM 205確定剛剛建立的線程是否是MAG成員。在此,在這個(gè)說(shuō)明部分中,所述線程是MAG的成員。因此,TCM 205在方框382進(jìn)行向MAG加上線程。在優(yōu)選實(shí)施例中,這是通過(guò)向MAG的線程列表增加所述線程來(lái)實(shí)現(xiàn)的。
      圖4示出了在優(yōu)選實(shí)施例中使用來(lái)在線程終止時(shí)處理MAG管理的突出步驟。當(dāng)在優(yōu)選實(shí)施例中線程終止時(shí),如果它是MAG的一個(gè)成員則它具有從所述MAG去除其本身的責(zé)任。因此,如果在方框405終止的線程確定它不是MAG的一部分,則正常線程終止處理簡(jiǎn)單地繼續(xù)[方框417]。如果所述線程在方框405中確定它是MAG的一個(gè)成員,則所述線程從所述MAG的線程列表去除其本身[方框410]。如果終止的線程不是在MAG中的最后線程[方框419],則終止處理再次簡(jiǎn)單地繼續(xù)。但是,如果終止的線程是在MAG中的最后線程[方框419],則在方框421從MAG列表去除所述MAG。然后,所述MAG本身在方框417中正常終止處理繼續(xù)之前在方框423被破壞。
      MAG管理的另一個(gè)方面是在其中MAG的存在非常短暫的環(huán)境(其中MAG進(jìn)出的環(huán)境)中的、關(guān)于MAG的表面信息。圖5示出了在優(yōu)選實(shí)施例中用于實(shí)現(xiàn)這個(gè)任務(wù)的步驟。當(dāng)接收到信息請(qǐng)求[方框500]時(shí),首先試圖定位對(duì)于其尋找信息的MAG[方框505]。如果在MAG列表中未找到相關(guān)聯(lián)的MAG,則在方框535通告請(qǐng)求者,然后正常處理在方框530繼續(xù)。如果找到了MAG,則在方框520提供所請(qǐng)求的信息。處理然后繼續(xù)[方框530]。
      核心組件平衡通告本專利申請(qǐng)的這個(gè)部分與核心組件平衡通告相關(guān)。如上所述,優(yōu)選實(shí)施例的機(jī)構(gòu)操作來(lái)最佳地平衡在系統(tǒng)上的整個(gè)工作負(fù)荷。與平衡相關(guān)聯(lián)是用以向其他核心組件(即服務(wù))通告對(duì)于工作分配的改變以便那些組件可以采取適當(dāng)?shù)牟襟E的需要。為了接收通告,必須向節(jié)點(diǎn)平衡器235注冊(cè)一個(gè)組件。節(jié)點(diǎn)平衡器235具有對(duì)于圖31所示的組件注冊(cè)表的訪問(wèn)。在優(yōu)選實(shí)施例中使用的注冊(cè)表邏輯上顯示未鏈接的列表,并且在所述注冊(cè)表中每個(gè)元素包括組件名稱、組件方法和指向下一個(gè)元素的指針。所述組件方法被建立來(lái)在通告時(shí)由節(jié)點(diǎn)平衡器235調(diào)用。也應(yīng)當(dāng)注意,雖然優(yōu)選實(shí)施例在操作系統(tǒng)服務(wù)中成員的核心服務(wù)上操作,但是本發(fā)明的應(yīng)用不限于核心或操作系統(tǒng)服務(wù),也可應(yīng)用到可以從在系統(tǒng)內(nèi)的工作分配的改變的通告受益的任何類型的組件或服務(wù)。
      系統(tǒng)IPL首先應(yīng)當(dāng)注意,雖然在此在系統(tǒng)IPL部分中引入了幾個(gè)優(yōu)選實(shí)施例概念,但是這些概念中的許多(即,當(dāng)前權(quán)重、過(guò)渡權(quán)重、權(quán)重差門限和起始權(quán)重)的全面解釋直到討論了整個(gè)上下文未被提供。在與圖7-9相關(guān)聯(lián)的文本中討論了當(dāng)前權(quán)重、過(guò)渡權(quán)重和權(quán)重差概念,結(jié)合圖26-28的討論來(lái)討論了起始權(quán)重概念。采用這種手段是因?yàn)榭梢越?jīng)由在后面的段落中提供的上下文來(lái)實(shí)現(xiàn)更好的理解。
      現(xiàn)在參見圖6,每次引導(dǎo)系統(tǒng)時(shí)——這可以在任何時(shí)間發(fā)生——調(diào)用節(jié)點(diǎn)平衡器235。節(jié)點(diǎn)平衡器235將節(jié)點(diǎn)管理器狀態(tài)(見圖29A的2902)設(shè)置為“當(dāng)前權(quán)重”[方框605]并且將所有的存儲(chǔ)區(qū)域初始化為零(見圖29A-31的2904-3100)[方框608]。節(jié)點(diǎn)平衡器235建立一組權(quán)重。這些權(quán)重——它們是在本地節(jié)點(diǎn)基礎(chǔ)上被建立的——在優(yōu)選實(shí)施例中被使用來(lái)管理在系統(tǒng)上的工作分配。被建立的第一權(quán)重是所謂的目標(biāo)權(quán)重。用于每個(gè)節(jié)點(diǎn)的目標(biāo)權(quán)重表示對(duì)于那個(gè)給定節(jié)點(diǎn)的工作的期望份額。優(yōu)選實(shí)施例的機(jī)構(gòu)的目的是與各種目標(biāo)權(quán)重成比例地在整個(gè)系統(tǒng)中分配工作。圖6的方框610引用圖10A,圖10A描述了目標(biāo)權(quán)重計(jì)算。在本專利申請(qǐng)的配置改變部分中詳細(xì)地解釋了圖10A。
      在從圖10A的邏輯返回后,起始和當(dāng)前權(quán)重2930和2906被設(shè)置到目標(biāo)權(quán)重[方框625]。對(duì)于每個(gè)節(jié)點(diǎn),其當(dāng)前和過(guò)渡權(quán)重被設(shè)置為等于在當(dāng)前KCBN集中的目標(biāo)權(quán)重(見圖30的3015)[方框635]。在與圖7-9相關(guān)聯(lián)的文本中詳細(xì)說(shuō)明了過(guò)渡權(quán)重、當(dāng)前權(quán)重和目標(biāo)權(quán)重的互相作用。起始權(quán)重與本地節(jié)點(diǎn)分配相關(guān),在伴隨附圖26-28的文本中描述了本地節(jié)點(diǎn)分配。上述所有處理必須發(fā)生在IPL處理的剩余部分之前[方框640],IPL處理的剩余部分包括通過(guò)操作系統(tǒng)136來(lái)分派線程和啟動(dòng)本地節(jié)點(diǎn)運(yùn)動(dòng)。另外,它可以包括基于目標(biāo)權(quán)重的操作系統(tǒng)/核心資源的節(jié)點(diǎn)分布。IPL處理在方框645結(jié)束。
      配置改變?nèi)缭陔S后的段落中更詳細(xì)所述,通過(guò)在節(jié)點(diǎn)基礎(chǔ)上對(duì)于系統(tǒng)可用的處理器和存儲(chǔ)器來(lái)驅(qū)動(dòng)目標(biāo)權(quán)重。對(duì)于每個(gè)系統(tǒng),在那個(gè)特定系統(tǒng)的建造(bringup)期間建立目標(biāo)權(quán)重。它們不改變,除非/直到在系統(tǒng)中發(fā)生配置改變。請(qǐng)讀者在此假定已經(jīng)發(fā)生了配置改變。這種改變由圖7的方框700表示。所述改變的細(xì)節(jié)對(duì)于優(yōu)選實(shí)施例的說(shuō)明不重要,但是這樣的改變的一個(gè)示例可以是系統(tǒng)的重新配置以利用一個(gè)節(jié)點(diǎn)的兩個(gè)處理器而不是三個(gè)。當(dāng)節(jié)點(diǎn)平衡器235接收到配置改變的通告時(shí)[方框700],節(jié)點(diǎn)平衡器235獲取當(dāng)前權(quán)重的拷貝[方框710]。
      當(dāng)前權(quán)重表示在系統(tǒng)內(nèi)工作的實(shí)際分配。在圖10C和10D上示出了在優(yōu)選實(shí)施例中用于獲得當(dāng)前權(quán)重的機(jī)構(gòu)。在圖10C中采用的第一步驟是提取當(dāng)前權(quán)重標(biāo)識(shí)符(CWID)[方框1048],其后跟隨提取當(dāng)前權(quán)重間隔編號(hào)(CWIN)[方框1049]。當(dāng)前權(quán)重僅僅對(duì)于一個(gè)間隔有效,其后,它們過(guò)期并且必須根據(jù)最近的間隔重新計(jì)算。CWID 2911包括當(dāng)前權(quán)重對(duì)其有效的間隔編號(hào)。如果CWID 2911等于CWIN 2908,則當(dāng)前權(quán)重有效;如果是否定的,則當(dāng)前權(quán)重過(guò)期并且必須重新被計(jì)算。簡(jiǎn)短地參見圖29A,其中示出了與當(dāng)前權(quán)重處理相關(guān)的信息。與CWID 2911和CWIN 2908一起,示出了當(dāng)前權(quán)重調(diào)用計(jì)數(shù)(CWIC)2910和SET0和SET1。每個(gè)集(set)包括分派器承諾百分比累加器(DCPA)和近期執(zhí)行的周期計(jì)數(shù)(RECC)。CWIC 2910用于確定CWI何時(shí)已經(jīng)過(guò)期。DCPA信息與優(yōu)選實(shí)施例的工作重新分配和本地節(jié)點(diǎn)分配方面相關(guān),因此與那個(gè)討論相結(jié)合地被說(shuō)明。在圖29A上也示出了當(dāng)前權(quán)重2906和DCP 2907。在優(yōu)選實(shí)施例的這個(gè)方面中——現(xiàn)在說(shuō)明的KCBN邏輯——使用當(dāng)前權(quán)重2906,而在優(yōu)選實(shí)施例的工作重新分配和本地節(jié)點(diǎn)分配方面中使用DCP 2907。
      現(xiàn)在返回圖10C,在方框1049中提取CWIN 2908后,節(jié)點(diǎn)平衡器235首先確定CWID 2911是否等于CWIN 2908。如果它們相等,則節(jié)點(diǎn)平衡器235進(jìn)行到圖10D的方框1061(在隨后的段落中說(shuō)明這個(gè)處理)。如果它們不相等,則節(jié)點(diǎn)平衡器235然后測(cè)試CWIN 2908以確定它是奇數(shù)還是偶數(shù)[方框1050]。如果是奇數(shù),則從SET1提取RECC[方框1051]和DCPA[方框1054](見圖29A),但是如果CWIN 2908是偶數(shù),則從SET0提取RECC[方框1052]和DCPA[方框1056]。如上所述,分配處理器230很頻繁地運(yùn)行,并且在本地節(jié)點(diǎn)基礎(chǔ)上累加處理器執(zhí)行周期來(lái)作為其函數(shù)部分。然后,這些周期計(jì)數(shù)和DCP被監(jiān)視處理器225獲得并在某個(gè)CWI的結(jié)尾基于節(jié)點(diǎn)存儲(chǔ)在RECC和DCPA中。監(jiān)視處理器225也遞增CWIN,在有效和無(wú)效之間觸發(fā)所述集,反之亦然(這在圖11和圖14的討論中詳細(xì)被討論)。節(jié)點(diǎn)平衡器235然后再次提取CWIN 2908[方框1058],并且確定它自前一次提取后是否已經(jīng)改變[方框1062]。原子性是一個(gè)問(wèn)題,因?yàn)楫?dāng)提取當(dāng)前RECC和DCPA時(shí)CWI有可能已經(jīng)過(guò)期。因此,這些步驟是保證從有效集提取RECC和DCPA信息所必需的。如果CWIN 2908已經(jīng)改變,則上述的處理重復(fù)(見圖10D的方框1062和1063),直到節(jié)點(diǎn)平衡器235確定CWIN 2908未改變。
      現(xiàn)在移動(dòng)到圖10D,當(dāng)節(jié)點(diǎn)平衡器235確定CWIN 2908從前一次提取未改變時(shí)[方框1062],節(jié)點(diǎn)平衡器235通過(guò)將每個(gè)節(jié)點(diǎn)的RECC除以整個(gè)RECC來(lái)計(jì)算用于每個(gè)節(jié)點(diǎn)的當(dāng)前權(quán)重[方框1064]。這產(chǎn)生了由每個(gè)節(jié)點(diǎn)實(shí)際執(zhí)行的當(dāng)前工作的比例,因此,它們表示整個(gè)工作負(fù)荷中由每個(gè)本地節(jié)點(diǎn)承載的實(shí)際份額。所述當(dāng)前權(quán)重然后被存儲(chǔ)在當(dāng)前權(quán)重集2906中,并且DCP被存儲(chǔ)在圖29的DCP集2907中。一旦計(jì)算和存儲(chǔ)了當(dāng)前權(quán)重,則CWID 2911被設(shè)置為等于被提取的CWIN。然后從當(dāng)前權(quán)重集2906提取當(dāng)前權(quán)重以返回到圖10C和10D的邏輯的調(diào)用器[方框1066]。再次為了將DCP返回圖10C和10D的邏輯的調(diào)用器,DCP也在方框1070被從DCP 2907提取。最后,CWIN 2908再次在方框1072被提取,并且在方框1074相對(duì)于先前提取的版本被測(cè)試。如果兩個(gè)值不同,則通過(guò)在圖10C的方框1057繼續(xù)來(lái)重復(fù)處理。
      現(xiàn)在返回圖7,節(jié)點(diǎn)平衡器235將接著確定新的目標(biāo)權(quán)重[方框715]。當(dāng)然,在此的假設(shè)是由于配置改變而已經(jīng)改變了目標(biāo)權(quán)重。在圖10A的第一步驟中[方框1002],對(duì)于每個(gè)節(jié)點(diǎn)確定在系統(tǒng)內(nèi)處理器的數(shù)量和存儲(chǔ)量。在優(yōu)選實(shí)施例中,這個(gè)信息在系統(tǒng)建造期間被存儲(chǔ)在基于節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中(見圖30的3015和3020)。請(qǐng)讀者回憶優(yōu)選實(shí)施例的節(jié)點(diǎn)可以具有零個(gè)或更多的處理器。然后在方框1004確定在系統(tǒng)上的處理器的總數(shù)和存儲(chǔ)的總量。一旦確定了節(jié)點(diǎn)總數(shù),則將識(shí)別目標(biāo)權(quán)重的無(wú)效集(即如果TWMN 2920是奇數(shù)則為SET0,如果TWMN 2920是偶數(shù)則為SET1)。將使用無(wú)效集來(lái)計(jì)算目標(biāo)權(quán)重的新集(即當(dāng)它們改變時(shí))。然后,當(dāng)遞增TWMN 2920時(shí),這將具有改變那個(gè)集有效的效果。
      一旦識(shí)別了目標(biāo)權(quán)重的無(wú)效集,則節(jié)點(diǎn)平衡器235接著確定所述系統(tǒng)是否被配置了專用或共享的處理器。如果所述系統(tǒng)是非分區(qū)的計(jì)算機(jī)裝置,則它的處理器按照定義是專用的,因?yàn)闆]有它們可能共享的其他系統(tǒng)(如在圖1A中那樣)。但是,作為一個(gè)邏輯分區(qū)的系統(tǒng)可以使用共享或?qū)S玫奶幚砥鳌:?jiǎn)短地參見圖1B,一個(gè)節(jié)點(diǎn)跨越多個(gè)分區(qū)的事實(shí)不意味著所述分組是所述節(jié)點(diǎn)上共享多個(gè)處理器。可以在多個(gè)分區(qū)之間共享在給定的節(jié)點(diǎn)上的多個(gè)處理器,或者可以由一個(gè)或多個(gè)專用處理器來(lái)支持所述多個(gè)分區(qū)。具有專用的多個(gè)處理器的一個(gè)分區(qū)專用那些處理器直到它被通告配置改變的時(shí)候。具有共享處理器的分區(qū)可以動(dòng)態(tài)地被提供在計(jì)算機(jī)裝置上的任何可用的處理器的使用而沒有任何這樣的通告。節(jié)點(diǎn)平衡器235可以通過(guò)配置管理器240來(lái)獲得系統(tǒng)的處理器的特性。如果系統(tǒng)使用共享處理器,則在無(wú)效集中的每個(gè)節(jié)點(diǎn)的目標(biāo)權(quán)重被使得等于系統(tǒng)可以獲得的在那個(gè)節(jié)點(diǎn)上存儲(chǔ)量與在所有節(jié)點(diǎn)上系統(tǒng)可以獲得的存儲(chǔ)總量的比例[方框1006]。TWMN 2920然后在方框1020遞增,這具有將無(wú)效目標(biāo)權(quán)重集改變?yōu)橛行繕?biāo)權(quán)重集的效果。
      如果系統(tǒng)不使用共享的處理器[方框1008],則節(jié)點(diǎn)平衡器235確定系統(tǒng)是否具有帶有處理器和存儲(chǔ)器的任何節(jié)點(diǎn)[方框1012]。確定為否(即沒有帶有處理器和存儲(chǔ)器的節(jié)點(diǎn))不是典型的,但是是可能的。例如,有可能將優(yōu)選實(shí)施例的計(jì)算機(jī)系統(tǒng)100的一個(gè)分區(qū)配置為具有帶有一些處理器和沒有存儲(chǔ)器的節(jié)點(diǎn)和具有存儲(chǔ)器和沒有處理器的其他節(jié)點(diǎn)。如果確實(shí)如此,則節(jié)點(diǎn)平衡器235將在無(wú)效目標(biāo)權(quán)重集中的每個(gè)節(jié)點(diǎn)的目標(biāo)權(quán)重設(shè)置為等于在那個(gè)節(jié)點(diǎn)上的處理器與在所有節(jié)點(diǎn)上系統(tǒng)可以獲得的處理器的總數(shù)的比例,以便沒有處理器的節(jié)點(diǎn)將以零作為它們的目標(biāo)權(quán)重[方框1016]。TWMN 2920然后在方框1020遞增,這(再次)具有將無(wú)效目標(biāo)權(quán)重集改變?yōu)橛行繕?biāo)權(quán)重集的效果[方框1020]。
      如果在方框1012節(jié)點(diǎn)平衡器235確定至少一個(gè)節(jié)點(diǎn)具有至少一個(gè)與一些存儲(chǔ)器組合的處理器,則節(jié)點(diǎn)平衡器235接著確定駐留在具有至少一個(gè)處理器和一些存儲(chǔ)器的節(jié)點(diǎn)上的處理器的總數(shù)[方框1014]。目標(biāo)權(quán)重的無(wú)效集然后被更新,以便具有至少一個(gè)處理器和一些存儲(chǔ)器的節(jié)點(diǎn)的目標(biāo)權(quán)重被設(shè)置為它們各自的處理器與上述的處理器總數(shù)的比例[方框1018]。在沒有處理器或存儲(chǔ)器的節(jié)點(diǎn)的無(wú)效集內(nèi)的目標(biāo)權(quán)重被設(shè)置為零[方框1022]。TWMN 2920然后在方框1020遞增,這(再次)具有將無(wú)效目標(biāo)權(quán)重集改變?yōu)橛行繕?biāo)權(quán)重集的效果[方框1020]。
      不論在圖10A的流程圖中所采用的路徑如何,節(jié)點(diǎn)平衡器235最終將目標(biāo)權(quán)重、處理器的數(shù)量和存儲(chǔ)量復(fù)制到每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)錨結(jié)構(gòu)[方框1024]。如在隨后的段落中所述,這樣做啟動(dòng)了有意義的核心組件平衡通告。圖30示出了在優(yōu)選實(shí)施例中使用的節(jié)點(diǎn)錨結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)錨結(jié)構(gòu)包括標(biāo)識(shí)符 、當(dāng)前的權(quán)重和處理器和存儲(chǔ)器 、在前的權(quán)重和處理器和存儲(chǔ)器 。在節(jié)點(diǎn)錨結(jié)構(gòu)3000中示出了一系列資源錨。這些錨由注冊(cè)的組件使用來(lái)容放資源或或指針,所述指針指向由注冊(cè)的組件在節(jié)點(diǎn)基礎(chǔ)上根據(jù)在整個(gè)系統(tǒng)上的工作分布來(lái)分配的資源。在隨后的段落中更詳細(xì)地說(shuō)明了所述后一個(gè)概念。
      現(xiàn)在返回圖7,節(jié)點(diǎn)平衡器235然后計(jì)算在當(dāng)前權(quán)重和目標(biāo)權(quán)重之間的權(quán)重差[方框730]。所述差是每個(gè)節(jié)點(diǎn)的差的絕對(duì)值的和。節(jié)點(diǎn)平衡器235處理在圖8的方框800中繼續(xù)。權(quán)重差門限(WDT)被設(shè)置為剛剛計(jì)算的差的3/4。圖29B示出了WDT 2924。WDT用于適當(dāng)識(shí)別實(shí)際工作分布可能與新的期望工作分布相當(dāng)不同的事實(shí)。雖然所述系統(tǒng)將調(diào)整當(dāng)前的工作分布(如由當(dāng)前權(quán)重所示)以接近目標(biāo)權(quán)重,但是時(shí)這可能需要多一點(diǎn)時(shí)間來(lái)進(jìn)行。因此,這對(duì)于注冊(cè)的核心組件按照新的目標(biāo)權(quán)重來(lái)簡(jiǎn)單地重新調(diào)整它們的資源或許是不適當(dāng)?shù)摹R虼?,WDT與所謂的過(guò)渡權(quán)重結(jié)合使用來(lái)向注冊(cè)的組件提供更逐漸地調(diào)整它們的資源的機(jī)會(huì)。如下所述,在當(dāng)前權(quán)重和目標(biāo)權(quán)重之間設(shè)置過(guò)渡權(quán)重以提供用于注冊(cè)的組件的中間平衡點(diǎn)。在優(yōu)選實(shí)施例中使用WDT來(lái)確定何時(shí)在當(dāng)前和目標(biāo)權(quán)重之間的差足夠大來(lái)保證過(guò)渡權(quán)重的使用。如在隨后的討論中所見,優(yōu)選實(shí)施例的WDT可以大至權(quán)重差的3/4到小至值1/64(.015625)。
      在將WDT 2924設(shè)置到差的3/4后,節(jié)點(diǎn)平衡器235確定所述差是否小于1/32[方框805]。如果是否定的,則節(jié)點(diǎn)平衡器235從所述差減去1/32,并且確定結(jié)果是否小于WDT 2924。如果結(jié)果小于WDT 2924,則WDT 2924被復(fù)位到小于所述差的1/32。無(wú)論在方框805中的測(cè)試結(jié)果如何,節(jié)點(diǎn)平衡器235最后確定WDT 2924是否是1/64或更少[方框820]。如果WDT 2924是1/64或更少,則不保證過(guò)渡權(quán)重的使用,因此WDT 2924被設(shè)置為零并且使得在當(dāng)前集中的KCBN過(guò)渡權(quán)重(3015)等于目標(biāo)權(quán)重。如果節(jié)點(diǎn)平衡器235在方框820確定WDT 2924大于或等于1/64,則節(jié)點(diǎn)平衡器235將KCBN過(guò)渡權(quán)重的當(dāng)前集(3015)設(shè)置為在當(dāng)前權(quán)重和(新)目標(biāo)權(quán)重之間的值。在優(yōu)選實(shí)施例中,這是按照下列公式來(lái)進(jìn)行的。
      過(guò)渡=目標(biāo)+(當(dāng)前-目標(biāo))*WDT/權(quán)重差節(jié)點(diǎn)平衡器235的處理然后進(jìn)行到圖9的方框900,在此,KCBN當(dāng)前權(quán)重的當(dāng)前集(3015)被設(shè)置為當(dāng)前權(quán)重。然后調(diào)用對(duì)于每個(gè)注冊(cè)組件(3105)指定的核心組件方法(見圖31)[方框905]。
      在被調(diào)用后(見圖9的方框905),所述核心組件方法訪問(wèn)在每個(gè)節(jié)點(diǎn)存儲(chǔ)的KCBN信息。所調(diào)用的方法可以獲得當(dāng)前、過(guò)渡和目標(biāo)權(quán)重以及那些權(quán)重的先前值的拷貝。所調(diào)用的方法也可以獲得當(dāng)前和先前的處理器的數(shù)量和存儲(chǔ)量。所有這個(gè)信息用于使得所調(diào)用的方法可以確定如何最佳地使用其資源??梢允褂蒙鲜鐾ǜ娣?wù)的核心組件的示例是綜合的文件系統(tǒng)(IFS)。文件系統(tǒng)通常使用預(yù)先建立的線程集以處理不同的功能。例如,一個(gè)IFS可以具有執(zhí)行硬盤驅(qū)動(dòng)器(HDD)讀取的一個(gè)線程集和執(zhí)行HDD寫入的另一個(gè)線程集。為了最佳地利用這些線程,所述IFS將使用優(yōu)選實(shí)施例來(lái)最佳地以與工作分布一致的方式來(lái)分配線程。如果在調(diào)用時(shí)與所述IFS相關(guān)聯(lián)的核心組件方法通過(guò)考慮KCBN權(quán)重來(lái)確定工作從第一節(jié)點(diǎn)向第二節(jié)點(diǎn)移動(dòng),則所述方法將破壞在第一節(jié)點(diǎn)上的一些或所有其預(yù)先建立的線程,并且在第二節(jié)點(diǎn)上建立一些。在KCBN信息的當(dāng)前集已經(jīng)被復(fù)制到KCBN信息的前一個(gè)集后,用于核心組件平衡通告的配置改變方面的處理然后結(jié)束。
      過(guò)渡權(quán)重重新計(jì)算本專利申請(qǐng)的前一個(gè)部分涉及當(dāng)發(fā)生配置改變時(shí)如何在優(yōu)選實(shí)施例中計(jì)算和設(shè)置過(guò)渡權(quán)重。在說(shuō)明了它后,本專利申請(qǐng)這個(gè)部分涉及如何定期重新計(jì)算過(guò)渡權(quán)重以通過(guò)定期通告而提供逐漸的重新平衡。圖11-14示出了在優(yōu)選實(shí)施例的監(jiān)視處理器225中使用的步驟。如上所述,優(yōu)選實(shí)施例的監(jiān)視處理器225每秒執(zhí)行一次,并且它具有與優(yōu)選實(shí)施例的各個(gè)方面相關(guān)的功能。但是,僅僅這些方面中的某些對(duì)這個(gè)特定的討論感興趣(即過(guò)渡權(quán)重重新計(jì)算)。因此,僅僅研究某些附圖和處理方框而跳過(guò)其他以有利于在隨后的段落中的處理。在圖11中,處理方框1105-1114與優(yōu)選實(shí)施例的其他方面相關(guān)。在圖11的方框1116中,監(jiān)視處理器225遞增當(dāng)前權(quán)重調(diào)用計(jì)數(shù)(CWIC),并且因?yàn)楸O(jiān)視處理器225每秒執(zhí)行,因此CWIC每秒遞增。(圖29A上示出了CWIC 2910。)監(jiān)視處理器225接著確定對(duì)于所述間隔是否已經(jīng)達(dá)到最大的調(diào)用計(jì)數(shù)[方框1120]。在優(yōu)選實(shí)施例中,最大調(diào)用計(jì)數(shù)是七。計(jì)數(shù)七表示當(dāng)前權(quán)重間隔的結(jié)尾。
      圖14上示出了所完成的當(dāng)前權(quán)重間隔的監(jiān)視處理器225處理。在步驟1405,在無(wú)效集中的DCP累加(見圖29A的DCPA集2912和2916)被歸一化。(上面通過(guò)CWIN 2908的查看來(lái)確定DCPA的哪個(gè)集是無(wú)效的,奇數(shù)CWIN 2908是SET0,偶數(shù)CWIN 2908是SET1。)在優(yōu)選實(shí)施例中,通過(guò)將所述累加除以在所述間隔中的調(diào)用的數(shù)量(即七)來(lái)處理這個(gè)歸一化。在此,應(yīng)當(dāng)注意在圖14上所示的某些步驟(即方框1405和1435)不涉及核心組件平衡通告。但是,在此討論所述材料,因?yàn)樵诋?dāng)前權(quán)重間隔的結(jié)尾執(zhí)行所述步驟。
      監(jiān)視處理器225接著提取由分派處理器230收集的當(dāng)前權(quán)重周期[方框1410]。在優(yōu)選實(shí)施例中,這些計(jì)數(shù)在本地節(jié)點(diǎn)基礎(chǔ)上被存儲(chǔ)在基于處理器的數(shù)據(jù)結(jié)構(gòu)(未示出)中。監(jiān)視處理器225然后從剛剛獲得的周期計(jì)數(shù)減去在無(wú)效集中先前存儲(chǔ)的周期計(jì)數(shù)(見圖29A的RECC)以到達(dá)在每個(gè)本地節(jié)點(diǎn)的期滿CWI期間執(zhí)行的周期的數(shù)量。這個(gè)結(jié)果然后被存儲(chǔ)回?zé)o效集中來(lái)替代前一個(gè)值[方框1415]。在方框1420中,來(lái)自有效集的RECC被提取、除以2、然后加到在無(wú)效集中的值(在節(jié)點(diǎn)基礎(chǔ)上)。這導(dǎo)致作為近期執(zhí)行的周期計(jì)數(shù)的在優(yōu)選實(shí)施例中看見的值。
      CWIN 2908然后在方框1425中遞增以將無(wú)效集(即具有最新計(jì)數(shù)的集)轉(zhuǎn)換為有效集。CWIC 2910然后在方框1430被設(shè)置為零來(lái)作為新CWI的開始。監(jiān)視處理器225然后將在方框1410中收集的計(jì)數(shù)存儲(chǔ)到新轉(zhuǎn)換的無(wú)效集中以形成這些相同計(jì)算的基礎(chǔ)(即在下一個(gè)CWI的結(jié)尾)[方框1440]。WDT2914然后在方框1450中相對(duì)于零而測(cè)試。非零WDT和當(dāng)前權(quán)重間隔的結(jié)尾的組合表示需要確定是否需要重新計(jì)算過(guò)渡權(quán)重。圖15和8概述了在優(yōu)選實(shí)施例中使用的過(guò)渡權(quán)重重新計(jì)算步驟。首先參見圖5,在方框1500中獲得目標(biāo)權(quán)重。
      在優(yōu)選實(shí)施例中,用于獲得目標(biāo)權(quán)重的機(jī)構(gòu)由圖10B所示。在圖10B的方框1030中,提取了目標(biāo)權(quán)重修改編號(hào)(TWMN)?,F(xiàn)在參見圖29A,其中示出了目標(biāo)權(quán)重集2922和目標(biāo)權(quán)重修改編號(hào)(TWMN)2920。如圖所示,在優(yōu)選實(shí)施例中存在兩個(gè)目標(biāo)權(quán)重集(SET0和SET1)。TWMN 2920用于確定哪個(gè)集是有效集和哪個(gè)集是無(wú)效集。如果TWMN 2920是奇數(shù),則SET1是有效集并且SET0是無(wú)效集。如果TWMN 2920是偶數(shù),則SET0是有效集并且SET1是無(wú)效集。節(jié)點(diǎn)平衡器235然后測(cè)試TWMN 2920以確定它是奇數(shù)還是偶數(shù)[方框1032]。如果TWMN 2920是偶數(shù)的,則從SET0提取每個(gè)節(jié)點(diǎn)的目標(biāo)權(quán)重[方框1034],但是如果TWMN 2920是奇數(shù)的,則從SET1提取每個(gè)節(jié)點(diǎn)的目標(biāo)權(quán)重[方框1036]。然后TWMN 2920在方框1038再次被提取并且在方框1040測(cè)試改變。如果TWMN 2920未改變,則在方框1042返回先前提取的目標(biāo)權(quán)重集。如果TWMN 2920已經(jīng)改變,則重復(fù)測(cè)試奇數(shù)/偶數(shù)、集提取和改變測(cè)試的步驟直到發(fā)現(xiàn)TWMN 2920未改變。在未改變狀態(tài)中發(fā)現(xiàn)TWMN 2920的要求是為了原子性的目的。本專利申請(qǐng)的重新平衡工作和本地節(jié)點(diǎn)分配部分概述了在TWMN 2920可以被遞增的同時(shí)監(jiān)視處理器225檢索目標(biāo)權(quán)重值的實(shí)例。
      現(xiàn)在返回圖15,在方框1505獲得當(dāng)前權(quán)重。請(qǐng)參見圖10C的前面討論以獲得在優(yōu)選實(shí)施例中用于獲得當(dāng)前權(quán)重的步驟的細(xì)節(jié)。然后在當(dāng)前權(quán)重和目標(biāo)權(quán)重之間計(jì)算權(quán)重差。如上所述,所述差是每個(gè)節(jié)點(diǎn)的權(quán)重差的絕對(duì)值的和。所述差然后相對(duì)于WDT 2924被測(cè)試。如果所述差大于WDT 2924,則過(guò)渡權(quán)重不必被重新計(jì)算。但是,如果所述差小于或等于WDT 2924,則使用與圖8和9相關(guān)聯(lián)的上述處理來(lái)重新計(jì)算過(guò)渡權(quán)重。請(qǐng)參見那些附圖的說(shuō)明來(lái)獲得更多的信息。
      本地節(jié)點(diǎn)分配簡(jiǎn)短地返回圖2,TCM 205在優(yōu)選實(shí)施例中用于建立可執(zhí)行的線程以及必要的線程控制結(jié)構(gòu)。建立進(jìn)程的一部分是向這些可執(zhí)行線程分配一個(gè)本地節(jié)點(diǎn)。本地節(jié)點(diǎn)分配是重要的,因?yàn)門DM 215偏向于盡可能在它們所分配的本地節(jié)點(diǎn)上執(zhí)行線程,并且TMM 217偏向于盡可能在它們的所分配的本地節(jié)點(diǎn)上分配用于線程的存儲(chǔ)器。這個(gè)偏向的含義涉及總體系統(tǒng)利用和資源分配。在優(yōu)選實(shí)施例中,向線程的本地節(jié)點(diǎn)分配表示所述系統(tǒng)將擇優(yōu)地在其本地節(jié)點(diǎn)上執(zhí)行線程,并且在其本地節(jié)點(diǎn)上分配存儲(chǔ)器。這在此被稱為節(jié)點(diǎn)親和性。當(dāng)然,如果一個(gè)特定的節(jié)點(diǎn)配置僅僅一個(gè)處理器,則這種親和性變?yōu)樘幚砥饔H和性。另外,本領(lǐng)域的技術(shù)人員將明白本發(fā)明不限于由優(yōu)選實(shí)施例提供的特定類型的親和性。例如,數(shù)量達(dá)到總是在其本地節(jié)點(diǎn)上執(zhí)行線程的要求的緊密親和性也落入本發(fā)明的精神和范圍內(nèi)。
      如上所述,在優(yōu)選實(shí)施例中使用目標(biāo)權(quán)重來(lái)特征化在整個(gè)系統(tǒng)上的期望工作分布。當(dāng)前的權(quán)重用于特征化在整個(gè)系統(tǒng)上的當(dāng)前工作分布。如果每個(gè)線程進(jìn)行相同數(shù)量的工作,則確定新線程的本地節(jié)點(diǎn)將是直接的。即,基于將被分配到每個(gè)節(jié)點(diǎn)的現(xiàn)有線程的數(shù)量保持為與目標(biāo)權(quán)重相同的比例來(lái)簡(jiǎn)單地分配本地節(jié)點(diǎn)。但是,事實(shí)是不同的線程進(jìn)行不同量的工作,并且不可能提前知道線程要做多少工作。因此,優(yōu)選實(shí)施例根據(jù)目標(biāo)權(quán)重和當(dāng)前權(quán)重來(lái)建立起始權(quán)重,并且分配本地節(jié)點(diǎn)以便將分配到每個(gè)本地節(jié)點(diǎn)的線程的數(shù)量保持與起始權(quán)重相同的比例。其當(dāng)前權(quán)重超過(guò)其目標(biāo)權(quán)重的節(jié)點(diǎn)將其起始權(quán)重設(shè)置為在一定程度上小于其目標(biāo)權(quán)重(即因?yàn)樗呀?jīng)具有大于其工作負(fù)荷的份額),并且其當(dāng)前權(quán)重低于其目標(biāo)權(quán)重的節(jié)點(diǎn)將其起始權(quán)重設(shè)置為在一定程度上大于其目標(biāo)權(quán)重(即因?yàn)樗?dāng)前具有小于其工作負(fù)荷的份額)。當(dāng)對(duì)于每個(gè)節(jié)點(diǎn)計(jì)算其起始權(quán)重時(shí),系統(tǒng)越忙,則當(dāng)前權(quán)重被施加更多的影響。
      圖26示出了本地節(jié)點(diǎn)分配的高級(jí)步驟。TCM 205在處理方框2605獲得每個(gè)節(jié)點(diǎn)的起始權(quán)重。圖27和28概述了在優(yōu)選實(shí)施例中這個(gè)處理如何工作。現(xiàn)在參見圖27,TCM 205首先在方框2705提取起始權(quán)重標(biāo)識(shí)符(IWID)。圖29B示出了IWID 2928和起始權(quán)重2930。然后,在TCM 205在方框2715確定IWID是否匹配CWIN之前,在方框2710提取CWIN 2908。如果IWID不匹配CWIN,TCW 205進(jìn)行到圖28的方框2800以計(jì)算新的起始權(quán)重,因?yàn)楝F(xiàn)有的起始權(quán)重過(guò)期。
      在方框2805獲得當(dāng)前權(quán)重以及CWID和DCP。請(qǐng)參見圖10C的上述說(shuō)明以獲得這些步驟的說(shuō)明。在方框2710提取的CWIN的值然后在方框2810被設(shè)置到CWID,以便它表示與當(dāng)前權(quán)重相關(guān)聯(lián)的間隔數(shù)量。然后在方框2815獲得目標(biāo)權(quán)重。請(qǐng)參見圖10B的上述說(shuō)明以獲得這些步驟的說(shuō)明。
      在方框2820以第一節(jié)點(diǎn)開始,TCM 205現(xiàn)在組合目標(biāo)和當(dāng)前權(quán)重以產(chǎn)生每個(gè)節(jié)點(diǎn)的起始權(quán)重。在組合目標(biāo)和當(dāng)前權(quán)重中,對(duì)于給定的節(jié)點(diǎn)的DCP越大,則當(dāng)前權(quán)重對(duì)于那個(gè)節(jié)點(diǎn)的產(chǎn)生的起始權(quán)重具有更多的影響。
      組合所述權(quán)重的第一部分是計(jì)算將控制當(dāng)前權(quán)重的影響的乘數(shù)。如果DCP是75%或更小[方框2825],則在方框2850,通過(guò)將所述乘數(shù)設(shè)置為等于DCP的立方除以75%的平方來(lái)抑制當(dāng)前權(quán)重的影響。否則,如果DCP小于100%[方框2835],則在方框2855通過(guò)將所述乘數(shù)設(shè)置為等于100%減((100%的立方-DCP)/(25%的平方))來(lái)放大當(dāng)前權(quán)重的影響。否則,如果DCP是100%或更大[方框2835],則在方框2840通過(guò)將所述乘數(shù)設(shè)置為等于100%來(lái)最大化當(dāng)前權(quán)重的影響。無(wú)論路徑如何,所述乘數(shù)將在0-100%的范圍內(nèi),并且用于下面的第二部分中。
      組合所述權(quán)重的第二部分是計(jì)算一個(gè)除數(shù),所述除數(shù)按照當(dāng)前權(quán)重允許具有的影響數(shù)量,使得起始權(quán)重當(dāng)當(dāng)前權(quán)重小于目標(biāo)權(quán)重時(shí)大于目標(biāo)權(quán)重,并且當(dāng)當(dāng)前權(quán)重大于目標(biāo)權(quán)重時(shí)小于目標(biāo)權(quán)重。TCM 205在方框2860將所述除數(shù)計(jì)算為目標(biāo)權(quán)重加((當(dāng)前權(quán)重-目標(biāo)權(quán)重)乘以所述乘數(shù))。然后,產(chǎn)生的除數(shù)其范圍根據(jù)所述乘數(shù)而在目標(biāo)權(quán)重和當(dāng)前權(quán)重之間的某處,并且用于下面的第三部分中。
      第三部分是通過(guò)將目標(biāo)權(quán)重的平方除以所述除數(shù)來(lái)計(jì)算未歸一化的起始權(quán)重[方框2875]。這具有當(dāng)當(dāng)前權(quán)重越小時(shí)使得起始權(quán)重更大的影響,反之亦然。為了避免可能的除以零,TCM 205查看所述除數(shù)為零[方框2870],如果如此,它在方框2865簡(jiǎn)單地將起始權(quán)重設(shè)置為等于目標(biāo)權(quán)重。TCM 205然后查看是否存在更多的要處理的節(jié)點(diǎn)[方框2809],如果是肯定的,則它對(duì)于剩余的每個(gè)節(jié)點(diǎn)重復(fù)上述的處理。當(dāng)TCM 205確定已經(jīng)考慮了所有的節(jié)點(diǎn)時(shí),它進(jìn)行到圖27的方框2750。在經(jīng)由連接方框2750返回到圖27的邏輯后,TCM 205歸一化該未歸一化的起始權(quán)重,并且在起始權(quán)重2930中存儲(chǔ)它們[方框2745]。在優(yōu)選實(shí)施例中,通過(guò)將每個(gè)權(quán)重除以所有節(jié)點(diǎn)的起始權(quán)重的和來(lái)歸一化權(quán)重。IWID然后在方框2735被設(shè)置為CWID,以指定當(dāng)前權(quán)重間隔,在此間隔期間,起始權(quán)重有效。
      來(lái)自方框2715的當(dāng)前所述的執(zhí)行路徑和“是”分支(見上述說(shuō)明)在方框2725匯合。在此,TCM提取起始權(quán)重,然后再次提取CWIN。如果新提取的CWIN與先前提取的CWIN不同,則起始權(quán)重過(guò)期并且以圖28的方框2805重新開始先前所述的起始權(quán)重計(jì)算步驟。如果新提取的CWIN與先前提取的CWIN相同,則被提取的起始權(quán)重是最新的,并且被返回到圖26的邏輯。
      現(xiàn)在返回圖26的方框2610,TCM 205確定每個(gè)節(jié)點(diǎn)的當(dāng)前存在的線程的數(shù)量。在優(yōu)選實(shí)施例中,核心服務(wù)137通過(guò)當(dāng)一個(gè)線程被建立時(shí)遞增一個(gè)計(jì)數(shù)器并且當(dāng)破壞一個(gè)線程時(shí)遞減它來(lái)在節(jié)點(diǎn)基礎(chǔ)上跟蹤現(xiàn)有的線程。然后通過(guò)求和計(jì)數(shù)器來(lái)確定線程的總數(shù)[方框2615]。然后在方框2620,在節(jié)點(diǎn)基礎(chǔ)上確定線程的目標(biāo)數(shù)量。在優(yōu)選實(shí)施例中,這是通過(guò)將線程的總數(shù)乘以每個(gè)節(jié)點(diǎn)的起始權(quán)重來(lái)實(shí)現(xiàn)的。在實(shí)際線程和目標(biāo)線程之間具有最大的短落差(short fall)的節(jié)點(diǎn)是被選擇為剛剛建立的線程的本地的節(jié)點(diǎn)[方框2622]。
      工作重新分配概述我們上面討論了本發(fā)明的優(yōu)選實(shí)施例如何能夠檢測(cè)在系統(tǒng)內(nèi)的工作不平衡和進(jìn)行適當(dāng)?shù)恼{(diào)整。這在優(yōu)選實(shí)施例中通過(guò)在監(jiān)視處理器225、分派處理器230和節(jié)點(diǎn)平衡器235之間的一系列狀態(tài)驅(qū)動(dòng)交互來(lái)實(shí)現(xiàn)。在優(yōu)選實(shí)施例中用于工作重新分配目的的狀態(tài)被稱為觀察平衡、記錄周期和移動(dòng)線程。所述觀察平衡狀態(tài)——它是開始點(diǎn)——被系統(tǒng)管理器設(shè)置。因此,系統(tǒng)管理器使得系統(tǒng)能夠確定是否存在工作平衡問(wèn)題。當(dāng)狀態(tài)被設(shè)置到觀察平衡時(shí),監(jiān)視處理器225跟蹤一個(gè)五十三秒的時(shí)段——在此被稱為觀察平衡間隔(OBI)。在某個(gè)數(shù)量——在優(yōu)選實(shí)施例為六——的間隔已經(jīng)過(guò)去后,監(jiān)視處理器225通告節(jié)點(diǎn)平衡器235。
      當(dāng)節(jié)點(diǎn)平衡器235蘇醒時(shí),它注意所述狀態(tài)被設(shè)置到觀察平衡。節(jié)點(diǎn)平衡器235通過(guò)執(zhí)行系統(tǒng)是否不平衡的高級(jí)分析來(lái)響應(yīng)。當(dāng)在隨后的段落中更詳細(xì)地說(shuō)明這個(gè)確定時(shí),在此應(yīng)當(dāng)注意,分派處理器230——它很頻繁地運(yùn)行——正在跟蹤在本地節(jié)點(diǎn)基礎(chǔ)上執(zhí)行的周期的數(shù)量。這種原始的周期計(jì)數(shù)被節(jié)點(diǎn)平衡器235使用來(lái)進(jìn)行其高等級(jí)平衡確定。當(dāng)節(jié)點(diǎn)平衡器235確定系統(tǒng)的工作負(fù)荷可能不平衡時(shí),它將所述狀態(tài)設(shè)置為記錄周期,由此通告監(jiān)視處理器225。
      監(jiān)視處理器225然后識(shí)別狀態(tài)已經(jīng)被改變到記錄周期,并且在跟蹤通過(guò)后,單一記錄周期間隔將所述狀態(tài)設(shè)置為移動(dòng)線程,并且通告節(jié)點(diǎn)平衡器235。同時(shí),分派處理器230識(shí)別節(jié)點(diǎn)平衡器235已經(jīng)將所述狀態(tài)設(shè)置為記錄周期。分派處理器230通過(guò)在線程基礎(chǔ)和本地節(jié)點(diǎn)基礎(chǔ)上收集周期數(shù)據(jù)來(lái)響應(yīng)。分派處理器230當(dāng)它以后確定所述狀態(tài)已經(jīng)改變到除了記錄周期之外的某狀態(tài)時(shí)停止在線程基礎(chǔ)上收集周期數(shù)據(jù)。
      當(dāng)節(jié)點(diǎn)平衡器235從監(jiān)視處理器225接收到上述的通告時(shí),它執(zhí)行對(duì)于由分派處理器230收集的基于線程的數(shù)據(jù)的低級(jí)分析。節(jié)點(diǎn)平衡器235然后兩次查看系統(tǒng)的平衡/不平衡狀態(tài),并且在系統(tǒng)的工作負(fù)荷未適當(dāng)?shù)仄胶獾那闆r下使用基于線程的數(shù)據(jù)來(lái)確定那些線程要移動(dòng)。如果節(jié)點(diǎn)平衡器235確定系統(tǒng)的工作負(fù)荷不平衡時(shí),它在節(jié)點(diǎn)之間移動(dòng)線程以更適當(dāng)?shù)仄胶庀到y(tǒng)的工作負(fù)荷。最后,節(jié)點(diǎn)平衡器235將所述狀態(tài)設(shè)置回觀察平衡以開始處理。
      在觀察平衡狀態(tài)中的分派處理器230剛才所述的是這樣的事實(shí)分派處理器230當(dāng)在觀察平衡狀態(tài)時(shí)保持在本地節(jié)點(diǎn)基礎(chǔ)上執(zhí)行的周期數(shù)量的原始計(jì)數(shù)。在圖16A上示出這一邏輯。在圖16A上所示的是與本發(fā)明的優(yōu)選實(shí)施例相關(guān)的、在分派處理器230內(nèi)的步驟。本領(lǐng)域內(nèi)的技術(shù)人員明白,存在其他不相關(guān)的線程分派處理。在方框1600中,分派處理器230獲得要被分派的線程的本地節(jié)點(diǎn)ID。然后在方框1605獲得最后一次執(zhí)行這個(gè)特定線程時(shí)消耗的周期。所消耗的周期計(jì)數(shù)然后在本地節(jié)點(diǎn)基礎(chǔ)上被加到當(dāng)前權(quán)重周期計(jì)數(shù)累加器上。這個(gè)計(jì)數(shù)——它由分派處理器230保持——被存儲(chǔ)在基于處理器的數(shù)據(jù)結(jié)構(gòu)(未示出)中。分派器230然后確定它是否在觀察平衡狀態(tài)內(nèi)或之外。如果是肯定的,則上述的消耗的周期被加到觀察平衡周期計(jì)數(shù)累加器——它是由分派處理器230(未示出)保有的另一個(gè)基于處理器的數(shù)據(jù)存儲(chǔ)器。分派處理器230然后確定它是否在記錄周期狀態(tài)中[方框1645]。因?yàn)樵诖宋覀冊(cè)谟^察平衡狀態(tài),因此分派處理器230僅僅返回方框1640,在其中剩余的線程分派處理發(fā)生。下面結(jié)合記錄周期狀態(tài)來(lái)說(shuō)明圖16B的邏輯。
      在觀察平衡狀態(tài)中的監(jiān)視處理器225前面相對(duì)于核心組件平衡通告而討論了圖11。在那個(gè)討論期間,涉及這些處理方框中的那些(即監(jiān)視處理器225的處理方框)與工作重新分配相關(guān)的方框?,F(xiàn)在說(shuō)明這些方框。在方框1105,獲得當(dāng)前的分派器承諾百分比。在優(yōu)選實(shí)施例中,這些是通過(guò)對(duì)于本發(fā)明的益處和優(yōu)點(diǎn)不重要的系統(tǒng)接口而被獲得的,因此在此不進(jìn)一步說(shuō)明。所述百分比在節(jié)點(diǎn)基礎(chǔ)上表示系統(tǒng)的活動(dòng)水平的指示。像RECC一樣,通過(guò)CWIN 2908的查看來(lái)識(shí)別無(wú)效集(見圖29A的DCPA集2912和2916)[方框1110]。如果CWIN 2908是奇數(shù)的,則DCP被加到在SET0中的DCPA;如果CWIN 2908是偶數(shù),則DCP被加到在SET1中的DCPA。監(jiān)視處理器225然后確定CWIC 2910是否已經(jīng)達(dá)到其最大[方框1120]。如果已經(jīng)達(dá)到了所述最大,則監(jiān)視處理器225處理被完成的當(dāng)前權(quán)重間隔。這個(gè)處理已經(jīng)參照?qǐng)D14在前得到說(shuō)明(見上)。請(qǐng)讀者在此假設(shè)被完成的當(dāng)前權(quán)重間隔處理不是所討論的問(wèn)題。監(jiān)視處理器225因此確定當(dāng)前狀態(tài)是否是觀察平衡或其外[方框1122]。
      在此,當(dāng)前狀態(tài)是觀察平衡,因此監(jiān)視處理器225移動(dòng)到圖12的方框1205。在此,監(jiān)視處理器225計(jì)算對(duì)于最老的保存區(qū)域(見圖29B,保存區(qū)域SA0-SAN,2932-2936)的索引。在優(yōu)選實(shí)施例中,這種計(jì)算涉及提取圖29B的觀察間隔數(shù)量(OIN)2950和將OIN 2950除以保存區(qū)域的數(shù)量(即,N+1),然后使用產(chǎn)生的余數(shù)來(lái)作為所述索引。監(jiān)視處理器225然后在節(jié)點(diǎn)基礎(chǔ)上向最老的保存區(qū)域的DCPA加DCP[方框1210]。然后遞增最老的保存區(qū)域的調(diào)用計(jì)數(shù)(IC)[方框1215]。監(jiān)視處理器225然后確定是否已經(jīng)達(dá)到了最大調(diào)用計(jì)數(shù)[方框1220]。如果如此的話,則已經(jīng)完成了一個(gè)需要處理的觀察間隔。在圖17中示出了這個(gè)處理。如果還未完成觀察間隔,則處理在圖13中繼續(xù)。
      首先轉(zhuǎn)向圖17,監(jiān)視處理器225首先從分派處理器230獲得觀察平衡周期計(jì)數(shù),并且將它們?cè)诠?jié)點(diǎn)基礎(chǔ)上存儲(chǔ)在第二最老保存區(qū)域中[方框1700]。(再次,見圖29B,保存區(qū)域SA0-SAN,2932-2936。)這些值將最終變?yōu)樵谙乱粋€(gè)觀察間隔中執(zhí)行的周期的數(shù)量的基礎(chǔ)。然后,在方框1705,監(jiān)視處理器225將計(jì)算在剛剛完成的觀察間隔中執(zhí)行的周期。在優(yōu)選實(shí)施例中,這是通過(guò)從在方框1700獲得的計(jì)數(shù)減去在最老保存區(qū)域中的周期計(jì)數(shù)而進(jìn)行的,所述在最老保存區(qū)域中的周期計(jì)數(shù)是剛剛完成的觀察間隔的基礎(chǔ)。這個(gè)計(jì)算的結(jié)果然后被存儲(chǔ)回最老的保存區(qū)域。在方框1710中,監(jiān)視處理器225將第二最老保存區(qū)域的DCPA設(shè)置為零。這是為了準(zhǔn)備下一個(gè)觀察間隔的累加。監(jiān)視處理器225然后將第二最老保存區(qū)域的調(diào)用計(jì)數(shù)設(shè)置為零,這再次是準(zhǔn)備在下一個(gè)間隔中的累加 。OIN 2950然后被遞增,這具有將最老的保存區(qū)域原子地改變?yōu)樽钚碌暮蛯⒌诙罾细淖優(yōu)樽罾系男Ч鸞方框1720]。
      在方框1725中,監(jiān)視處理器225確定OIN 2950是否已經(jīng)達(dá)到觀察平衡門限。這個(gè)值在優(yōu)選實(shí)施例中使用來(lái)確定何時(shí)監(jiān)視處理器225應(yīng)當(dāng)從工作負(fù)荷的角度查看所述系統(tǒng)的節(jié)點(diǎn)是否被平衡。在優(yōu)選實(shí)施例中,這個(gè)值是六。如果還沒有達(dá)到觀察平衡門限,則監(jiān)視處理器225在方框1740返回圖12的邏輯。如果已經(jīng)達(dá)到了觀察平衡門限,則監(jiān)視處理器225確定當(dāng)前狀態(tài)是否是觀察平衡(見圖29A的節(jié)點(diǎn)管理器狀態(tài)2902)。如果當(dāng)前狀態(tài)不是觀察平衡,則監(jiān)視處理器225在方框1740返回圖12的邏輯。在此,所述狀態(tài)是觀察平衡,因此監(jiān)視處理器225通告節(jié)點(diǎn)平衡器235來(lái)進(jìn)行高級(jí)確定在返回圖12的邏輯之前,在系統(tǒng)的節(jié)點(diǎn)之間,由系統(tǒng)執(zhí)行的工作是否被正確地平衡 。這個(gè)邏輯結(jié)合圖18被說(shuō)明。
      在觀察平衡狀態(tài)中的節(jié)點(diǎn)平衡器235現(xiàn)在轉(zhuǎn)向圖18,節(jié)點(diǎn)平衡器235求取所述六個(gè)最近的保存區(qū)域的調(diào)用計(jì)數(shù)的和[方框1800]。節(jié)點(diǎn)平衡器235然后計(jì)算每個(gè)節(jié)點(diǎn)的平均DCP[方框1805]。在優(yōu)選實(shí)施例中,這是通過(guò)首先從最近的六個(gè)保存區(qū)域求取在節(jié)點(diǎn)基礎(chǔ)上的DCPA的和來(lái)完成的。用于每個(gè)節(jié)點(diǎn)的總數(shù)然后被除以所述調(diào)用計(jì)數(shù)的和(即在方框1800確定的值)。結(jié)果是用于每個(gè)節(jié)點(diǎn)的平均DCP。節(jié)點(diǎn)平衡器235然后求取所述六個(gè)最近保存區(qū)域的在節(jié)點(diǎn)基礎(chǔ)上的觀察平衡周期計(jì)數(shù)的和[方框1810]。(見圖29B,周期計(jì)數(shù)和保存區(qū)域SA0-SAN,2932-2936。)然后在方框1815確定系統(tǒng)總和。在圖19繼續(xù)用于進(jìn)行平衡/不平衡確定的步驟。圖19的邏輯由節(jié)點(diǎn)平衡器235對(duì)于每個(gè)節(jié)點(diǎn)使用一次。每次使用圖19的邏輯時(shí),考慮下面是輸入1)系統(tǒng)的總的周期計(jì)數(shù),2)所考慮的節(jié)點(diǎn)的DCP,3)節(jié)點(diǎn)的目標(biāo)權(quán)重(見圖10B和相關(guān)聯(lián)的文本來(lái)獲得如何計(jì)算目標(biāo)權(quán)重的說(shuō)明);4)用于特定節(jié)點(diǎn)的周期計(jì)數(shù)。
      現(xiàn)在移向圖19,節(jié)點(diǎn)平衡器235在方框1900計(jì)算目標(biāo)周期計(jì)數(shù)。在優(yōu)選實(shí)施例中,這是通過(guò)將在所有節(jié)點(diǎn)上執(zhí)行的總的周期乘以特定節(jié)點(diǎn)的目標(biāo)權(quán)重來(lái)實(shí)現(xiàn)的。結(jié)果是用于所討論的節(jié)點(diǎn)的目標(biāo)周期計(jì)數(shù)。所述目標(biāo)周期計(jì)數(shù)然后從所述節(jié)點(diǎn)的周期計(jì)數(shù)被減去[方框1910]。
      在優(yōu)選實(shí)施例中,目標(biāo)周期計(jì)數(shù)的1/32被用作容差,以便如果實(shí)際橫軸起計(jì)數(shù)在目標(biāo)周期計(jì)數(shù)的1/32內(nèi)則所述節(jié)點(diǎn)被說(shuō)成平衡,即使它可能略微失衡??梢栽谔幚矸娇?qū)?905/1920和1915/1925的邏輯中看到這個(gè)容差的應(yīng)用。如果實(shí)際的周期計(jì)數(shù)僅僅略微小于目標(biāo)周期計(jì)數(shù)[方框1905和1920],則返回結(jié)果零[方框1935]。結(jié)果零表示對(duì)于特定的節(jié)點(diǎn)未看見不平衡。類似地,如果實(shí)際周期計(jì)數(shù)僅僅略微大于目標(biāo)周期計(jì)數(shù)[方框1915和1925],則返回結(jié)果零[方框1935]。當(dāng)然,如果方框1910的計(jì)算結(jié)果是零,則在方框1935返回零。如果在實(shí)際周期計(jì)數(shù)和目標(biāo)周期之間的差多于略微低,則圖19的邏輯將返回作為負(fù)數(shù)的、在實(shí)際和目標(biāo)周期計(jì)數(shù)之間的差[方框1930],它指示特定節(jié)點(diǎn)在不超過(guò)其合理比例時(shí)能夠采取的附加工作量。如果在實(shí)際周期計(jì)數(shù)和目標(biāo)周期計(jì)數(shù)之間的差多于略微高,則圖19的邏輯將測(cè)試用于特定節(jié)點(diǎn)的DCP是否大于75%。周期計(jì)數(shù)的過(guò)多和大于75%的DCP表示所述節(jié)點(diǎn)具有多于其合理的工作份額,并且事實(shí)上過(guò)多。當(dāng)發(fā)現(xiàn)是這樣時(shí),圖19的邏輯將返回作為正數(shù)的、在實(shí)際周期和目標(biāo)周期計(jì)數(shù)之間的差[方框1945],這指示應(yīng)當(dāng)從所討論的節(jié)點(diǎn)移動(dòng)的工作量。如果在方框1940圖19的邏輯確定雖然有周期計(jì)數(shù)的過(guò)多但是特定節(jié)點(diǎn)的DCP不超過(guò)75%,則所述節(jié)點(diǎn)不被看作過(guò)度工作[方框1935]。
      回憶圖19的邏輯用于每個(gè)節(jié)點(diǎn),并且現(xiàn)在返回圖18而且假定已經(jīng)考慮了所有的節(jié)點(diǎn),如果圖19的邏輯結(jié)果示出了不存在工作的不平衡(即在整個(gè)系統(tǒng)中工作被適當(dāng)?shù)姆植?,則節(jié)點(diǎn)平衡器235只在方框1840終止執(zhí)行。但是,如果所述邏輯示出了不平衡(即,至少一個(gè)節(jié)點(diǎn)具有太多工作和至少一個(gè)節(jié)點(diǎn)具有太少工作),則節(jié)點(diǎn)平衡器235進(jìn)行到方框1830,在此初始化記錄狀態(tài)值。所述初始化區(qū)域如下1)圖29C的記錄周期ID 2940被遞增,2)周期計(jì)數(shù)2948在本地節(jié)點(diǎn)基礎(chǔ)上被設(shè)置為零,3)記錄周期調(diào)用計(jì)數(shù)2942被設(shè)置為零,4)每個(gè)節(jié)點(diǎn)的DCPA 2948被設(shè)置為零。然后,在節(jié)點(diǎn)平衡器235終止執(zhí)行之前,在方框1840,節(jié)點(diǎn)管理器狀態(tài)2902被設(shè)置到記錄周期。
      在記錄周期狀態(tài)中的分派處理器所述狀態(tài)現(xiàn)在已經(jīng)被節(jié)點(diǎn)平衡器235設(shè)置到記錄周期(見上),因此分派處理器230的處理方框1645將在下次分派線程時(shí)評(píng)估成“是”。因此,分派處理器230將接著確定線程的本地節(jié)點(diǎn)是否是可移動(dòng)的[圖16B的方框1609]。如果是否定的,則分派處理器230僅僅在返回圖16A的邏輯之前在方框1660遞增記錄周期的周期累加器。如果是肯定的,則分派處理器230確定記錄周期ID是否匹配[方框1610]。這個(gè)確定是通過(guò)比較在線程控制結(jié)構(gòu)(未示出)中保存的記錄周期ID與圖29C的記錄周期ID 2940而進(jìn)行的。如果ID匹配,則分派處理器230向已經(jīng)被存儲(chǔ)在線程結(jié)構(gòu)(未示出)中的現(xiàn)有總數(shù)加上所計(jì)數(shù)的原始周期[方框1655]。當(dāng)ID不匹配時(shí),當(dāng)前周期的原始周期計(jì)數(shù)還沒有被存儲(chǔ)在這個(gè)特定線程的控制結(jié)構(gòu)中,因此在所述線程控制結(jié)構(gòu)中的記錄周期ID被設(shè)置到在記錄周期ID 2940中存儲(chǔ)的值[方框1650],并且周期計(jì)數(shù)被設(shè)置為等于最近執(zhí)行的周期[方框1665]。這是在方框1605中確定的值。不論處理方框1610如何評(píng)估,記錄周期的本地節(jié)點(diǎn)總數(shù)在方框1660中也遞增。
      在記錄周期狀態(tài)中的監(jiān)視處理器225現(xiàn)在返回圖13以繼續(xù),下一次監(jiān)視處理器225執(zhí)行處理方框1305將評(píng)估成“是”,因?yàn)闋顟B(tài)2902現(xiàn)在被節(jié)點(diǎn)平衡器235設(shè)置到記錄周期。監(jiān)視處理器225向記錄狀態(tài)DCPA加上DCP(見圖29C的2948的DCPA)[方框1310]。然后在方框1315記錄周期IC 2942遞增。監(jiān)視處理器225然后測(cè)試記錄周期IC 2942以確定是否已經(jīng)達(dá)到最大值。在優(yōu)選實(shí)施例中,所述最大值是五十三。如果還未達(dá)到最大值,則監(jiān)視處理器225僅僅在方框1340退出。如果在方框1320,監(jiān)視處理器225確定已經(jīng)達(dá)到最大值,則它從分派處理器230獲得記錄周期計(jì)數(shù),并且將它們存儲(chǔ)在周期計(jì)數(shù)存儲(chǔ)區(qū)域2948中。監(jiān)視處理器225然后在方框1335將所述狀態(tài)設(shè)置為移動(dòng)線程,并且通告節(jié)點(diǎn)平衡器235在它在方框1340退出之前在方框1330移動(dòng)線程。
      在移動(dòng)線程狀態(tài)中的節(jié)點(diǎn)平衡器235圖20在此用于描述在優(yōu)選實(shí)施例中的線程移動(dòng)。節(jié)點(diǎn)平衡器235首先計(jì)算每個(gè)節(jié)點(diǎn)的平均DCP[方框2000]。在優(yōu)選實(shí)施例中,這是通過(guò)將在2948的DCPA中保存的值除以在所述周期中的間隔總數(shù)而實(shí)現(xiàn)的(即記錄周期IC2942)。節(jié)點(diǎn)平衡器235然后求取2948的累加周期計(jì)數(shù)的和,這產(chǎn)生在記錄周期期間用于所述系統(tǒng)的總數(shù)[方框2005]。
      節(jié)點(diǎn)平衡器235接著確定在記錄周期上在整個(gè)系統(tǒng)中是否合理地分配了工作。在優(yōu)選實(shí)施例中,這是經(jīng)由圖19所示的邏輯完成的。讀者可以回憶,圖19如上所述,在此不重復(fù)細(xì)節(jié)。但是,回憶圖19的邏輯用于每個(gè)節(jié)點(diǎn),并且現(xiàn)在返回圖20而且假設(shè)已經(jīng)建立了所有節(jié)點(diǎn),如果圖19的邏輯的結(jié)果示出不存在工作的不平衡(即在整個(gè)系統(tǒng)中工作適當(dāng)?shù)姆植?,則節(jié)點(diǎn)平衡器235僅僅在方框2035將所述狀態(tài)設(shè)置為觀察平衡,并且在方框2040中止執(zhí)行。但是,如果圖19的邏輯示出了不平衡(即至少一個(gè)節(jié)點(diǎn)具有太多的工作,至少一個(gè)節(jié)點(diǎn)具有太少的工作,并且在觀察平衡狀態(tài)中同樣的節(jié)點(diǎn)分別被觀察為具有太多的工作和太少的工作),則節(jié)點(diǎn)平衡器235進(jìn)行到方框2020,在此確定要移動(dòng)的周期的數(shù)量。請(qǐng)讀者首先回憶在方框2010識(shí)別了缺少周期的節(jié)點(diǎn)和在具有過(guò)多周期的節(jié)點(diǎn)。然后由節(jié)點(diǎn)平衡器235將要移動(dòng)的周期的數(shù)量設(shè)置為最大過(guò)量和最大短缺中較小者的1/2。節(jié)點(diǎn)平衡器235然后在這個(gè)基礎(chǔ)上移動(dòng)線程。
      圖21A-23示出了在優(yōu)選實(shí)施例中用于執(zhí)行這個(gè)任務(wù)的節(jié)點(diǎn)平衡器235邏輯。開始,在方框2100,建立一個(gè)空列表。這個(gè)列表將最后保存作為要移動(dòng)的候選者的線程。然后,在方框2105,節(jié)點(diǎn)平衡器235從由所述系統(tǒng)保存的線程列表選擇第一個(gè)(或下一個(gè))線程。節(jié)點(diǎn)平衡器235然后確定是否所述線程具有與其相關(guān)聯(lián)的當(dāng)前記錄周期ID[方框2110]。如果是否定的,則節(jié)點(diǎn)平衡器235確定是否存在要考慮的更多線程[方框2111],如果是肯定的,則進(jìn)行下一個(gè)線程選擇[方框2105],并且再次確定當(dāng)前記錄周期ID是否與其相關(guān)聯(lián)[方框2110]。圖21B示出了用于處理具有當(dāng)前記錄周期ID的線程的邏輯。節(jié)點(diǎn)平衡器235首先在方框2120確定用于所討論的線程的本地節(jié)點(diǎn)是否已經(jīng)事先確定為具有過(guò)量周期的節(jié)點(diǎn)。如果是否定的,則處理在圖21A的方框2111繼續(xù),如上所述,如果所討論的線程的本地節(jié)點(diǎn)確實(shí)是具有過(guò)量周期的,則節(jié)點(diǎn)平衡器235確定特定線程是否是MAG的成員,在此該組的所有線程要求具有相同的本地節(jié)點(diǎn) 。如果是否定的,則節(jié)點(diǎn)平衡器235提取由這個(gè)線程記錄的周期[方框2130]。節(jié)點(diǎn)平衡器235然后向所述候選列表增加這個(gè)線程,根據(jù)其記錄周期的數(shù)量來(lái)將其分級(jí)(最多的在前)。節(jié)點(diǎn)平衡器235然后在圖21A的方框2111繼續(xù)處理。
      如果在圖21B的方框2125節(jié)點(diǎn)平衡器235確定所討論的線程確實(shí)是一個(gè)組的一部分,則節(jié)點(diǎn)平衡器235確定所述組是否是在這個(gè)記錄周期期間以前已經(jīng)遇到的那個(gè)[方框2140]。如果是肯定的,則處理在圖21A的方框2111繼續(xù)。如果是否定的,則節(jié)點(diǎn)平衡器235計(jì)算用于所述組的總的周期計(jì)數(shù)(即所述組的線程的記錄周期的和)[方框2145],然后根據(jù)所述組的總的周期計(jì)數(shù)來(lái)向移動(dòng)候選列表增加所述組[方框2150]。一旦完成了這一點(diǎn),則處理在圖21A的方框2111繼續(xù)。
      當(dāng)已經(jīng)考慮了所有的線程時(shí),處理方框2111評(píng)估成“否”,并且節(jié)點(diǎn)平衡器235實(shí)際地移動(dòng)線程以重新平衡系統(tǒng)。在優(yōu)選實(shí)施例中用于實(shí)現(xiàn)這個(gè)任務(wù)的邏輯被示出在圖22中。在方框2200中,節(jié)點(diǎn)平衡器235選擇在候選列表中的第一個(gè)(下一個(gè))線程或MAG。假定還沒有到達(dá)列表的結(jié)尾[方框2205],則節(jié)點(diǎn)平衡器235確定所討論的線程或MAG是否具有比移動(dòng)所需要更多或更少的周期(見處理方框2020和相關(guān)聯(lián)的文本)[方框2215]。如果所述線程或MAG消耗了比所需要更多的周期,則節(jié)點(diǎn)平衡器235僅僅在方框2200繼續(xù)處理。如果是否定的,則節(jié)點(diǎn)平衡器235確定所考慮的那個(gè)是否是線程或組[方框2225],如果是線程,則節(jié)點(diǎn)平衡器235進(jìn)行到圖23的邏輯。如果是組,則在進(jìn)行使用圖23的邏輯來(lái)用于在所述組中的每個(gè)線程之前在方框2230改變所述組的本地節(jié)點(diǎn)。
      現(xiàn)在轉(zhuǎn)向圖23,節(jié)點(diǎn)平衡器235改變所討論的線程的本地節(jié)點(diǎn)[方框2300]。只要所述特定線程保留這個(gè)特定的本地節(jié)點(diǎn),則TDM 215將嘗試和分派其來(lái)在其新的本地節(jié)點(diǎn)上執(zhí)行,并且TMM 217將試圖在其新的本地節(jié)點(diǎn)上獲得用于其的存儲(chǔ)器。最后,在方框2305,節(jié)點(diǎn)平衡器235將重建與所述線程相關(guān)聯(lián)的重要存儲(chǔ)頁(yè)面。在優(yōu)選實(shí)施例中,這是通過(guò)下述方式來(lái)實(shí)現(xiàn)的提供在暫時(shí)不可獲得的老本地節(jié)點(diǎn)上的頁(yè)面,將那些頁(yè)面復(fù)制到新的本地節(jié)點(diǎn)上,并且使得在新本地節(jié)點(diǎn)上可以獲得那些頁(yè)面?,F(xiàn)在返回圖22,每次一個(gè)線程或線程組被移動(dòng)到新的本地節(jié)點(diǎn)時(shí),要移動(dòng)的周期被減少已經(jīng)移動(dòng)的周期[方框2240]。處理然后在方框2200繼續(xù),直到已經(jīng)考慮了所有的線程。當(dāng)已經(jīng)考慮了所有的線程時(shí),處理方框2205評(píng)估成“是”,使得節(jié)點(diǎn)平衡器235重新初始化OIN。節(jié)點(diǎn)平衡器235也通過(guò)下述方式來(lái)建立用于下一個(gè)觀察間隔的基礎(chǔ)提取節(jié)點(diǎn)周期計(jì)數(shù),并且將它們存儲(chǔ)在最老的保存區(qū)域中[方框2210]。這些初始化具有這樣的效果使得下一個(gè)觀察間隔完全重新開始,以便在考慮進(jìn)一步的平衡之前觀察至少六個(gè)間隔。
      在執(zhí)行初始化后,節(jié)點(diǎn)平衡器235返回圖20的方框2035,在此它于在方框2040終止處理之前將所述狀態(tài)設(shè)置到觀察平衡。
      在本專利申請(qǐng)文件的工作重新分配部分的開始,我們指出所述狀態(tài)被系統(tǒng)管理器初始地設(shè)置為觀察平衡。這是必要的,因?yàn)橛脩艨梢曰貞洠贗PL期間節(jié)點(diǎn)管理器狀態(tài)2902被設(shè)置為當(dāng)前權(quán)重(見圖6的方框605)。圖24和25分別示出了在系統(tǒng)和系統(tǒng)管理器之間的交互以啟動(dòng)本地節(jié)點(diǎn)移動(dòng)(即重新平衡)和禁止本地節(jié)點(diǎn)移動(dòng)。在優(yōu)選實(shí)施例中,系統(tǒng)管理器通過(guò)用戶界面150與計(jì)算機(jī)系統(tǒng)100交互。在此,系統(tǒng)管理器能夠輸入一個(gè)命令,所述命令指令節(jié)點(diǎn)管理器220將其本身設(shè)置為觀察平衡狀態(tài),由此啟動(dòng)本地節(jié)點(diǎn)移動(dòng)。在圖24的方框2400中,節(jié)點(diǎn)管理器220確定它是否已經(jīng)處于觀察平衡中或之外的狀態(tài)。如果是肯定的,則節(jié)點(diǎn)管理器220僅僅通告系統(tǒng)管理器(通過(guò)用戶界面150)已經(jīng)啟動(dòng)了本地節(jié)點(diǎn)移動(dòng)[方框2405]。如果節(jié)點(diǎn)管理器220未在觀察平衡狀態(tài)中,則節(jié)點(diǎn)管理器220初始化所述OIN,如在與圖22的方框2210相關(guān)聯(lián)的文本中所述。節(jié)點(diǎn)管理器220然后在返回之前在方框2415將其狀態(tài)設(shè)置為觀察平衡。
      系統(tǒng)管理器也能夠輸入一個(gè)命令,所述命令指定節(jié)點(diǎn)管理器220將其本身設(shè)置為當(dāng)前權(quán)重狀態(tài),由此禁止本地節(jié)點(diǎn)移動(dòng)。在圖25的方框2500中,節(jié)點(diǎn)管理器220確定它是否已經(jīng)在當(dāng)前權(quán)重狀態(tài)中,如果是肯定的,則節(jié)點(diǎn)管理器220僅僅通告系統(tǒng)管理器(通過(guò)用戶界面150)已經(jīng)禁止了本地節(jié)點(diǎn)移動(dòng)[方框2505]。如果節(jié)點(diǎn)管理器220不在當(dāng)前權(quán)重狀態(tài)中,則節(jié)點(diǎn)管理器220然后在返回前在方框2510將其狀態(tài)設(shè)置到當(dāng)前權(quán)重。
      在此給出的實(shí)施例和示例被提供來(lái)最佳地說(shuō)明本發(fā)明及其實(shí)際應(yīng)用,并且由此使得本領(lǐng)域內(nèi)技術(shù)人員能夠建立和使用本發(fā)明。但是,本領(lǐng)域內(nèi)技術(shù)人員將認(rèn)識(shí)到上述說(shuō)明和示例是為了僅僅說(shuō)明和舉例而被提供的。所給出的說(shuō)明不意欲是窮盡的或?qū)⒈景l(fā)明限定到所公開的精確形式。根據(jù)上述教程,在不脫離所附的優(yōu)選實(shí)施例的精神和范圍的情況下,許多修改和改變是可能的。
      權(quán)利要求
      1.一種計(jì)算機(jī)裝置,所述計(jì)算機(jī)裝置包括,第一處理器,所述第一處理器具有與其相關(guān)聯(lián)的第一存儲(chǔ)器;第二處理器,所述第二處理器具有與其相關(guān)聯(lián)的第二存儲(chǔ)器;第一作業(yè),所述第一作業(yè)具有第一線程;以及分組機(jī)構(gòu),用于分組兩個(gè)或多個(gè)所述第一線程以便將它們包括在一個(gè)組中,所述兩個(gè)或多個(gè)線程獨(dú)立于它們與所述作業(yè)的關(guān)聯(lián)而被分組,所述組用于提供關(guān)于其中包括的線程的處理器親和性,所述處理器親和性適用于所述第一處理器或所述第二處理器。
      2.按照權(quán)利要求1的計(jì)算機(jī)裝置,包括第二線程,它們不與所述作業(yè)相關(guān)聯(lián),并且其中所述組包括至少一個(gè)所述第二線程。
      3.按照權(quán)利要求1的計(jì)算機(jī)裝置,其中所述第一處理器和所述第一存儲(chǔ)器包括第一節(jié)點(diǎn),并且所述第二處理器和所述第二存儲(chǔ)器包括第二節(jié)點(diǎn)。
      4.按照權(quán)利要求2的計(jì)算機(jī)裝置,其中,在已經(jīng)建立所述組后,所述第二線程中的所述至少一個(gè)被所述分組機(jī)構(gòu)分組到所述組中。
      5.按照權(quán)利要求2的計(jì)算機(jī)裝置,其中,當(dāng)建立至少一個(gè)所述第二線程時(shí)建立所述組,并且所述組包括所述至少一個(gè)所述第一線程。
      6.一種計(jì)算機(jī)裝置,所述計(jì)算機(jī)裝置包括第一處理器,所述第一處理器具有與其相關(guān)聯(lián)的第一存儲(chǔ)器,所述第一處理器和所述第一存儲(chǔ)器是第一物理節(jié)點(diǎn);第二處理器,所述第二處理器具有與其相關(guān)聯(lián)的第二存儲(chǔ)器,所述第二處理器和所述第二存儲(chǔ)器是第二物理節(jié)點(diǎn);線程,所述線程能夠在所述物理節(jié)點(diǎn)中的任何一個(gè)上執(zhí)行;以及邏輯節(jié)點(diǎn),所述邏輯節(jié)點(diǎn)當(dāng)建立所述線程時(shí)被指定,所述邏輯節(jié)點(diǎn)被轉(zhuǎn)換為所述第一物理節(jié)點(diǎn)或所述第二物理節(jié)點(diǎn),以便能夠給所述線程提供用于特定節(jié)點(diǎn)的節(jié)點(diǎn)親和性而不必指定特定的物理節(jié)點(diǎn)。
      7.一種程序產(chǎn)品,所述產(chǎn)品包括,信號(hào)承載媒體;以及程序產(chǎn)品,被布置在所述信號(hào)承載媒體上,所述程序產(chǎn)品包括分組機(jī)構(gòu),用于分組兩個(gè)或多個(gè)第一線程集,所述第一線程與一個(gè)作業(yè)相關(guān)聯(lián),所述兩個(gè)或多個(gè)線程被分組以便將它們包括在一個(gè)組中,所述兩個(gè)或多個(gè)線程獨(dú)立于與作業(yè)的任何關(guān)聯(lián)而分組,所述組用于提供關(guān)于其中包括的線程的處理器親和性,所述處理器親和性適用于第一處理器或第二處理器,所述第一處理器具有與其相關(guān)聯(lián)的第一存儲(chǔ)器,所述第二處理器具有與其相關(guān)聯(lián)的第二存儲(chǔ)器。
      8.按照權(quán)利要求7的程序產(chǎn)品,包括第二線程,它們與所述作業(yè)不關(guān)聯(lián),并且其中所述組包括至少一個(gè)所述第二線程。
      9.按照權(quán)利要求7的程序產(chǎn)品,其中所述第一處理器和所述第一存儲(chǔ)器包括第一節(jié)點(diǎn),并且所述第二處理器和所述第二存儲(chǔ)器包括第二節(jié)點(diǎn)。
      10.按照權(quán)利要求8的程序產(chǎn)品,其中,在建立所述組后,所述第二線程中的所述至少一個(gè)被所述分組機(jī)構(gòu)分組到所述組中。
      11.按照權(quán)利要求8的程序產(chǎn)品,其中當(dāng)建立所述第二線程中的所述至少一個(gè)時(shí)建立所述組,并且所述組包括所述至少一個(gè)所述第一線程。
      12.一種程序產(chǎn)品,所述程序產(chǎn)品包括,邏輯節(jié)點(diǎn),所述邏輯節(jié)點(diǎn)當(dāng)建立一個(gè)線程時(shí)被指定,所述邏輯節(jié)點(diǎn)被轉(zhuǎn)換為第一物理節(jié)點(diǎn)或第二物理節(jié)點(diǎn),以便能夠給所述線程提供用于指定節(jié)點(diǎn)的節(jié)點(diǎn)親和性而不必指定特定的物理節(jié)點(diǎn),所述第一物理節(jié)點(diǎn)包括第一處理器和第一存儲(chǔ)器,并且所述第二節(jié)點(diǎn)包括第二處理器和第二存儲(chǔ)器。
      13.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括步驟建立第一線程,所述第一線程與第一作業(yè)相關(guān)聯(lián);建立第二線程,所述第二線程與所述第一作業(yè)相關(guān)聯(lián);建立第三線程,所述第三線程與所述第一作業(yè)相關(guān)聯(lián);將所述第一線程和所述第二線程分組,但是不分組第三線程,以便將它們包括在一個(gè)組中,所述組用于提供關(guān)于其中包括的線程的處理器親和性,所述處理器親和性適用于所述第一處理器或所述第二處理器,所述第一處理器具有與其相關(guān)聯(lián)的第一存儲(chǔ)器,所述第二處理器具有與其相關(guān)聯(lián)的第二存儲(chǔ)器。
      14.按照權(quán)利要求13的方法,包括第四線程,它與所述作業(yè)不相關(guān)聯(lián),其中所述組包括所述第四線程。
      15.按照權(quán)利要求13的方法,其中所述第一處理器和所述第一存儲(chǔ)器包括第一節(jié)點(diǎn),并且所述第二處理器和所述第二存儲(chǔ)器包括第二節(jié)點(diǎn)。
      16.按照權(quán)利要求14的方法,其中,在已經(jīng)建立所述組后,所述第四線程被分組到所述組中。
      17.按照權(quán)利要求14的方法,其中當(dāng)建立所述第四線程時(shí)建立所述組,并且所述組包括所述第一線程。
      18.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,所述計(jì)算機(jī)實(shí)現(xiàn)的方法包括步驟建立第一線程,所述第一線程能夠在第一物理節(jié)點(diǎn)或第二物理節(jié)點(diǎn)上執(zhí)行,所述第一物理節(jié)點(diǎn)具有第一存儲(chǔ)器,所述第二物理節(jié)點(diǎn)具有第二存儲(chǔ)器;指定第一邏輯節(jié)點(diǎn),當(dāng)建立所述第一線程時(shí)指定所述第一邏輯節(jié)點(diǎn),所述第一邏輯節(jié)點(diǎn)被轉(zhuǎn)換為所述第一物理節(jié)點(diǎn)以便給所述第一線程提供用于所述第一物理節(jié)點(diǎn)的節(jié)點(diǎn)親和性而不必指定特定的物理節(jié)點(diǎn);建立第二線程,所述第二線程能夠在所述第一物理節(jié)點(diǎn)上或在所述第二物理節(jié)點(diǎn)上執(zhí)行;指定第二物理節(jié)點(diǎn),當(dāng)建立所述第二線程時(shí)指定所述第二邏輯節(jié)點(diǎn),所述第二邏輯節(jié)點(diǎn)被轉(zhuǎn)換為所述第二物理節(jié)點(diǎn),以便給所述第二線程提供用于所述第二物理節(jié)點(diǎn)的節(jié)點(diǎn)親和性而不必指定特定的物理節(jié)點(diǎn)。
      全文摘要
      本發(fā)明公開了一種裝置、方法和程序產(chǎn)品,用于識(shí)別和分組具有相互依賴的數(shù)據(jù)訪問(wèn)需要的線程。本發(fā)明的優(yōu)選實(shí)施例使用兩種不同的結(jié)構(gòu)來(lái)實(shí)現(xiàn)這種分組。本發(fā)明公開了一種存儲(chǔ)器親和組(MAG)。所述MAG構(gòu)造成使得多個(gè)線程能夠與同一節(jié)點(diǎn)相關(guān)聯(lián)而不用預(yù)先知道那些線程將被涉及在所述關(guān)聯(lián)中,并且不用任何對(duì)于它們相關(guān)聯(lián)的特定節(jié)點(diǎn)的控制。也公開了一種邏輯節(jié)點(diǎn)構(gòu)造。所述邏輯節(jié)點(diǎn)構(gòu)造使得多個(gè)線程能夠與相同的指定節(jié)點(diǎn)相關(guān)聯(lián)而不用預(yù)先知道在所述關(guān)聯(lián)中將涉及那些線程。雖然邏輯節(jié)點(diǎn)不明確地識(shí)別包括所述系統(tǒng)的基礎(chǔ)物理節(jié)點(diǎn),但是它們提供了一種手段,用于將特定線程與同一節(jié)點(diǎn)相關(guān)聯(lián),將其他線程與其他節(jié)點(diǎn)相關(guān)聯(lián)。
      文檔編號(hào)G06F9/46GK1664804SQ200510053019
      公開日2005年9月7日 申請(qǐng)日期2005年3月4日 優(yōu)先權(quán)日2004年3月4日
      發(fā)明者林恩·K·鐘, 馬克·R·芬克, 理查德·K·柯克曼, 安杰拉·M·牛頓, 唐·D·里德 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1