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