一種基于地震數(shù)據(jù)的作業(yè)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于集群技術(shù)領(lǐng)域,具體涉及一種基于地震數(shù)據(jù)的作業(yè)調(diào)度方法的設(shè)計(jì)。
【背景技術(shù)】
[0002] 隨著技術(shù)的不斷發(fā)展,雖然單個(gè)計(jì)算機(jī)的性能越來越高,但是在針對地震數(shù)據(jù)等 大規(guī)模數(shù)據(jù)的處理時(shí),只靠不斷增強(qiáng)單個(gè)計(jì)算機(jī)的能力已經(jīng)不能滿足應(yīng)用的日益增長的需 求。一般大型地震數(shù)據(jù)可以高達(dá)幾百GB,且對其進(jìn)行的計(jì)算非常復(fù)雜,一次地震數(shù)據(jù)處理的 運(yùn)行時(shí)間最長可達(dá)十幾天,因此采用集群技術(shù)為我們提供了一個(gè)解決方案。
[0003] 集群(cluster)技術(shù)是一種較新的技術(shù),通過集群技術(shù),可以在付出較低成本的 情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其中任務(wù)調(diào)度則是集群系統(tǒng)中 的核心技術(shù)。
[0004] 在集群資源管理軟件中,作業(yè)調(diào)度方法在很大程度上影響了整個(gè)系統(tǒng)的效率,一 個(gè)好的作業(yè)調(diào)度方法可以在一定的時(shí)間內(nèi)減少運(yùn)行作業(yè)所需的節(jié)點(diǎn)數(shù)目,可以運(yùn)行更多的 作業(yè),提高系統(tǒng)資源利用率。針對不同的應(yīng)用環(huán)境與目標(biāo),調(diào)度方法也會(huì)有很大的不同,影 響任務(wù)調(diào)度的主要因素有作業(yè)類型與結(jié)構(gòu)、計(jì)算機(jī)性能與系統(tǒng)機(jī)制、網(wǎng)絡(luò)通信性能等。所以 不會(huì)存在一種適合于任何環(huán)境任何應(yīng)用下的作業(yè)調(diào)度系統(tǒng),目前的許多主流作業(yè)管理系統(tǒng) 都提供了靈活的調(diào)度算法接口,以達(dá)到更好的調(diào)度效果。我們需要根據(jù)實(shí)際項(xiàng)目中的軟硬 件需求,在通用調(diào)度算法基礎(chǔ)上設(shè)計(jì)出適合本系統(tǒng)的調(diào)度方法,才能夠?qū)崿F(xiàn)真正實(shí)用與高 效的調(diào)度方案。
[0005] 調(diào)度算法好壞的評價(jià)依賴于多種標(biāo)準(zhǔn),從使用的角度應(yīng)考慮調(diào)度系統(tǒng)的簡便性、 靈活性、穩(wěn)定性,從性能的角度應(yīng)考慮調(diào)度系統(tǒng)的調(diào)度效率、系統(tǒng)資源利用率、系統(tǒng)吞吐率、 系統(tǒng)負(fù)載均衡等。
[0006] 系統(tǒng)的調(diào)度效率與調(diào)度算法設(shè)計(jì)有緊密的聯(lián)系,要盡可能的縮短作業(yè)的等待時(shí) 間。作業(yè)等待時(shí)間是指集群中各作業(yè)從提交到開始運(yùn)行所等待的時(shí)間長度,減少調(diào)度算法 本身所耗費(fèi)的系統(tǒng)資源,提高系統(tǒng)的響應(yīng)速度。
[0007] 系統(tǒng)吞吐率是指一定時(shí)間段內(nèi)系統(tǒng)完成的作業(yè)數(shù)量,系統(tǒng)吞吐率不僅依賴于系統(tǒng) 中的軟硬件資源,還與調(diào)度方法有很大的關(guān)系。一般來說系統(tǒng)資源利用率的提高能使系統(tǒng) 在單位時(shí)間內(nèi)運(yùn)行更多的作業(yè),提高系統(tǒng)的吞吐率。
[0008] 負(fù)載均衡所要達(dá)到的目標(biāo)是讓集群中每個(gè)節(jié)點(diǎn)承擔(dān)的作業(yè)任務(wù)量盡可能的相同。 考慮系統(tǒng)的負(fù)載均衡就是根據(jù)集群中節(jié)點(diǎn)的資源利用情況將作業(yè)分配到負(fù)載較低的節(jié)點(diǎn) 上,下文中所涉及的一些調(diào)度算法主要是根據(jù)作業(yè)的提交時(shí)間和作業(yè)大小依次對作業(yè)進(jìn)行 調(diào)度,所以需要把負(fù)載均衡的考慮加入到調(diào)度算法的設(shè)計(jì)中,才能得到好的調(diào)度方法。
[0009] 由于Iinux系統(tǒng)開源軟件的特性,大多數(shù)的系統(tǒng)信息都是通過讀取配置文件的形 式進(jìn)行獲取。因此為了獲取節(jié)點(diǎn)的CPU利用率、網(wǎng)絡(luò)I/O利用情況等信息,需要讀取proc 文件系統(tǒng)。
[0010] proc文件系統(tǒng)是一個(gè)偽文件系統(tǒng),它只存在內(nèi)存當(dāng)中,而不占用外存空間。它以文 件系統(tǒng)的方式為訪問系統(tǒng)內(nèi)核數(shù)據(jù)的操作提供接口。用戶和應(yīng)用程序可以通過proc得到 系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。由于系統(tǒng)的信息,如進(jìn)程,是動(dòng)態(tài)改變的,所以用 戶或應(yīng)用程序讀取/proc目錄中的文件時(shí),proc文件系統(tǒng)是動(dòng)態(tài)從系統(tǒng)內(nèi)核讀出所需信息 并提交的。
[0011] 混沌現(xiàn)象是非線性確定性系統(tǒng)中的一種內(nèi)在隨機(jī)過程的表現(xiàn),普遍存在于自然界 中,其表現(xiàn)形式是一種"無序的有序"。確定性為其"有序性",而最終結(jié)果的不可預(yù)測性則為 其"無序性"。然而從嚴(yán)格意義上講,對于混沌的性質(zhì)判斷,從數(shù)學(xué)上沒有一個(gè)統(tǒng)一的定義。 比較常用的有Li-Yorke、Devaney、Matotto意義下的三種混純,實(shí)際上為了刻畫混純動(dòng)力 學(xué)性質(zhì)往往用到Lyapunov指數(shù)和熵。
[0012] -個(gè)混沌系統(tǒng)的行為是許多有序行為的集合,但是每一個(gè)有序行為在正常情況下 都不占主導(dǎo)地位。如果以某種方式擾亂一個(gè)混沌系統(tǒng),就能使該系統(tǒng)以它許多有序行為中 的一個(gè)來起作用。由于混沌系統(tǒng)能在許多不同的行為方式之間進(jìn)行轉(zhuǎn)換,所以顯得特別靈 活。歷史上混沌的研究開始于數(shù)學(xué)和物理學(xué),然后擴(kuò)展到工程領(lǐng)域,近來人們將混沌理論逐 漸應(yīng)用到工程設(shè)計(jì)領(lǐng)域。
[0013] 按照混沌應(yīng)用方法的不同,可以分為穩(wěn)定性、綜合和分析幾個(gè)方面。穩(wěn)定性就是利 用初值的敏感性,給系統(tǒng)加入微小擾動(dòng),使之進(jìn)入某一希望的狀態(tài),如混沌控制;綜合就是 利用人為生成的混沌以獲取混沌動(dòng)力學(xué)的可能的功能,如避免局部最?。环治鍪欠治鰪淖?然和人為復(fù)雜系統(tǒng)中觀察得到的混沌信號(hào)以尋找隱藏其中的規(guī)律,如時(shí)間序列的非線性確 定性預(yù)測。
【發(fā)明內(nèi)容】
[0014] 本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中執(zhí)行控制系統(tǒng)只實(shí)現(xiàn)了簡單的FCFS調(diào)度算 法、沒有考慮地震作業(yè)總的處理時(shí)間最優(yōu)、負(fù)載均衡的問題,提出了一種基于地震數(shù)據(jù)的作 業(yè)調(diào)度方法。
[0015] 本發(fā)明的技術(shù)方案為:一種基于地震數(shù)據(jù)的作業(yè)調(diào)度方法,包括以下步驟:
[0016] Sl、獲取集群節(jié)點(diǎn)的資源信息;
[0017] S2、計(jì)算地震作業(yè)的復(fù)雜度;
[0018] S3、通過基于混沌算法的作業(yè)調(diào)度策略對地震作業(yè)進(jìn)行調(diào)度。
[0019] 進(jìn)一步地,步驟Sl包括以下分步驟:
[0020] Sl 1、計(jì)算集群節(jié)點(diǎn);
[0021] S12、讀取配置文件;
[0022] S13、進(jìn)行數(shù)據(jù)處理。
[0023] 進(jìn)一步地,步驟S12中的配置文件包括/proc/stat系統(tǒng)文件、/proc/net/dev系 統(tǒng)文件以及/etc/mtab系統(tǒng)文件。
[0024] 進(jìn)一步地,步驟S13中數(shù)據(jù)處理具體包括:計(jì)算節(jié)點(diǎn)CPU利用率、計(jì)算節(jié)點(diǎn)1/0利 用率、計(jì)算節(jié)點(diǎn)磁盤利用率以及計(jì)算集群節(jié)點(diǎn)的性能指標(biāo)。
[0025] 進(jìn)一步地,步驟S2中地震作業(yè)的復(fù)雜度基于地震作業(yè)的大小以及地震作業(yè)采用 的處理模塊的類型。
[0026] 進(jìn)一步地,步驟S3包括以下分步驟:
[0027] S31、算法初始化;
[0028] S32、對混沌變量進(jìn)行第一次載波;
[0029] S33、用第一次載波后的混沌變量進(jìn)行迭代搜索;
[0030] S34、判斷經(jīng)步驟S33的迭代搜索后混沌變量是否保持不變,若是則進(jìn)入步驟S35, 否則返回步驟S33 ;
[0031] S35、對混沌變量進(jìn)行第二次載波;
[0032] S36、用第二次載波后的混沌變量繼續(xù)進(jìn)行迭代搜索;
[0033] S37、判斷經(jīng)步驟S36的迭代搜索后混沌變量是否保持不變,若是則進(jìn)入步驟S38, 否則返回步驟S36 ;
[0034] S38、輸出最優(yōu)解。
[0035] 本發(fā)明的有益效果是:本發(fā)明基于總的處理時(shí)間最優(yōu)、負(fù)載均衡等條件的地震作 業(yè)調(diào)度策略,通過獲取到的集群節(jié)點(diǎn)的資源信息和地震作業(yè)的復(fù)雜度,利用混沌算法的地 震作業(yè)調(diào)度策略,可以達(dá)到以下有益效果:
[0036] (1)本發(fā)明中獲取集群節(jié)點(diǎn)的資源信息可以幫助用戶詳細(xì)的了解集群節(jié)點(diǎn)的資源 利用情況;
[0037] (2)本發(fā)明將地震作業(yè)復(fù)雜度量化為基于地震作業(yè)的大小和地震模塊的類型的作 業(yè)運(yùn)行的復(fù)雜度;
[0038] (3)通過本發(fā)明建立的地震作業(yè)調(diào)度模型,利用了混沌算法的優(yōu)化策略,考慮了節(jié) 點(diǎn)的負(fù)載平衡和作業(yè)運(yùn)行時(shí)間最少的優(yōu)化目標(biāo),最終完成對地震作業(yè)的調(diào)度。
【附圖說明】
[0039] 圖1為本發(fā)明提供的一種基于地震數(shù)據(jù)的作業(yè)調(diào)度方法流程圖。
[0040] 圖2為本發(fā)明步驟Sl的分步驟流程圖。
[0041 ] 圖3為本發(fā)明步驟S3的分步驟流程圖。
【具體實(shí)施方式】
[0042] 下面結(jié)合附圖對本發(fā)明的實(shí)施例作進(jìn)一步的說明。
[0043] 本發(fā)明提供了一種基于地震數(shù)據(jù)的作業(yè)調(diào)度方法,如圖1所示,包括以下步驟:
[0044] Sl、獲取集群節(jié)點(diǎn)的資源信息。
[0045] 如圖2所示,該步驟包括以下分步驟:
[0046] Sl 1、計(jì)算集群節(jié)點(diǎn)。
[0047] S12、讀取配置文件,包括/proc/stat系統(tǒng)文件、/proc/net/dev系統(tǒng)文件以及/ etc/mtab系統(tǒng)文件。
[0048] 其中,/proc/stat系統(tǒng)文件包含了系統(tǒng)啟動(dòng)以來的許多關(guān)于kernel和系統(tǒng)的統(tǒng) 計(jì)信息,其中包括CPU運(yùn)行情況、中斷統(tǒng)計(jì)、啟動(dòng)時(shí)間、上下文切換次數(shù)、運(yùn)行中的進(jìn)程等信 息。
[0049] /proc/net/dev系統(tǒng)文件包含了系統(tǒng)網(wǎng)卡統(tǒng)計(jì)信息。
[0050] /etc/mtab系統(tǒng)文件記載的是現(xiàn)在系統(tǒng)已經(jīng)裝載的文件系統(tǒng),包括操作系統(tǒng)建立 的虛擬文件等。
[0051] S13、進(jìn)行數(shù)據(jù)處理,具體包括:計(jì)算節(jié)點(diǎn)CPU利用率、計(jì)算節(jié)點(diǎn)I/O利用率、計(jì)算節(jié) 點(diǎn)磁盤利用率以及計(jì)算集群節(jié)點(diǎn)的性能指標(biāo)。
[0052] 為了計(jì)算節(jié)點(diǎn)CPU利用率,需要從/proc/stat系統(tǒng)文件中提取四個(gè)數(shù)據(jù):用戶 模式(user)、低優(yōu)先級(jí)的用戶模式(nice)、內(nèi)核模式(system)以及空閑的處理器時(shí)間 (idle)。它們均位于/proc/stat系統(tǒng)文件的第一行。則節(jié)點(diǎn)CPU利用率如公式(1)所示:
[0053] cpu_usage = 100*(user+nice+system)/(user+nice+system+idle) (I)
[0054] 為了得到節(jié)點(diǎn)I/O利用率的相關(guān)數(shù)據(jù),需要從/proc/net/dev系統(tǒng)文件中獲得兩 個(gè)數(shù)據(jù):從本機(jī)輸出的數(shù)據(jù)包數(shù),流入本機(jī)的數(shù)據(jù)包數(shù),它們都位于/proc/