一種作業(yè)調(diào)度方法和計算裝置制造方法
【專利摘要】本發(fā)明提供了一種作業(yè)調(diào)度方法和計算裝置,該方法包括:在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗口;縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填;在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),并針對-被終止的回填作業(yè)設置檢查點;并在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。采用本發(fā)明提供的作業(yè)調(diào)度方法,能夠提高系統(tǒng)資源的利用率,減少作業(yè)的等待時間。
【專利說明】一種作業(yè)調(diào)度方法和計算裝置
【技術領域】
[0001]本發(fā)明涉及計算裝置【技術領域】,尤其涉及一種作業(yè)調(diào)度方法和計算裝置。
【背景技術】
[0002]并行作業(yè)調(diào)度系統(tǒng)一直是超級計算機系統(tǒng)非常重要的組成部分,它根據(jù)用戶的作業(yè)資源請求分配可用的計算節(jié)點給并行程序。并行作業(yè)會占用分配的計算節(jié)點一直到作業(yè)運行完成/失敗,或由于作業(yè)運行時間超過運行腳本所指定的運行估計時間而被系統(tǒng)進程殺死。由于資源有限,并行作業(yè)在進入作業(yè)隊列后一般不能立即得到所申請的計算資源,往往要等待一段時間。并行作業(yè)調(diào)度系統(tǒng)的主要目標是減少平均作業(yè)等待時間,并且最大化系統(tǒng)的資源利用率,同時對所有作業(yè)保持一定的公平性。
[0003]經(jīng)過幾十年的發(fā)展,并行作業(yè)調(diào)度技術已相當成熟,近年少有重大進展。盡管學術界提出了一些新策略和新算法,例如動態(tài)分割技術和組調(diào)度技術。但這些技術由于實際使用及其它因素的限制并沒有得到大規(guī)模應用。到目前為止,基于先來先服務(First ComeFirst Served, FCFS)的回填算法依然是多數(shù)超級計算機和集群系統(tǒng)廣泛采用的并行作業(yè)調(diào)度算法。該算法首先由美國阿貢國家實驗室為當時的IBM SPl并行計算系統(tǒng)設計的,并在EASY調(diào)度系統(tǒng)中得以實現(xiàn)。該算法的基本思想非常簡單:高性能計算機系統(tǒng)在按照作業(yè)優(yōu)先級調(diào)度隊列中并行作業(yè)運行的時候,系統(tǒng)中會留下一些難以利用的資源“孔洞”,這時系統(tǒng)會從等待隊列中找出那些適合的低優(yōu)先級短作業(yè)并在不影響高優(yōu)先級作業(yè)運行的前提下得到提前運行。從而提高了系統(tǒng)的利用率,縮短了作業(yè)的平均等待時間。目前主流的并行作業(yè)調(diào)度系統(tǒng),如LSF、Moab、Mau1、PBS/Torque和LoadLeveler所采用的默認設置都是基于FCFS回填算法的變種。
[0004]雖然回填算法能夠利用低優(yōu)先級的小作業(yè)填充高優(yōu)先級作業(yè)留下的資源“孔洞”,提高了利用率。然而,在實際應用中用戶提交的作業(yè)運行時間估計一般偏大,導致很多作業(yè)不能回填。從而造成計算機系統(tǒng)的利用率仍然較低,在很多資源空閑的時候,依然有很多作業(yè)在隊列中等待。
[0005]可見,現(xiàn)有技術中的作業(yè)調(diào)度方案不能有效的利用計算機的計算資源。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種作業(yè)調(diào)度方法和計算裝置,提高系統(tǒng)資源的利用率,減少作業(yè)的等待時間。
[0007]本發(fā)明提供了一種作業(yè)調(diào)度方法,包括:
[0008]在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗口 ;
[0009]縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填;
[0010]在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),并針對在被終止的回填作業(yè)中設置檢查點;[0011]在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計
算任務。
[0012]優(yōu)選的,所述縮短隊首作業(yè)之外的其他非隊首作業(yè)對應的運行時間估計,具體包括:
[0013]將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P,其中,0〈ρ〈1。
[0014]優(yōu)選的,所述將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子p,具體包括:
[0015]在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。
[0016]優(yōu)選的,所述根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填具體包括:
[0017]在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計小于所述回填窗口時,判定所述非隊首作業(yè)可以回填。
[0018]優(yōu)選的,所述根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填具體包括:
[0019]在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計大于所述回填窗口時,判斷在所述回填窗口結束時所述非隊首作業(yè)和所述隊首作業(yè)是否可以同時運行,若是,則判定所述非隊首作業(yè)能夠回填。
[0020]本發(fā)明提供了一種計算裝置,包括:
[0021]回填窗口計算模塊,在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗口;
[0022]回填模塊,用于縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填;
[0023]計算模塊,用于在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),還用于在被終止的回填作業(yè)中添加檢查點,并在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。
[0024]優(yōu)選的,所述回填模塊,用于將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子p,其中,0〈ρ〈1。
[0025]優(yōu)選的,所述回填模塊具體用于在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。
[0026]本發(fā)明中,縮短非隊首作業(yè)的運行估計時間,從而利于非隊首作業(yè)的回填,提高系統(tǒng)的資源利用率。另一方面,為了避免因縮短非隊首作業(yè)的運行估計時間而導致非隊首作業(yè)在回填窗口結束時仍在運行進而導致系統(tǒng)的計算資源不能運行隊首作業(yè)的情況,本發(fā)明中,還在回填窗口結束時且果剩余計算資源不足以運行當前的隊首作業(yè)時停止回填作業(yè),從而保證隊首作業(yè)的運行。另外,本發(fā)明中,能夠使計算裝置在再次重啟所述回填作業(yè)時,僅執(zhí)行未完成部分的計算任務,而無需針對一個回填作業(yè)多次執(zhí)行相同的計算任務,這樣也能夠進一步提高系統(tǒng)計算資源的利用率。
【專利附圖】
【附圖說明】[0027]圖1為本發(fā)明實施例一提供的一種作業(yè)調(diào)度方法的流程示意圖;
[0028]圖2為本發(fā)明實施例一提供的作業(yè)調(diào)度方法的一種具體實現(xiàn)方式;
[0029]圖3為本發(fā)明實施例提供的作業(yè)調(diào)度方法中縮短運行時間估計的一種實現(xiàn)方式;
[0030]圖4為本發(fā)明實施例提供的作業(yè)調(diào)度方法中中止回填作業(yè)時的處理;
[0031]圖5 Ca)為本發(fā)明實施例提供的作業(yè)調(diào)度方法的一種應用場景的示意圖;
[0032]圖5 (b)為利用現(xiàn)有技術中經(jīng)典回填算法進行回填的效果圖;
[0033]圖5 (c)為利用本發(fā)明實施例提供的作業(yè)調(diào)度方法進行回填的效果圖;
[0034]圖6為本發(fā)明實施例提供的一種計算裝置的結構示意圖。
【具體實施方式】
[0035]下面結合附圖和實施例,對本發(fā)明的【具體實施方式】作進一步描述。以下實施例僅用于更加清楚地說明本發(fā)明的技術方案,而不能以此來限制本發(fā)明的保護范圍。
[0036]本發(fā)明實施例提供了一種作業(yè)調(diào)度方法,如圖1所示,該方法包括:
[0037]步驟101,在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗□。
[0038]本發(fā)明中的隊首作業(yè)和非隊首作業(yè)分別是指對待運行的作業(yè)按照優(yōu)先級進行排序后的隊列中的第一個作業(yè)和除第一個作業(yè)之外的其他作業(yè)?;靥畲翱谑侵福嬎阊b置估計的到計算裝置能夠提供當前的隊首作業(yè)所需要的資源所需要的時間。這里的回填窗口以及隊首作業(yè)的理解與現(xiàn)有技術中一致。
[0039]實際應用中,在步驟101之前,當有并行作業(yè)運行完成或者提交時,按照并行作業(yè)的優(yōu)先級順序安排作業(yè)隊列;依次安排隊首作業(yè)運行,直到作業(yè)隊列空或隊首作業(yè)由于計算資源不夠而不能運行;如果作業(yè)隊列不空(即計算資源不足以運行當前的隊首作業(yè)),為隊首作業(yè)預留資源。并根據(jù)系統(tǒng)中正在運行作業(yè)對應的運行時間估計,計算預留時間和回填窗口大小。這里的運行時間估計是指用戶針對一個作業(yè)估計的該作業(yè)需要運行的時間。這個過程與現(xiàn)有技術中一致,在此不再詳細說明。
[0040]這里的作業(yè)應為剛性作業(yè),即作業(yè)在整個運行期間都運行在固定數(shù)量的處理器/計算節(jié)點上,每個并行作業(yè)都可以運行在滿足計算需求的任意計算節(jié)點中,不受限于特定的計算節(jié)點。這個資源需求是在作業(yè)腳本中由用戶指定的。
[0041]步驟102,縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填。
[0042]步驟103,在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),并針對在被終止的回填作業(yè)中設置檢查點。
[0043]步驟104,再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。
[0044]在步驟103之后,被中止的回填作業(yè)被放入到作業(yè)隊列中等待再次被執(zhí)行,一種可能的情況是,在當前的隊首作業(yè)完成時,被中止的回填作業(yè)成為隊首作業(yè),此時在步驟101之后,可能直接執(zhí)行步驟104。本發(fā)明提供的作業(yè)調(diào)度方法是一個事件觸發(fā)過程,在相應的條件得到滿足時,執(zhí)行對應的步驟,在一個事件觸發(fā)過程中,步驟103或步驟104中執(zhí)行并不必然要依賴于上一個步驟的執(zhí)行。[0045]由于在步驟101中,計算裝置計算的回填窗口是計算裝置估計的到計算裝置能夠提供當前的隊首作業(yè)所需要的資源所需要的時間,如果回填窗口結束,但是系統(tǒng)的剩余計算資源不足,則很可能是因為回填的作業(yè)沒有結束導致,此時,將回填的作業(yè)停止,以保證隊首作業(yè)的優(yōu)先運行。
[0046]本發(fā)明實施例中,縮短非隊首作業(yè)的運行估計時間,從而利于非隊首作業(yè)的回填,提高系統(tǒng)的資源利用率。另一方面,為了避免因縮短非隊首作業(yè)的運行估計時間而導致非隊首作業(yè)在回填窗口結束時仍在運行進而導致系統(tǒng)的計算資源不能運行隊首作業(yè)的情況,本發(fā)明中,還在回填窗口結束時如果剩余計算資源不足以運行當前的隊首作業(yè)時停止回填作業(yè),從而保證隊首作業(yè)的運行。另一方面,通過針對回填作業(yè)設置檢查點,并使計算裝置在再次重啟所述回填作業(yè)時,僅執(zhí)行未完成部分的計算任務,能夠使計算裝置無需針對一個回填作業(yè)多次執(zhí)行相同的計算任務,這樣也能夠進一步提高系統(tǒng)計算資源的利用率。
[0047]如圖2是基于檢查點的并行作業(yè)調(diào)度方法的形式化描述。本發(fā)明提供的作業(yè)調(diào)度方法與經(jīng)典作業(yè)回填算法大致相同,其主要區(qū)別是步驟102中根據(jù)縮短后的運行時間估計而不是用戶提交的運行時間估計檢查是否可以回填,計算作業(yè)的預計結束時間。
[0048]優(yōu)選的,上述的步驟102中的縮短非隊首作業(yè)對應的運行時間估計,具體包括:
[0049]步驟1021,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子p,其中,0〈ρ〈1。
[0050]優(yōu)選的,步驟102具體為:在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。其具體實現(xiàn)方式可以如圖3所示。
[0051]這樣做有幾方面的考慮。首先,即使不調(diào)整作業(yè)的運行時間估計,短作業(yè)也相對容易被回填。其次,檢查點和重啟的開銷對于短作業(yè)來說太大了。第三,短作業(yè)往往是用戶用來測試或調(diào)試的程序。如果運行過程被分割的話,會降低用戶體驗。P與預設值ttto是可調(diào)整的參數(shù),可以控制回填的激進程度。經(jīng)試驗和統(tǒng)計發(fā)現(xiàn),這樣的簡單機制工作得很好,系統(tǒng)管理人員可以根據(jù)實際工作經(jīng)驗為參數(shù)選擇一個合適的值。
[0052]優(yōu)選的,在上述任一實施例中,所述步驟102中的“根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填”,具體包括:
[0053](a),在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計小于所述回填窗口,判定所述非隊首作業(yè)可以回填;或者,
[0054](b),在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計大于所述回填窗口時,判斷在所述回填窗口結束時所述非隊首作業(yè)和所述隊首作業(yè)是否可以同時運行,若是,則判定所述非隊首作業(yè)能夠回填。
[0055]對于(a),可以保證回填的作業(yè)運行在回填窗口內(nèi),從而不影響隊首作業(yè)的運行。對于(b),即使縮短后的運行時間估計大于所述回填窗口,即回填作業(yè)的運行可能超出回填窗口,只要回填作業(yè)的運行不會影響隊首作業(yè)的運行,也可以允許該作業(yè)回填。
[0056]圖4給出了步驟103的一種實現(xiàn)方式,當預留時間到(回填窗口結束)且沒有足夠的資源給隊首作業(yè)運行時,該算法運行。在該算法中,回填作業(yè)做檢查點并被中止運行,直到隊首作業(yè)獲得足夠的計算資源。被搶先的作業(yè)被重新放入隊列。在選擇被搶先作業(yè)的時候,我們從使用計算節(jié)點多的作業(yè)開始選擇,以減少被搶先和做檢查點作業(yè)的數(shù)量。需要指出的是,每個回填作業(yè)使用的計算節(jié)點數(shù)都要少于隊首的高優(yōu)先級作業(yè)。否則,高優(yōu)先級作業(yè)就會在較早的時間點被調(diào)度。因此,本發(fā)明中的搶先策略實質(zhì)上是一種最優(yōu)選擇算法。
[0057]下面結合圖5對本發(fā)明提供的作業(yè)調(diào)度方法進行詳細說明,如圖5所示,每個并行作業(yè)由一個矩形表示,水平和垂直維度分別表示作業(yè)的計算需求:估計運行時間和請求的處理器/節(jié)點數(shù)量。每個等待作業(yè)矩形中的灰色區(qū)域表示它的實際運行時間。在系統(tǒng)的某個時刻,作業(yè)A和B正在運行,同時作業(yè)C、D和E在作業(yè)隊列中等待運行,如圖5 (a)所示。當A運行完成后,系統(tǒng)沒有足夠的資源給隊首作業(yè)C運行。調(diào)度系統(tǒng)根據(jù)作業(yè)B的運行時間估計為C預留計算資源。那么B運行結束的時刻就是C的“預留時間”。從A結束到B結束這個時間段構成了 “回填窗口”。
[0058]對于經(jīng)典的回填算法(圖5(b)),因為D和E作業(yè)的估計運行時間都超過了回填窗口,兩個作業(yè)都不能被回填,盡管作業(yè)D的實際運行時間小于這個窗口。D和E作業(yè)會在C運行結束后得到運行機會,從而浪費了回填窗口中的計算資源。
[0059]對于基于檢查點的回填算法(圖5(c)),作業(yè)D和E都會被回填。作業(yè)D在預留時間到達之前完成了運行。而作業(yè)E在預留時間點被搶先,它的運行過程被分割成兩段:El和E2。當C結束的時候,E繼續(xù)運行直到結束。
[0060]這個例子展示了基于檢查點調(diào)度算法的幾個優(yōu)點:首先,高估的作業(yè)受益于激進回填策略,縮短了等待時間并提高了系統(tǒng)利用率;其次,做檢查點的作業(yè)也縮短了響應時間;最后,高優(yōu)先級作業(yè)的預留資源得到了保證。
[0061]基于相同的構思,本發(fā)明實施例三還提供了一種計算裝置,通過上述的作業(yè)調(diào)度方法對并行作業(yè)進行調(diào)度,如圖6所示,該計算裝置包括:
[0062]第一計算模塊601,在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的
回填窗口 ;
[0063]回填模塊602,用于縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填;
[0064]第二計算模塊603,用于在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),還用于在被終止的回填作業(yè)中添加檢查點,并在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。
[0065]優(yōu)選的,回填模塊602,用于將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P,其中,0〈ρ〈1。
[0066]優(yōu)選的,回填模塊602具體用于在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。
[0067]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本發(fā)明技術原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
【權利要求】
1.一種作業(yè)調(diào)度方法,其特征在于,包括: 在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗口 ; 縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填; 在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),并針對-被終止的回填作業(yè)設置檢查點; 在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。
2.如權利要求1所述的方法,其特征在于,所述縮短隊首作業(yè)之外的其他非隊首作業(yè)對應的運行時間估計,具體包括: 將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P,其中,0〈ρ〈1。
3.如權利要求2所述的方法,其特征在于,所述將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P,具體包括: 在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。
4.如權利要求1所述的方法,其特征在于,所述根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填具體包括: 在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計小于所述回填窗口時,判定所述非隊首作業(yè)可以回填。
5.如權利要求1所述的方法,其特征在于,所述根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填具體包括: 在判斷所述非隊首作業(yè)需要占用的計算資源小于當前剩余的計算資源,且縮短后的運行時間估計大于所述回填窗口時,判斷在所述回填窗口結束時所述非隊首作業(yè)和所述隊首作業(yè)是否可以同時運行,若是,則判定所述非隊首作業(yè)能夠回填。
6.一種計算裝置,其特征在于,包括: 第一計算模塊,用于在檢測到計算資源不足以運行當前的隊首作業(yè)時,計算相應的回填窗口 ; 回填模塊,用于縮短非隊首作業(yè)對應的運行時間估計,并根據(jù)縮短后的運行時間估計判斷所述非隊首作業(yè)是否能夠回填,并在判斷為是時,將相應的非隊首作業(yè)回填; 第二計算模塊,用于在回填窗口結束且剩余計算資源不足以運行當前的隊首作業(yè)時,停止當前運行的回填作業(yè),還用于針對被終止的回填作業(yè)設置檢查點,并在再次重啟所述回填作業(yè)時,根據(jù)所述回填作業(yè)中的檢查點執(zhí)行未完成部分的計算任務。
7.如權利要求6所述的計算裝置,其特征在于, 所述回填模塊,用于將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P,其中,0〈ρ〈1。
8.如權利要求7所述的計算裝置,其特征在于,所述回填模塊具體用于在判斷所述非隊首作業(yè)對應的運行時間估計大于預設值時,將所述非隊首作業(yè)對應的運行時間估計乘以一個預設分割因子P。
【文檔編號】G06F9/48GK103810037SQ201410012660
【公開日】2014年5月21日 申請日期:2014年1月10日 優(yōu)先權日:2014年1月10日
【發(fā)明者】牛雙誠, 翟季冬, 陳文光, 鄭緯民, 劉明亮 申請人:清華大學