專利名稱:用于在計算系統(tǒng)上加載程序的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及計算機系統(tǒng)和開發(fā)。更具體地說,本發(fā)明涉及用于減少在分布式或高度并行的計算機系統(tǒng)中加載程序以便執(zhí)行所需的時間的處理過程。
背景技術(shù):
超級計算機系統(tǒng)繼續(xù)被開發(fā)來解決日益復(fù)雜的計算問題。已經(jīng)證明了這些系統(tǒng)對于包括生命科學、財務(wù)建模、流體力學、量子化學、分子動力學、天文學、氣象建模和預(yù)報、以及地質(zhì)建模的大量應(yīng)用來說是特別有用的。超級計算機的開發(fā)人員關(guān)注大規(guī)模并行計算機體系結(jié)構(gòu),以便提供不斷增加的計算能力來應(yīng)用到這些應(yīng)用和其他應(yīng)用。
依照所謂的深藍(blue gene)技術(shù),由國際商業(yè)機器公司(IBM)開發(fā)(并繼續(xù)開發(fā))了一系列大規(guī)模并行系統(tǒng)。深藍/L系統(tǒng)是可擴展的(scalable),其可以被配置有最大65,536(216)個計算節(jié)點。每一個深藍/L節(jié)點均包括具有存儲器和2個CPU的單個專用集成電路(ASIC)。深藍體系結(jié)構(gòu)已經(jīng)極其成功,并且在2005年10月27日,IBM宣布深藍/L系統(tǒng)已經(jīng)達到了280.6teraflops的運算速度(每秒可完成280.6萬億次浮點運算),從而使其成為目前世界上最快的計算機。另外,自從2005年6月以來,在世界范圍內(nèi)的各個地點的深藍/L安裝占世界上最強大的前十臺計算機中的5臺。
IBM目前正在開發(fā)深藍/L系統(tǒng)的后繼產(chǎn)品,稱之為深藍/P。期望深藍/P是第一個以穩(wěn)定的1petaflops(每秒完成1千萬億次浮點運算)進行操作的計算機系統(tǒng)。與深藍/L系統(tǒng)相似,深藍/P系統(tǒng)是設(shè)計具有最大73,728個計算節(jié)點的可擴展系統(tǒng)。每一個深藍/P節(jié)點均包括具有存儲器和4個CPU的單個專用集成電路(ASIC)。整個深藍/P系統(tǒng)容納在72個機架或機柜中,每個系統(tǒng)具有32個節(jié)點板(每個板具有32個節(jié)點)。
除了由IBM開發(fā)的深藍體系結(jié)構(gòu)外,其他分布式計算機系統(tǒng)可以具有與大規(guī)模并行計算機系統(tǒng)類似的整體體系結(jié)構(gòu)。其他分布式系統(tǒng)的例子包括集群系統(tǒng)和基于網(wǎng)格的系統(tǒng)。例如,Beowulf集群是一組計算機系統(tǒng),每個計算機系統(tǒng)運行類似Unix的操作系統(tǒng),諸如Linux或BSD操作系統(tǒng)。該集合中的計算機系統(tǒng)經(jīng)由高速網(wǎng)絡(luò)連接到小型的TCP/IP LAN中,并且安裝有允許在節(jié)點間共享處理的庫和程序。
在執(zhí)行上述許多應(yīng)用的過程中,超級計算機系統(tǒng)用來解決大量通常涉及為不同數(shù)據(jù)集執(zhí)行基本上相同的計算的問題。這類應(yīng)用的例子包括對分子相互作用進行建模,諸如,對單個蛋白質(zhì)的折疊進行仿真。對于這些類型的應(yīng)用而言,在任何給定節(jié)點上執(zhí)行的程序使用相對少量的數(shù)據(jù)。然后,該程序進行涉及該數(shù)據(jù)的許多計算。當完成計算時,返回計算的結(jié)果。因為上千個節(jié)點正在執(zhí)行相同的計算(對于不同的數(shù)據(jù)集),所以在相對短的時間段中,可以處理極其大的數(shù)據(jù)集。
在給定高度并行的超級計算機、諸如深藍系統(tǒng)或者其他分布式系統(tǒng)中的節(jié)點的數(shù)量的情況下,要求任何單一節(jié)點的極其少量開銷的操作通??傮w上轉(zhuǎn)換成用于該系統(tǒng)的大量時間。例如,由各個計算節(jié)點加載程序所需的總時間可能是相當大的。因此,總起來說,簡單地將程序傳送到計算節(jié)點,可能會花費相當大量的時間。在分布式系統(tǒng)中,出現(xiàn)了相同的現(xiàn)象,在所述分布式系統(tǒng)中數(shù)據(jù)集、程序等必須被傳送到作為分布式系統(tǒng)的一部分的處理節(jié)點。因此,現(xiàn)有技術(shù)中需要有可以減少高度并行或分布式計算機中的程序加載時間的技術(shù)。
發(fā)明內(nèi)容
本發(fā)明總體上提供了一種用于減少在高度并行或分布式計算機系統(tǒng)中加載程序所需的時間的方法。本發(fā)明的一個實施例提供了一種在包括多個處理節(jié)點的計算系統(tǒng)上加載程序的方法。該方法總體上包括如果處理節(jié)點可用的話,則識別先前執(zhí)行該程序的多個處理節(jié)點,其中,該程序與提交用于由計算系統(tǒng)執(zhí)行的計算作業(yè)有關(guān)。該方法總體上進一步包括向每一個識別的處理節(jié)點傳送用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息,以及將該計算作業(yè)分派到多個處理節(jié)點。
本發(fā)明的另一個實施例包括包含有程序的計算機可讀介質(zhì),當所述程序被執(zhí)行時,執(zhí)行用于在包括多個處理節(jié)點的計算系統(tǒng)上加載程序的操作。所述操作總體上包括如果處理節(jié)點可用,則識別先前執(zhí)行該程序的多個處理節(jié)點,其中,該程序與提交用于由計算系統(tǒng)執(zhí)行的計算作業(yè)有關(guān)。所述操作總體上進一步包括向每一個識別的處理節(jié)點傳送用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息,以及將該計算作業(yè)分派到多個處理節(jié)點。
本發(fā)明的又一個實施例包括一種并行計算系統(tǒng)。該系統(tǒng)總體上包括多個計算節(jié)點和一控制系統(tǒng),該控制系統(tǒng)被配置成通過執(zhí)行一組操作,在多個計算節(jié)點中的至少一些計算節(jié)點上執(zhí)行計算作業(yè)。所述操作總體上可以包括如果處理節(jié)點可用,則識別先前執(zhí)行程序的多個處理節(jié)點,其中,該計算作業(yè)標識將要在該并行計算系統(tǒng)上執(zhí)行的程序。所述操作總體上可以進一步包括向計算節(jié)點集中的至少一些計算節(jié)點傳送用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息,以及將該計算作業(yè)分派到包括在該計算節(jié)點集中的至少一些計算節(jié)點。
通過參考在附圖中示出的本發(fā)明的實施例,可以獲得實現(xiàn)和詳細地理解本發(fā)明的上述特征、優(yōu)點和目的的方式,以及對以上簡要概括的本發(fā)明的更加具體的描述。
然而,應(yīng)注意到,附圖僅僅示例說明了本發(fā)明的典型實施例,因此,不應(yīng)將視為對本發(fā)明范圍的限制,對本發(fā)明來說,可以允許其他等效的實施例。
圖1是示例說明根據(jù)本發(fā)明的一個實施例的大規(guī)模并行計算機系統(tǒng)的框圖。
圖2是進一步示例說明根據(jù)本發(fā)明的一個實施例的大規(guī)模并行計算機系統(tǒng)的框圖。
圖3是進一步示例說明根據(jù)本發(fā)明的一個實施例的大規(guī)模并行計算機系統(tǒng)的方面的框圖。
圖4是根據(jù)本發(fā)明的一個實施例由服務(wù)節(jié)點維護的計算節(jié)點狀態(tài)表的框圖。
圖5是示例說明根據(jù)本發(fā)明的一個實施例用于準備計算節(jié)點集以便在高度并行或分布式計算機系統(tǒng)上執(zhí)行計算作業(yè)的方法的流程圖。
圖6是根據(jù)本發(fā)明的一個實施例示例說明了高度并行或分布式計算機系統(tǒng)的計算節(jié)點執(zhí)行計算作業(yè)的方法的流程圖。
圖7A-7B示例說明根據(jù)本發(fā)明的一個實施例由高度并行或分布式計算機系統(tǒng)的計算節(jié)點維護的頁表。
具體實施例方式
本發(fā)明的實施例提供了一種用于減少高度并行或分布式計算機中的程序加載時間的方法。這通過下述操作來實現(xiàn)只要可能的話,就重新使用由高度并行或分布式計算機系統(tǒng)的特定計算節(jié)點處的程序的先前調(diào)用所加載的信息。由于當分派作業(yè)以便執(zhí)行時傳送到計算節(jié)點的一些數(shù)據(jù)段是存儲器中不可變的程序的二進制指令,所以根據(jù)相同程序的先前調(diào)用,能夠節(jié)省存儲頁。因此,本發(fā)明的實施例避免了否則每次控制系統(tǒng)將作業(yè)分派到特定計算節(jié)點時將會出現(xiàn)的頁錯誤。同時,當指示開始執(zhí)行特定作業(yè)時,給定的計算節(jié)點不必等待將二進制指令分頁(page)到存儲器中。
在此參考由IBM開發(fā)的深藍體系結(jié)構(gòu)來描述本發(fā)明的實施例。在此所述的實施例對于包括上千個處理節(jié)點的大規(guī)模并行計算機系統(tǒng)、諸如深藍系統(tǒng)而言特別有利。然而,本發(fā)明的實施例可以適用于采用被配置成經(jīng)由網(wǎng)絡(luò)通信的多個CPU的各種并行計算機系統(tǒng)中。例如,實施例可以很容易地適用在諸如集群或網(wǎng)格之類的分布式體系結(jié)構(gòu)中,在這種體系結(jié)構(gòu)中,每個處理節(jié)點可能是經(jīng)由本地、地區(qū)或全球網(wǎng)絡(luò)彼此通信的計算機系統(tǒng)。
在下文中,描述本發(fā)明的實施例,然而,應(yīng)當理解,本發(fā)明不局限于具體描述的實施例。事實上,下述特征和元素的任意組合,不管是否與不同實施例有關(guān),預(yù)期都可以實現(xiàn)和實施本發(fā)明。此外,在不同實施例中,本發(fā)明提供了很多優(yōu)于現(xiàn)有技術(shù)的優(yōu)點。然而,盡管本發(fā)明的實施例可以實現(xiàn)優(yōu)于其他可能的解決方案和/或現(xiàn)有技術(shù)的優(yōu)點,但是,是否由給定的實施例實現(xiàn)特定的優(yōu)點,不會對本發(fā)明構(gòu)成限制。因此,下述方面、特征、實施例和優(yōu)點僅僅是示例性的,并且不應(yīng)視為附加權(quán)利要求的要素或限制,除非在一個或多個權(quán)利要求中明確地記載了。同樣地,對“本發(fā)明”的描述不應(yīng)當被視為對在此公開的任何發(fā)明主題的概括,并且也不應(yīng)當被視為附加權(quán)利要求的要素或限制,除非在一個或多個權(quán)利要求中明確地描述了。
本發(fā)明的一個實施例被實現(xiàn)為用于與計算機系統(tǒng)、諸如例如圖1所示和以下所述的計算環(huán)境100一起使用的程序產(chǎn)品。程序產(chǎn)品中的程序(一個或多個)定義了實施例(包括在此所述的方法)中的功能,并且能夠被包含在多種信號承載介質(zhì)上。示例性的信號承載介質(zhì)包括但不局限于(i)在不可寫的存儲介質(zhì)(例如,計算機內(nèi)的只讀存儲器設(shè)備,諸如CD-R0M驅(qū)動器可讀的CD-ROM盤)上永久存儲的信息;(ii)在可寫的存儲介質(zhì)(例如,盤驅(qū)動器或硬盤驅(qū)動器內(nèi)的軟盤)上存儲的可變信息;以及(iii)通過通信介質(zhì)、諸如通過計算機或電話網(wǎng)絡(luò)(包括無線通信)傳送到計算機的信息。后一種實施例特別包括了從互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)下載的信息。這種信號承載介質(zhì)在攜帶有指示本發(fā)明的功能的計算機可讀指令時,表示本發(fā)明的實施例。
通常,為實現(xiàn)本發(fā)明的實施例而執(zhí)行的例程可以是操作系統(tǒng)或特定應(yīng)用的一部分、組件、程序、模塊、對象或指令序列。本發(fā)明的計算機程序通常由將由本機轉(zhuǎn)換成機器可讀格式并由此轉(zhuǎn)換為可執(zhí)行指令的大量指令組成。此外,程序包括對于程序而言本地駐留的或者在存儲器中或存儲設(shè)備上找到的變量和數(shù)據(jù)結(jié)構(gòu)。另外,可以基于在本發(fā)明的具體實施例中實現(xiàn)程序的應(yīng)用,標識下文所述的各種程序。然而,應(yīng)當意識到,下文的任何特定術(shù)語僅僅是為了方便而使用的,由此本發(fā)明不應(yīng)當被限制為僅僅用在由這種術(shù)語標識和/或暗示的任何特定應(yīng)用中。
圖1是根據(jù)本發(fā)明的一個實施例示例說明了高度并行的計算機系統(tǒng)100的框圖。特別地,計算機系統(tǒng)100示例說明了深藍系統(tǒng)的高級框圖。如圖所示,計算機系統(tǒng)100包括計算節(jié)點集110和輸入/輸出(I/O)節(jié)點集112。計算節(jié)點110提供了計算機系統(tǒng)100的計算能力。在一個實施例中,每一計算節(jié)點110均包括一個或多個CPU。另外,每一計算節(jié)點110都可以包括用來存儲程序指令和對其執(zhí)行指令的數(shù)據(jù)集的存儲器。
在一個實施例中,計算節(jié)點110可以被配置成對于同一程序的多次調(diào)用重新使用與在計算節(jié)點110上執(zhí)行的程序有關(guān)的頁表。眾所周知,頁表提供了頁面的索引以及它們的物理和邏輯地址。下面更詳細地描述程序頁表的重新使用。
I/O節(jié)點112可以經(jīng)由功能網(wǎng)絡(luò)160提供計算節(jié)點110和文件服務(wù)器130間的物理接口。在一個實施例中,計算節(jié)點110和I/O節(jié)點112經(jīng)由控制網(wǎng)絡(luò)150和/或功能網(wǎng)絡(luò)160與服務(wù)器130、前端節(jié)點120和服務(wù)節(jié)點140進行通信。在深藍系統(tǒng)中,I/O節(jié)點112和計算節(jié)點110的彼此不同之處僅在于通過誰來啟用網(wǎng)絡(luò)接口,以及系統(tǒng)100如何使用該節(jié)點。I/O節(jié)點112也可以被配置成執(zhí)行便于計算系統(tǒng)100的控制、引導、作業(yè)運行和調(diào)試的進程。這有助于簡化在每一計算節(jié)點110上運行的操作系統(tǒng)內(nèi)核,因為每一計算節(jié)點110僅需要與幾個I/O節(jié)點112進行通信。前端節(jié)點120存儲由與系統(tǒng)100進行交互的用戶使用的編譯器和其他應(yīng)用。典型地,用戶訪問前端節(jié)點120,提交程序以便進行編譯,以及將作業(yè)提交給服務(wù)節(jié)點140。
服務(wù)節(jié)點140可以包括由系統(tǒng)100提供的系統(tǒng)數(shù)據(jù)庫和所有管理工具。通常,服務(wù)節(jié)點140包括被配置成處理計算節(jié)點110上的軟件程序和數(shù)據(jù)的調(diào)度和加載的計算系統(tǒng)。在一個實施例中,服務(wù)節(jié)點可以被配置成組合一組計算節(jié)點110(被稱為塊),以及將作業(yè)分派到一個塊,以便執(zhí)行。服務(wù)節(jié)點140通常是包括操作系統(tǒng)、存儲器、存儲設(shè)備和控制臺(未示出)的計算機系統(tǒng)。例如,深藍/P系統(tǒng)使用運行Linux操作系統(tǒng)的計算機系統(tǒng)。服務(wù)節(jié)點140經(jīng)由控制網(wǎng)絡(luò)150與計算節(jié)點110進行通信??刂凭W(wǎng)絡(luò)150為服務(wù)節(jié)點140提供通信信道,以便控制系統(tǒng)100的操作方面。
圖2是根據(jù)本發(fā)明的一個實施例進一步示例說明大規(guī)模并行計算機系統(tǒng)的方面的框圖。特別地,圖2示出了示例說明深藍/P計算機系統(tǒng)的方面的框圖。如上所述,深藍/P是設(shè)計具有最大73,728個計算節(jié)點110的可擴展系統(tǒng)。在深藍/P系統(tǒng)中,每一計算節(jié)點110封裝在節(jié)點卡上,并且由具有存儲器214和四個CPU的單個專用集成電路(ASIC)212組成。節(jié)點板220容納32個節(jié)點卡,每個節(jié)點卡具有一節(jié)點110。因此,每一節(jié)點板具有32個節(jié)點,每個節(jié)點110具有存儲器214和4個CPU。機架230是保持32個節(jié)點板220的殼體。整個深藍/P系統(tǒng)將被容納在72個機架130中,并且每個機架中具有32個節(jié)點板220。因此,整個深藍/P系統(tǒng)將具有最大294,912個CPU(72個機架×32個節(jié)點板×32個節(jié)點×4個CPU)。
深藍/P計算機系統(tǒng)包括多個數(shù)據(jù)通信網(wǎng)絡(luò)。位于一些節(jié)點板220上的I/O處理器處理服務(wù)節(jié)點140和一組計算節(jié)點110間的數(shù)據(jù)通信。在一個實施例中,每一I/O節(jié)點112管理功能網(wǎng)絡(luò)160上的多至1024個計算節(jié)點110的數(shù)據(jù)通信。在深藍/P系統(tǒng)中,將73,728個計算節(jié)點110和1024個I/O節(jié)點配置為經(jīng)由邏輯樹網(wǎng)絡(luò)和環(huán)形(torus)網(wǎng)絡(luò)進行通信。環(huán)形網(wǎng)絡(luò)以類似網(wǎng)格的結(jié)構(gòu)連接計算節(jié)點110,該類似網(wǎng)格的結(jié)構(gòu)允許每一計算節(jié)點110直接與其六個最近的鄰居節(jié)點進行通信。節(jié)點110可以使用非常公知的消息傳遞接口(MPI)、在開發(fā)用于高度并行或集群計算機系統(tǒng)(例如,系統(tǒng)100)的應(yīng)用時使用的應(yīng)用編程接口,經(jīng)由環(huán)形網(wǎng)絡(luò)進行通信。任何一個計算節(jié)點110都可以經(jīng)由環(huán)形網(wǎng)絡(luò)將消息路由到另一計算節(jié)點110。
圖3是根據(jù)本發(fā)明的一個實施例進一步示例說明大規(guī)模并行計算機系統(tǒng)的方面的框圖。特別地,圖3進一步示例說明了深藍/P計算機系統(tǒng)的系統(tǒng)體系結(jié)構(gòu)的視圖。圖3包括被示為連接到控制系統(tǒng)208的計算核心210的計算機系統(tǒng)100的所有計算節(jié)點110的表示。計算核心210經(jīng)由控制系統(tǒng)網(wǎng)絡(luò)150與控制系統(tǒng)208的服務(wù)節(jié)點140進行通信。把計算核心210通過將每一I/O節(jié)點112與計算節(jié)點集110連接的硬件控制器270連接到控制系統(tǒng)網(wǎng)絡(luò)150。
計算機系統(tǒng)100可以被描述為具有I/O節(jié)點面的計算節(jié)點核心210,其中,由同一I/O節(jié)點112管理與1024個計算節(jié)點110的通信。在深藍系統(tǒng)中,I/O節(jié)點112通過樹網(wǎng)絡(luò)214連接到計算節(jié)點110,并且通過千兆位以太網(wǎng)(例如,網(wǎng)絡(luò)160),在功能上還具有廣域網(wǎng)能力。
在一個實施例中,硬件控制器270使用JTAG網(wǎng)絡(luò)219,與計算節(jié)點110進行通信。如已知的那樣,JTAG是低級通信協(xié)議,其可以用來初始化計算節(jié)點以及使它們準備好具有加載的系統(tǒng)映像。JTAG網(wǎng)絡(luò)也可以用來執(zhí)行各種其他低級監(jiān)視和支持功能。硬件控制器270駐留在每一機架230中,并且為控制系統(tǒng)208提供接口,以便配置計算節(jié)點110以及將程序指令和數(shù)據(jù)加載到計算節(jié)點的存儲器214中。在深藍/P計算機系統(tǒng)中,每一節(jié)點板和中平面的封裝包括IDo芯片。IDo芯片為使用經(jīng)由JTAG網(wǎng)絡(luò)219發(fā)送的UDP包從服務(wù)節(jié)點接收命令的25MHz FPGA。
另外,如圖3所示,計算核心210還經(jīng)由功能網(wǎng)絡(luò)160與文件服務(wù)器130和前端節(jié)點120進行通信。功能網(wǎng)絡(luò)160可以是千兆位以太網(wǎng)。文件服務(wù)器130存儲用于用戶應(yīng)用和系統(tǒng)映像的數(shù)據(jù)。各個計算節(jié)點通過與I/O節(jié)點112通信,來訪問文件服務(wù)器。例如,計算節(jié)點可以經(jīng)由NFS共享來訪問文件服務(wù)器130。在一個實施例中,控制系統(tǒng)212包括被配置成保持用于指定與計算節(jié)點110有關(guān)的狀態(tài)信息的數(shù)據(jù)表的數(shù)據(jù)庫250。中平面管理控制系統(tǒng)(MMCS)144可以被配置成對將計算核心210中的硬件分配給不同計算作業(yè)進行管理。控制系統(tǒng)208還連接到功能網(wǎng)絡(luò)160。在一個實施例,該連接允許控制系統(tǒng)208檢測在加載了系統(tǒng)映像和數(shù)據(jù)文件后計算節(jié)點110何時完成引導過程。控制系統(tǒng)208進一步包括用于由用戶和系統(tǒng)管理員使用的控制臺260。
再次參考圖3,計算核心210示例說明了容納在機架230中的計算節(jié)點110。在深藍系統(tǒng)中,計算節(jié)點被分組成處理集(pset)。pset是在一個集合中組合在一起用于與特定I/O節(jié)點112進行通信的64個節(jié)點所構(gòu)成的組。在一個實施例中,計算核心210可以被劃分成最大多個pset,每個pset都具有一個運行Linux操作系統(tǒng)內(nèi)核的I/O節(jié)點112,以及64個運行作為系統(tǒng)映像經(jīng)由控制網(wǎng)絡(luò)150傳送的計算節(jié)點內(nèi)核(CNK)的計算節(jié)點110。如所描述的那樣,I/O節(jié)點112為給定pset中的計算節(jié)點提供功能網(wǎng)絡(luò)160上的通信。在深藍/P系統(tǒng)中,I/O節(jié)點112可以被配置成在8和128個計算節(jié)點間進行通信。
每一計算節(jié)點110都包括在計算節(jié)點110的存儲器214中存儲的系統(tǒng)映像和數(shù)據(jù)文件218。系統(tǒng)映像文件和計算節(jié)點內(nèi)核(CNK)218包括系統(tǒng)文件,諸如操作系統(tǒng)內(nèi)核。計算節(jié)點內(nèi)核218存儲在每一計算節(jié)點110的存儲器214中。在指示計算節(jié)點110執(zhí)行任何用戶應(yīng)用前,通常加載系統(tǒng)映像文件,并且計算節(jié)點內(nèi)核218通常開始執(zhí)行。
為了在計算機系統(tǒng)100上執(zhí)行計算作業(yè),請求服務(wù)節(jié)點140將計算節(jié)點集110分配到一個塊以便運行作業(yè)。由于計算節(jié)點110可能不包括任何本地永久存儲器,諸如硬盤驅(qū)動器,因此,計算節(jié)點110必須加載有適當?shù)能浖员氵\行作業(yè)。在一個實施例中,用戶指定所需劃分的特性以便執(zhí)行作業(yè)。調(diào)度器280選擇計算節(jié)點集110來形成用來執(zhí)行作業(yè)的塊。一旦選定了計算節(jié)點,就由服務(wù)節(jié)點140使用控制網(wǎng)絡(luò)150把由調(diào)度器280選擇的計算節(jié)點110(以及相應(yīng)的I/O節(jié)點112)配置成一個塊。一旦創(chuàng)建了塊,就可以通過經(jīng)由網(wǎng)絡(luò)150和/或160與I/O節(jié)點112通信的控制系統(tǒng)208來分派作業(yè)。
在一個實施例中,服務(wù)節(jié)點140使用數(shù)據(jù)庫250和節(jié)點狀態(tài)表252來維護每一計算節(jié)點110上所調(diào)用的最后一個程序的表。當用戶調(diào)用作業(yè)時,控制系統(tǒng)208確定最后運行正在分派的相同程序的任何計算節(jié)點110當前是否可用。如果計算節(jié)點110可用,那么控制系統(tǒng)208指示這些計算節(jié)點110保留與作業(yè)請求中標識的程序相關(guān)的頁表。除與正分派的程序有關(guān)的一個頁表外的所有頁表都被計算節(jié)點丟棄。另外,來自被標記為無效或可寫的保留頁表的條目可以從保留頁表中移除?,F(xiàn)在已經(jīng)從最后運行正在分派的程序的進程的存儲空間中清除了由該程序的先前執(zhí)行所創(chuàng)建或修改的任何數(shù)據(jù)。同時,保留了被標記為只讀或可執(zhí)行的頁,并且當由計算節(jié)點110執(zhí)行正在分派的作業(yè)時,所述頁將不需要被加載,或者不會導致頁錯誤(頁錯誤是當在物理存儲器中未映射所需頁時由存儲器管理單元產(chǎn)生的異常)。
現(xiàn)在,將程序分派到計算節(jié)點110??刂葡到y(tǒng)208指示計算節(jié)點110使用所保留的頁表,而不是為正在分派的進程創(chuàng)建新頁表。作為計算作業(yè)的一部分的任何其他進程從清除存儲空間開始,并且可以通過使用按需分頁(paging)進程,使用功能網(wǎng)絡(luò)和I/O節(jié)點112將頁面引入存儲器中。當程序開始執(zhí)行時,它嘗試從存儲器單元中加載第一條指令。通常,這將會觸發(fā)頁錯誤。該異常被傳遞到操作系統(tǒng),作為響應(yīng),操作系統(tǒng)將所需頁面從某一輔助存儲源加載到物理存儲器中。然而,因為來自保留頁表的信息包含有效的映射,所以程序已經(jīng)準備好訪問信息二進制指令。對于用于該程序的所有指令而言,這種情況都將會發(fā)生。因此,可以基本上減少與保留頁表有關(guān)的應(yīng)用的加載時間。這特別適用于大規(guī)模并行系統(tǒng)、諸如深藍系統(tǒng)的情形,該大規(guī)模并行系統(tǒng)可以分派具有不同數(shù)據(jù)集的相同作業(yè)達數(shù)千、數(shù)百萬、甚至數(shù)十億次。
圖4是根據(jù)本發(fā)明的一個實施例由服務(wù)節(jié)點140維護的計算節(jié)點狀態(tài)表252的框圖。在一個實施例中,節(jié)點狀態(tài)表252可以被存儲為數(shù)據(jù)庫250的一部分。如圖所示,節(jié)點狀態(tài)表252包括計算節(jié)點110的列表,該計算節(jié)點是與在每一節(jié)點上執(zhí)行的最后一個作業(yè)匹配的給定系統(tǒng)的一部分。因此,當用戶分派作業(yè)請求時,控制系統(tǒng)208可以使用節(jié)點狀態(tài)表252來識別先前執(zhí)行正在分派的作業(yè)的節(jié)點。
圖5是根據(jù)本發(fā)明的一個實施例用于準備計算節(jié)點集110來在高度并行或分布式計算機系統(tǒng)上執(zhí)行計算作業(yè)的方法的流程圖。方法500從步驟510開始,其中,控制系統(tǒng)208接收作業(yè)描述以便分派到計算核心210。在一個實施例中,作業(yè)描述可以指定要執(zhí)行何種應(yīng)用程序、所期望的性能特性,諸如要使用的執(zhí)行所述作業(yè)的計算節(jié)點110的數(shù)量或者完成作業(yè)所需的估計時間,并且作業(yè)描述可以進一步包括與給定作業(yè)有關(guān)的數(shù)據(jù)集。
在步驟520,控制系統(tǒng)208可以確定最后執(zhí)行在作業(yè)描述中指定的應(yīng)用程序的計算節(jié)點110是否可用。如果不可用,那么在步驟525,控制系統(tǒng)208將作業(yè)調(diào)度和分派到計算核心210。另外,一旦計算節(jié)點110完成了處理作業(yè),控制系統(tǒng)208就可以在節(jié)點狀態(tài)表252中記錄使用了哪些計算節(jié)點110來執(zhí)行所述作業(yè)。
否則,如果最后執(zhí)行由作業(yè)描述所指定的應(yīng)用程序的計算節(jié)點110可用,那么在步驟530,控制系統(tǒng)208識別在其上最后執(zhí)行該應(yīng)用程序的計算節(jié)點集。在步驟540,控制系統(tǒng)208向所識別的計算節(jié)點110發(fā)送用以保留用于在作業(yè)描述中指定的應(yīng)用程序的頁表的消息。在一個實施例中,控制系統(tǒng)經(jīng)由控制網(wǎng)絡(luò)270與受影響的計算節(jié)點110進行通信。如下所述的圖6示例說明了響應(yīng)于接收到保留用于應(yīng)用程序的頁表的消息而由計算節(jié)點110執(zhí)行的動作。
在步驟550,將作業(yè)分派到計算節(jié)點,以便執(zhí)行。一旦計算節(jié)點110完成了作業(yè)的執(zhí)行,則在步驟560,控制系統(tǒng)208就可以在節(jié)點狀態(tài)表252中記錄使用了哪些計算節(jié)點110來執(zhí)行所述作業(yè)。
圖6是根據(jù)本發(fā)明的一個實施例示例說明了并行或分布式計算機系統(tǒng)的節(jié)點執(zhí)行計算作業(yè)的方法600的流程圖。方法600在步驟610開始,其中,計算節(jié)點110經(jīng)由控制網(wǎng)絡(luò)150從控制系統(tǒng)208接收到用于保留來自相同應(yīng)用的在前調(diào)用的頁表的消息。在步驟620,計算節(jié)點110識別與用戶應(yīng)用有關(guān)的頁表。此后,開始包括步驟630-660的循環(huán)。在每次經(jīng)過該循環(huán)時,計算節(jié)點110確定是保留還是丟棄來自與應(yīng)用有關(guān)的頁表的條目。在步驟630,計算節(jié)點110確定正在考慮中的頁是否被標記為可寫。如果是的話,則在步驟640,從頁表中清除該頁并且從存儲器丟棄該頁。否則,在步驟650,如果頁表中的條目未被標記為可寫,那么,計算節(jié)點110保留該頁表條目,以便在與該頁表有關(guān)的應(yīng)用程序的后續(xù)調(diào)用期間使用。相反地,在步驟630,計算節(jié)點110可以確定頁表中的條目是否被標記為只讀(即,被標記為可執(zhí)行),并且因此保留或丟棄該頁。在丟棄或保留正在考慮中的頁表條目后,在步驟660,計算節(jié)點110確定是否需要估計更多頁表條目。如果是的話,則計算節(jié)點110返回到步驟630,并且估計另一頁表條目。
否則,在步驟660,一旦已經(jīng)估計了頁表中的所有條目,則計算節(jié)點110就可以通過使用來自同一應(yīng)用程序的先前調(diào)用的修改了的頁表,來開始執(zhí)行應(yīng)用程序。因此,再入的頁(即,僅包括可執(zhí)行指令的頁)在頁表中保持有效,并且不必為了加載程序而被引入到計算節(jié)點的物理存儲器中。
圖7A和7B根據(jù)本發(fā)明的一個實施例示例說明由高度并行或分布式計算機系統(tǒng)的計算節(jié)點110維護的頁表。如圖所示,圖7A表示在兩個用戶應(yīng)用(被標記為P0和P1)已經(jīng)完成執(zhí)行后計算節(jié)點110的狀態(tài)。虛擬存儲器表710示出了由進程P0使用的4個頁面(頁0、1、2和3)。進程P0包括三頁(頁0、1和3)可執(zhí)行指令,以及被標記為不可執(zhí)行(即,被標記為可寫數(shù)據(jù))的單個頁面(頁2)。頁表715將進程P0使用的虛擬存儲器地址映射到物理存儲器730中的地址。特別地,頁0、1、2和3被分別映射到物理存儲器730中的頁1、4、3和7。如圖所示,頁表715包括示出了從所處的虛擬頁到物理存儲器730的映射的列716,表示頁是否可執(zhí)行的列717,以及表示頁表條目是否有效的列718。類似地,頁表725將進程P1使用的頁720映射到物理存儲器730中的頁。進程P1包括單頁可執(zhí)行指令(頁1)以及三個數(shù)據(jù)頁(頁1、2和3)。頁表725將進程P1使用的虛擬存儲器地址映射到物理存儲器730中的地址。如圖所示,頁0、1、2和3被分別映射到物理存儲器730中的頁0、2、5和6。
圖7B示例說明了在從控制系統(tǒng)208接收到準備第二次執(zhí)行進程P0的消息后圖7A的計算節(jié)點110的狀態(tài)。作為響應(yīng),計算節(jié)點110已經(jīng)從頁表715中丟棄了某些條目,并且改變了其他條目的值。例如,計算節(jié)點110可以根據(jù)圖6所示的方法600,修改頁表715。如圖所示,已經(jīng)丟棄了用于進程P1的頁表725。然而,因為計算節(jié)點110正打算再次執(zhí)行P0,所以已經(jīng)保留了頁表715。頁表715中的條目繼續(xù)將頁0、1和3從虛擬存儲空間710分別映射到物理存儲器735中的頁1、4和7。然而,已經(jīng)移除了用于虛擬存儲頁2的頁表條目。如圖所示,頁表715現(xiàn)在示出了用于頁2的條目是無效的。另外,所示的值存在于物理存儲器735的頁3中,其中,在進程P0的先前調(diào)用被顯示為已經(jīng)設(shè)置為空期間,映射該頁。當再一次執(zhí)行程序P0時,將不會出現(xiàn)頁0、1和3的頁錯誤。
可以使用本發(fā)明的實施例來減少在分布式或高度并行的計算機系統(tǒng)中加載程序以便執(zhí)行所需的時間。這通過重新使用在特定計算節(jié)點處在程序的先前調(diào)用期間創(chuàng)建的某些頁表條目來實現(xiàn)。因此,整體上減少了必須分頁到計算節(jié)點的存儲器中的頁數(shù),從而減少了程序加載時間。在可以多次執(zhí)行相同作業(yè)的大規(guī)模并行系統(tǒng)和分布式或集群系統(tǒng)中,對整個系統(tǒng)性能的改進可能是很重要的,即使各個計算節(jié)點處的改進可能是相對最小的。
盡管上文針對本發(fā)明的實施例進行了描述,但是在不背離本發(fā)明的基本范圍的情況下,可以設(shè)計出本發(fā)明的其他實施例和進一步的實施例,并且本發(fā)明的范圍由以下的權(quán)利要求來確定。
權(quán)利要求
1.一種在包括若干個處理節(jié)點的計算系統(tǒng)上加載程序的方法,包括如果處理節(jié)點可用,則識別先前執(zhí)行該程序的多個處理節(jié)點,其中,該程序與提交用于由計算系統(tǒng)執(zhí)行的計算作業(yè)有關(guān);向每一個識別的處理節(jié)點傳送用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息;以及將該計算作業(yè)分派到多個處理節(jié)點。
2.如權(quán)利要求1所述的方法,進一步包括記錄向其分派了該計算作業(yè)的多個計算節(jié)點的指示。
3.如權(quán)利要求1所述的方法,其中,每一處理節(jié)點都至少包括CPU和存儲器。
4.如權(quán)利要求1所述的方法,其中,該計算系統(tǒng)包括并行計算系統(tǒng)。
5.如權(quán)利要求1所述的方法,其中,該計算系統(tǒng)包括分布式計算系統(tǒng)。
6.如權(quán)利要求1所述的方法,其中,如果最后執(zhí)行該程序的多個處理節(jié)點不可用,則分派該計算作業(yè),以便在計算系統(tǒng)上執(zhí)行,并且記錄把該計算作業(yè)分派給哪個處理節(jié)點的指示。
7.如權(quán)利要求1所述的方法,進一步包括響應(yīng)于接收到用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息,而識別與該程序有關(guān)的頁表;以及對每一頁表條目,確定該頁表條目是否引用與該程序有關(guān)的可執(zhí)行指令序列;如果該頁表條目引用可執(zhí)行指令序列,則將該條目保留在該頁表中;以及如果該頁表條目不引用可執(zhí)行指令序列,則從該頁表中丟棄該條目。
8.如權(quán)利要求7所述的方法,進一步包括擦除存儲器中由所丟棄的頁表條目所映射到的物理存儲器地址的內(nèi)容。
9.一種并行計算系統(tǒng),包括多個計算節(jié)點;以及控制系統(tǒng),被配置成通過執(zhí)行操作,在多個計算節(jié)點中的至少一些計算節(jié)點上執(zhí)行計算作業(yè),所述操作包括如果處理節(jié)點可用,則識別先前執(zhí)行程序的多個處理節(jié)點,其中,該計算作業(yè)標識將在該并行計算系統(tǒng)上執(zhí)行的程序;向計算節(jié)點集中的至少一些計算節(jié)點傳送用于保留與程序的先前執(zhí)行有關(guān)的頁表的消息;以及將該計算作業(yè)分派到包括在該計算節(jié)點集中的至少一些計算節(jié)點。
10.如權(quán)利要求9所述的并行計算系統(tǒng),其中,該操作進一步包括記錄把該計算作業(yè)分派給哪個計算節(jié)點的指示。
11.如權(quán)利要求9所述的并行計算系統(tǒng),其中,每一計算節(jié)點都至少包括CPU和存儲器。
12.如權(quán)利要求9所述的并行計算系統(tǒng),其中,分派該計算作業(yè)的操作包括將該程序處理的數(shù)據(jù)傳送到該計算節(jié)點集。
13.如權(quán)利要求9所述的并行計算系統(tǒng),其中,如果最后執(zhí)行程序的計算節(jié)點集不可用,則分派該計算作業(yè),以便在并行計算系統(tǒng)上執(zhí)行,并且記錄向其分派了該計算作業(yè)的計算節(jié)點的指示。
14.如權(quán)利要求9所述的并行計算系統(tǒng),其中,頁表包括從分配用于存儲該程序和與該程序有關(guān)的數(shù)據(jù)的虛擬存儲空間到與特定計算節(jié)點有關(guān)的物理存儲空間的映射。
15.如權(quán)利要求9所述的并行計算系統(tǒng),其中,該操作進一步包括響應(yīng)于接收到用于保留與該程序的先前執(zhí)行有關(guān)的頁表的消息,而識別與該程序有關(guān)的頁表;以及對每一頁表條目,確定該頁表條目是否引用與該程序有關(guān)的可執(zhí)行指令序列;如果該頁表條目引用可執(zhí)行指令序列,則將該條目保留在該頁表中;以及如果該頁表條目不引用可執(zhí)行指令序列,則從該頁表中丟棄該條目。
16.如權(quán)利要求15所述的并行計算系統(tǒng),其中,所述操作進一步包括擦除存儲器中由所丟棄的頁表條目映射到的物理存儲器地址的內(nèi)容。
全文摘要
本發(fā)明的實施例提供了一種用于減少高度并行或分布式計算機中的程序加械時間的方法。在一個實施例中,這通過有選擇地重新使用在高度并行或分布式計算機系統(tǒng)的特定節(jié)點處程序的先前調(diào)用期間生成的頁表中的條目來實現(xiàn)。
文檔編號G06F9/445GK101051302SQ20071008785
公開日2007年10月10日 申請日期2007年3月21日 優(yōu)先權(quán)日2006年4月6日
發(fā)明者丹尼爾·P.·考爾茲, 杰伊·S.·布賴恩特, 達美施·J.·帕特爾 申請人:國際商業(yè)機器公司