一種適用于計算能力異構集群的分布式作業調度方法
【專利說明】一種適用于計算能力異構集群的分布式作業調度方法
[0001]
技術領域
[0002]本發明涉及一種適用于計算能力異構集群的分布式作業調度方法,屬于自動化技術領域。
【背景技術】
[0003]當前的電網調度系統在部署作業時,主要將作業的任務分布到靜態指定的節點上運行。這種方式在計算能力異構的集群下已經不適用了,一方面,異構集群下每個節點的處理能力不一樣,靜態指定作業的部署節點,無法充分發揮高處理能力節點的性能優勢;另一方面,作業的任務不能充分部署到處理能力高的節點,無法提高作業的處理效率。因此,有必要引入一個新的調度算法,以充分利用集群資源,提高作業處理能力,提升系統的整體性會K。
【發明內容】
[0004]為克服現有技術上的缺陷,本發明目的是在于提供一種擴展性強、支持跨平臺的適用于計算能力異構集群的分布式任務調度方法,提高了集群的分布式處理能力,提升了系統的資源利用率,確保了作業處理的可靠性。
[0005]為實現上述目的,本發明的技術方案如下:
在進行技術方案闡述前,本發明先說明以下幾個概念:
1)任務:執彳丁特定功能的程序;
2)作業:由一系列任務組成,是實現系統功能的任務集合。
[0006]3)常駐作業:作業一直處于運行狀態,生命周期長。
[0007]4)非常駐作業:作業運行一段時間后退出,生命周期短。
[0008]5)調度器:調度器的主要工作是將提交的每一個作業,按照某種規則,部署到集群中的節點上。
[0009]6)作業管理器:作業管理器是作業的管理進程,它負責監視作業的運行狀態。它接收任務的實時處理數據,匯總計算結果;它統計每個任務的處理能力,對任務的數據集進行動態調度;同時還在延遲調度中負責將延遲隊列的作業充分部署到那些高性能節點上。在本方法中,每個作業都有一個作業管理器。
[0010]7)調度隊列:用于存放被提交的作業的隊列。
[0011]8)延遲隊列:作業管理器持有的一個隊列,當作業所需的CPU資源不能被全部滿足時,作業的部分任務將被插入到延遲隊列。
[0012]9)任務的資源使用值:任務的資源使用值通過(內存使用值,CPU使用值)二元組表示。內存使用值就是運行時占用的物理內存大小;CPU使用值就是CPU占用的核數,該值等于CPU利用率,一般CPU利用率占用為50%,則其CPU使用值為0.5 ;如果CPU利用率占用為125%,則CPU使用值為1.25。
[0013]10)節點的資源能力:通過(空閑內存大小,CPU空閑值)二元組來表示。其中CPU空閑值=節點CPU空閑率*CPU物理核數。
[0014]本發明是一種適用于計算資源異構集群的分布式任務調度方法,,包括以下步驟:
O自動化節點資源發現集群中的每個節點周期性地統計本節點的CPU核數、CPU利用率和內存空閑大小,組成組播報文發送出去。調度器、作業管理器加入組播組中,接收這些報文,并將各個節點的資源信息記錄下來,存放在資源池中。
[0015]2)基于FIFO (First Input First Output,先入先出隊列)和資源利用最大化的作業調度
調度器按照FIFO的原則,從調度隊列中逐個選擇作業進行調度。調度器在部署作業時,首先要解析作業,即確定作業的任務、任務個數、是否指定節點。如果指定節點,則將任務分配到指定的節點上啟動。
[0016]如果沒有指定節點,則基于資源利用最大化的原則進行部署。首先,調度器從資源池中選出空閑內存大于作業各個任務的內存使用值的節點,然后從這些節點中選擇CPU空閑值最大的節點。如果CPU空閑值同樣大,貝Ij選擇內存空閑值較大的節點。根據這種方法,調度器將任務逐個部署到資源利用率最低的節點上。
[0017]3)支持基于數據集的動態再調度機制
對于常駐作業,作業管理器需要周期性地接收各個任務的計算數據,并形成計算結果。每個任務的周期性的計算速度直接影響到作業的計算性能,通常作業的計算性能由最慢任務的計算速度決定。因此,為了提高作業的計算性能,就有必要提高最慢的任務的計算速度。
[0018]本發明采用動態數據集調度來實現這個目標。工作管理者監視各個任務每個周期的計算時間,如果最慢任務在某個周期的計算時間超過最快任務在該周期的計算時間的I倍,則工作管理器將最慢任務數據集的1/2調度給最快任務。
[0019]工作管理器主要采用應答方式來動態調度數據集。在周期性地接收完各個任務的計算結果后,作業管理器會進行應答。在應答中,作業管理器可以指定下個周期任務需要計算的數據集,以重新分配數據集。
[0020]4)支持延遲調度機制
對于非常駐作業,為了盡量讓任務部署到高性能的節點上,調度器依次將作業部署資源能力最大的節點上,如果集群中各個節點的所有CPU核心都有該作業的任務在執行時,余下的任務被提交到延遲隊列中。即作業在該節點的并行度已達最大化時,即使內存資源有空閑,也暫時不部署任務到該節點,開始執行延遲調度。
[0021]作業管理器監視各個任務運行狀態和集群資源使用情況,當某個節點上屬于該作業的任務完成或者某個節點有空閑的CPU核心可以執行任務時,各個作業管理器進行資源競爭,作業ID最小的作業管理器將獲勝,并從延遲隊列中將本作業的任務部署到該節點。
[0022]5)支持故障冗余
如果作業的可靠性要求很高,則需要進行冗余互備。對于需要冗余互備的作業,調度器首先解析作業,獲取其所需的備份數N ;然后為每個任務生成N個備份;接著,依次將各個任務和備份任務部署到集群上。
[0023]作業管理器監視本作業下所有任務的運行狀態,并接收所有任務的實時計算數據。對于同一個任務的多份計算結果,作業管理者總是選擇計算速度最快的任務的處理數據。當某個任務出現離線或者故障時,并不會影響到作業管理器匯總結果,它可以從計算速度最快的備份任務獲取數據。
[0024]本發明通過以上步驟,可達到以下有益效果:
1.本發明充分利用資源,通過對資源使用量的監視,將作業部署在資源利用率低的節點上,全面提高資源利用率。
[0025]2.本發明處理能力強,作業上的任務被分布在多個節點上并行執行,同時通過基于數據集的動態調度和延遲調度等方式,盡量讓作業調度在高性能節點上,以提高作業處理速度。
[0026]3.本發明擴展性強,節點加入系統后,調度器可以發現自動發現該節點,并將作業部署到該節點上,不需要增加配置或者重啟管理程序。
[0027]4.本發明可靠性高,當任務出現故障或者斷網,備份任務可以繼續進行工作。
[0028]5.本發明支持跨平臺,所有程序支持LINUX/AIX/HPUX/WINDOWS平臺。
[0029]綜上所述,本發明是一種資源利用高、處理能力強、擴展性強、可靠性高、支持跨平臺的分布式作業調度方法。
【附圖說明】
[0030]圖1是本發明節點資源的自動化發現的過程圖;
圖2是本發明基于FIFO和資源利用最大化的作業調度過程圖;
圖3是本發明基于數據集的動態調度過程圖;
圖4是本發明延遲調度的過程說明圖;
圖5是本發明冗余互備過程說明圖。
【具體實施方式】
[0031]下面結合附圖對本發明的適用于計算能力異構集群的分布式任務調度方法作進一步的說明。
[0032]本發明公開了一種適用于計算能力異構集群的分布式作業調度方法,主要包括五個步驟:第一,節點資源的自動化發現。集群中的每個節點將資源信息以組播報文的方式發送到網絡中,調度器接收組播報文,自動發現集群節點;第二,基于FIFO和資源利用最大化的作業調度機制。調度器根據FIFO的機制從調度隊列選擇作業,并指定滿足任務資源使用值的高性能節點來部署任務,確保最大化利用集群資源。第三,基于數據集的動態再調度機制。作業管理器動態調整各個任務的數據集,以提高作業的整體計算性能;第四,延遲調度機制。將作業的部分任務部署到所有節點,剩下的任務提交到延遲隊列等待調度。一旦某個節點有空閑的CPU資源,則從延遲隊列中選取一個任務部署到該節點運行,保證異構集群中計算能力強的節點能夠處理更多的任務,確保作業整體的完成時間更加提前;第五,使用冗余互備機制。調度器為每個任務部署備份任務,保證在任務故障或者離線后,備份任務依然能夠提供計算結果。以上步驟,提高了集群的分布式處理能力,提升了系統的資源利用率,確保了作業處理的可靠性。
[0033]為了具體說明分布式任務調度方法的實施方式,現假定初始時調度隊列中有3個作業:jobl、job2、job3,其中job2是常駐作業,其它都是非常駐作業。每個作業存在3個任務,假設jobl的任務為taskl-1、taskl_2、taskl_3,其它作業的任務以此類推。每個任務的資源使用值為(1G,0.5),即內存使用值為1G,CPU利用率為50%。后續的job4有16個任務組成,每個任務的資源使用值(100M,0.5);job5有3個任務組成,每個任務的資源使用值(1G,0.5)0
[0034]集群中總共有3個節點model、node2、node3,每個節點的資源能力是不同的,分別是(4G,4)、(2G,4)、(4G、2),其中(4G,4)表示節點空閑內存大小是4G,CPU空閑值是4,其它依此類推。
[0035]同時假定:在冗余互備過程中,任務的備份數是I。
[0036]圖1是本發明節點資源的自動化發現的過程圖,每個節點獲取本節點的資源信息:CPU利用率、核數、空閑內存數,然后以組播的方式發送到整個集群的所有節點。調度器加入該組播組,并且從集群中接收這些資源信息,然后將這些資源信息存放在資源池中。
[0037]圖2是本發明基于FIFO和資源利用最大化的作業調度過程圖。調度隊列中存在3個作業,每個作業分別有三個任務。調度器從調度隊列中選擇作業,依次選擇jobl,job2,job3部署到集群節點上。
[0038]參見圖2的(a) jobl中,調度器從調度隊列中獲取jobl,并解析出3個任務,由于nodeUnode2是滿足jobl的各個任務的內存使用值中CPU空閑值最大的節點,于是將任務taskl-Ι部署到nodel ;部署taskl-2時,nodel的資源能力是(3G,3.5),node2的資源能力是(2G,4),在空閑內存足夠任務使用的的情況下,選擇CPU空閑值最大的節點node2,將taskl-2部署到node2 ;以此類推,將taskl_3