面向生物基因測序計算任務的多隊列回填作業(yè)調(diào)度方法
【技術領域】
[0001] 本發(fā)明涉及高性能計算領域,特別涉及一種面向生物基因測序計算任務的多隊列 回填作業(yè)調(diào)度方法。
【背景技術】
[0002] 在高性能計算系統(tǒng)特別是高性能計算集群中,作業(yè)調(diào)度扮演著極其重要的作業(yè)。 作業(yè)調(diào)度按照不同的用戶需求采用合適的調(diào)度策略,分配合適的資源去執(zhí)行作業(yè)。作業(yè)調(diào) 度關系到作業(yè)的整個生命周期,涉及集群的各組成部分,直接影響著作業(yè)的運行效率與系 統(tǒng)的吞吐率及資源利用。為了充分利用高性能計算集群的系統(tǒng)資源,保證作業(yè)迅速而又高 效的執(zhí)行,采用合適的方法進行作業(yè)調(diào)度顯得十分必要。
[0003] 基因測序是對目標DNA進行堿基的序列測定,并進行各種相關分析?;驕y序已經(jīng) 廣泛應用于快速疾病診斷、疫情檢測、大規(guī)模物種群體進化及個性化醫(yī)療等?;驕y序的大 部分計算任務如基因重測序、基因組關聯(lián)分析等需要大量計算,利用高性能計算系統(tǒng)進行 基因數(shù)據(jù)分析已經(jīng)成為許多科研機構和公司采用的方式。基于基因測序的應用特性,其計 算任務通常具有以下特點:(1)高通量(High-through):作業(yè)規(guī)模很大,大部分為串行作業(yè), 少量并行作業(yè)。并行作業(yè)大多數(shù)為單節(jié)點的多線程任務;(2)資源需求大:除了對CPU資源有 較大需求外,對內(nèi)存、I/O等資源的需求也較大;(3)作業(yè)流程復雜:有些作業(yè)具有自己的工 作流,有些作業(yè)采用分布式的消息傳遞機制。用戶在提交作業(yè)時,需要預估作業(yè)使用的資 源,并自己控制工作流程或者并行機制。這些作業(yè)特性導致采用傳統(tǒng)的作業(yè)調(diào)度方式不能 獲得很好的效果,系統(tǒng)的資源利用率較低。因此,設計一種面向基因測序高性能計算系統(tǒng)的 作業(yè)調(diào)度方法,提高作業(yè)的運行效率與系統(tǒng)的資源利用,是十分必要的。
[0004] 在大規(guī)模并行系統(tǒng)作業(yè)調(diào)度領域,資源預留與回填(簡稱回填,Backfilling)技術 得到了廣泛的應用,已成為并行作業(yè)調(diào)度的基本方法。它一方面為作業(yè)提前預留處理機以 保證能夠盡快執(zhí)行該作業(yè);另一方面,在不造成預留的作業(yè)被延遲的前提下,按照先后順序 將那些需要處理機數(shù)量較少的后續(xù)等待作業(yè)分配到當前空閑的處理機上。與傳統(tǒng)的作業(yè)調(diào) 度方法相比,資源預留與回填在保持基本的先來先服務特征的基礎上,充分利用了系統(tǒng)的 空閑資源,同時減少了作業(yè)的等待,具有更好的性能。本發(fā)明主要針對基因測序的應用環(huán)境 及具體需求,對資源預留與回填進行改進。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于克服現(xiàn)有技術的缺點與不足,在生物信息作業(yè)負載特性分析的 基礎上,提出了一種面向生物基因測序計算任務的多隊列回填作業(yè)調(diào)度方法,首先對每個 隊列實施基于內(nèi)存資源優(yōu)化的回填調(diào)度,在此基礎上以多對列的方式進行回填調(diào)度,實現(xiàn) 隊列級別的負載均衡。采用該方法能夠獲得很好的調(diào)度效果,改善系統(tǒng)性能。
[0006] 本發(fā)明的目的通過如下技術方案實現(xiàn):一種面向生物基因測序計算任務的多隊列 回填作業(yè)調(diào)度方法主要包括以下步驟:
[0007] S1、基于內(nèi)存資源優(yōu)化的回填調(diào)度:在傳統(tǒng)的回填調(diào)度的基礎上進行改進,設計基 于內(nèi)存資源優(yōu)化的回填調(diào)度;在作業(yè)調(diào)度的過程中,充分考慮了作業(yè)的CPU與內(nèi)存屬性,根 據(jù)這兩個屬性進行作業(yè)的資源預留與回填,從而盡可能的提高系統(tǒng)的利用率,使作業(yè)整體 盡可能快的運行。在利用資源預留形成的資源空隙進行回填時,保證不影響作業(yè)等待隊列 中第一個作業(yè)的運行;
[0008] S2、多對列負載均衡回填調(diào)度:基于內(nèi)存資源優(yōu)化回填調(diào)度的基礎上,以多對列的 方式進行回填調(diào)度,并且提供了隊列級別的負載均衡,主要用于解決由于多對列的劃分造 成的作業(yè)等待與資源浪費的問題,平衡各隊列間的負載,同時提供了改進方案:動態(tài)選擇閾 值策略與優(yōu)化迀移策略。
[0009] 所述步驟S1中:記waitList為作業(yè)等待隊列,runList為作業(yè)運行隊列,resList為 作業(yè)預約隊列;系統(tǒng)資源集合為R,其中包含系統(tǒng)的計算節(jié)點;進行作業(yè)調(diào)度的具體流程如 下:
[0010] S11:按照作業(yè)的提交時間順序,提取waitList中的第一個作業(yè)i ;
[0011] S12:判斷作業(yè)i能否在R中直接運行:即在當前的系統(tǒng)資源中,能夠找到滿足當前 作業(yè)資源需求的節(jié)點,也就是說該節(jié)點擁有的空閑資源(CPU以及內(nèi)存)大于作業(yè)運行需要 的資源;若節(jié)點已預約作業(yè),則還需判斷將該作業(yè)分配到這個節(jié)點上運行是否影響已預約 的作業(yè)。
[0012] S13:若作業(yè)i不能直接運行,判斷能否對i進行預約,即在R中尋找節(jié)點為i進行資 源預留;
[0013] 所述步驟S13中規(guī)定每個節(jié)點最多有一個作業(yè)預約;如果還有節(jié)點未預約作業(yè),則 可以進行作業(yè)預約,進入作業(yè)預約步驟。
[0014] S14:若作業(yè)i能夠在某個節(jié)點上運行,則可以將該作業(yè)進行回填,進入作業(yè)回填步 驟。
[0015] S15:若不能對該作業(yè)i進行預約或者回填,則遍歷waitList,提取下一個作業(yè),返 回至S12繼續(xù)執(zhí)行。
[0016]所述步驟S12中判斷不對預約作業(yè)造成影響的標準為:該作業(yè)在預約作業(yè)執(zhí)行之 前結束,或者該作業(yè)需求的資源小于預約作業(yè)執(zhí)行后節(jié)點的空閑資源。
[0017]所述作業(yè)預約步驟流程為:
[0018] step 1:計算作業(yè)i所需的資源:計算該作業(yè)運行需要的CPU核數(shù)、最大內(nèi)存以及預 計運行時間;
[0019] step 2:遍歷R的節(jié)點列表,計算未預約作業(yè)的節(jié)點能夠運行作業(yè)i的最早時間;
[0020] 在這些節(jié)點中,隨著已運行作業(yè)的完成,節(jié)點中剩余的空閑資源越來越多,節(jié)點空 閑資源開始大于該作業(yè)需求資源的時刻,即能夠運行該作業(yè)的最早時間;
[0021] step 3:比較各節(jié)點能夠運行作業(yè)i最早時間,獲取這個時間最小的節(jié)點;
[0022] step 4:選擇該節(jié)點為預約作業(yè)i的節(jié)點,將作業(yè)從waitList移動至resList,在節(jié) 點上為作業(yè)預留資源,即將作業(yè)需求的資源預先分配到節(jié)點上,記錄能夠運行該作業(yè)的最 早時間;
[0023] step 5:返回主程序。
[0024]所述作業(yè)回填步驟流程為:
[0025] (1):計算作業(yè)i所需的資源;
[0026] (2):遍歷R的節(jié)點列表:遍歷節(jié)點列表之前,首先將節(jié)點列表按節(jié)點的CPU負載大 小排序,即按照節(jié)點當前的CHJ利用率排序,將節(jié)點按照CPU負載排序,能夠保證作業(yè)優(yōu)先在 負載較低的節(jié)點上運行,有利于系統(tǒng)的負載均衡;
[0027] (3):獲取負載最小的節(jié)點,將作業(yè)i回填至該節(jié)點,在節(jié)點上為作業(yè)分配資源,將 作業(yè)從waitList移動至runList;
[0028] (4):返回主程序。
[0029] 所述步驟S2中:定義隊列k的負載
其中jn表示隊列中運行作業(yè)i使用的 資源,nr謙示隊列包含的節(jié)點j的資源總量,選取一個大小在區(qū)間(0,1)的閾值Lthre5S,多對 列負載均衡調(diào)度策略為:
[0030] 當Lk>Lthres時,停止向隊列k投遞作業(yè),遍歷所有隊列,將原本投遞至隊列k的作業(yè) 轉(zhuǎn)為投向負載最低的隊列;當Lk<Lthm時,允許繼續(xù)向隊列k投遞作業(yè)。
[0031] 采用這種調(diào)度策略能夠改善當某個隊列負載過高時,由于隊列資源不足導致作業(yè) 無法立即運行,從而等待時間過長的現(xiàn)象;為了避免作業(yè)迀移至其他隊列過于頻繁,L thres- 般取大于0.8的值,同時為了減小迀移的作業(yè)對未迀移作業(yè)的影響,設置迀移作業(yè)的優(yōu)先級 低于未迀移作業(yè)的優(yōu)先級,即未迀移的作業(yè)總是在迀移作業(yè)之前運行。
[0032] 在此基礎上,提供了動態(tài)選擇閾值策略,根據(jù)隊列的負載,動態(tài)的、實時的選取閾 值,對多對列負載均衡調(diào)度策略進行了改進。動態(tài)選擇閾值的策略根據(jù)實際的隊列作業(yè)情 況與負載情況,動態(tài)的決定是否需要對隊列進行負載均衡,能夠更充分的利用隊列的資源。 [00 33]所述步驟S2中定義:隊列k的作業(yè)迀移代價Cmk= 2 jtri jriw;隊列k的作業(yè)等待代價 Cwk= 2 jtwijri;
[0034] 其中九^表示作業(yè)i的預計執(zhí)行時間,該值由用戶預估的作業(yè)執(zhí)行時間獲得,w表 示作業(yè)迀移代價的權重,jtWl表示隊列不采用負載均