1. 程式人生 > >工作流排程演算法比較

工作流排程演算法比較

參考https://blog.csdn.net/ccy521520/article/details/41349923

1、MaxMin與MinMin演算法

 

        Condor系統是面向高吞吐率計算計算而設計的,它的主要目的就是利用網路中工作站的空閒時間來為使用者服務。針對這種應用,Condor使用的排程方法就相對簡單一些。它定義了一套半結構化的資料模型用於描述資源的特性和表達使用者的需求。它的排程分為兩部分:匹配和宣告,在匹配階段,Matchmaker在可獲得資源中找到最適合任務的資源,然後通知使用者和服務提供者,隨後使用者和服務提供者再進行宣告,以此確立兩者之間消費與服務的關係。Condor採用集中式排程模式,且不能保障使用者服務質量。

 

        最小完成時間演算法MCT(Minimum CompletionTime)是以任意的順序將任務對映到具有最早完成時間的主機上,它並不保證任務被指派到執行它最快的主機上,而僅關心如何最小化任務完成時間,因而可能導致任務在資源上的執行時間過長,從而潛在地增加了排程跨度。

 

        Min-Min演算法是一種經典的啟發式演算法,其總是執行具有最短完成時間的任務,具有實現簡單、執行快速的特點。該演算法計算每個任務在各個機器上的期望完成時間,獲得每個任務的最早完成時間機器計算資源,再將具有最小最早完成時間的任務分配給獲得它的計算資源,分配完成後更新計算資源的就緒時間,並將已分配的任務從任務集合中刪除。如此重複,直到所有任務被分配完畢。Min—Min演算法的詳細執行過程如下:

        設有m個相互獨立的任務和n臺機器,則

        對集合U中每個待分配的任務Ti分別計算出分配該任務到n臺機器上的最小完成時間,形成MCT矩陣。當U為非空時,反覆執行如下操作直至為空;

        利用MCT矩陣,首先分別找到能夠最短完成該任務的機器及最短完成時間,然後在所有的最短完成時間中找出最小的最短完成時間對應的任務(假設為a),設其對應的主機(假設為b),把任務a分配到機器b上;

        從U中把任務a刪除,並更新MCT矩陣。

        大量實驗表明Min-Min演算法存在著一個很大的缺點,就是演算法的資源負載均衡效能(Load Balancing)不高。

 

        Max-Min演算法與Min-Min演算法相似,都是將任務指派給具有最小預測完成時間的主機,不同的是Max-Min演算法從所有任務的最小完成時間中選取一個最大值,然後進行相應任務。主機對映,之後重複此過程直至待排程任務集合為空。

 

         輪叫排程(Round Robin Scheduling)演算法就是以輪叫的方式依次將請求排程不同的伺服器,即每次排程執行i = (i + 1) mod n,並選出第i臺伺服器。演算法的優點是其簡潔性,它無需記錄當前所有連線的狀態,所以它是一種無狀態排程。

         在系統實現時,我們引入了一個額外條件,當伺服器的權值為零時,表示該伺服器不可用而不被排程。這樣做的目的是將伺服器切出服務(如遮蔽伺服器故障和系統維護),同時與其他加權演算法保持一致。所以,演算法要作相應的改動,它的演算法流程如下:

        輪叫排程演算法流程

        假設有一組伺服器S= {S0, S1, …, Sn-1},一個指示變數i表示上一次選擇的伺服器,W(Si)表示伺服器Si的權值。變數i被初始化為n-1,其中n > 0。

j = i;

do {

j = (j+ 1) mod n;

if(W(Sj) > 0) {

i = j;

returnSi;

}

} while(j != i);

returnNULL;

        輪叫排程演算法假設所有伺服器處理效能均相同,不管伺服器的當前連線數和響應速度。該演算法相對簡單,不適用於伺服器組中處理效能不一的情況,而且當請求服務時間變化比較大時,輪叫排程演算法容易導致伺服器間的負載不平衡。