歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Linux集群之負載平衡原理和實現算法

在計算機硬件價格下降、計算機 網絡 拓撲發展的情況下,分布式計算機系統給用戶提供了一個豐富的資源集合。人們在研究分布式系統時,就注意到了這樣一個問題:在一個由網絡 連接起來的多計算機環境中,在某一時刻,一些計算機的負載比較重,而另外一些計算機  

在計算機硬件價格下降、計算機網絡拓撲發展的情況下,分布式計算機系統給用戶提供了一個豐富的資源集合。人們在研究分布式系統時,就注意到了這樣一個問題:在一個由網絡連接起來的多計算機環境中,在某一時刻,一些計算機的負載比較重,而另外一些計算機的負載卻比較輕。平衡各計算機之間的負載是任務分配與調度的一個主要目標,它能夠提高整個系統的性能

為了改善系統的性能,通過在多台計算機之間合理地分配負載,使各台計算機的負載基本均衡,這種計算能力共享的形式,通常被稱為負載平衡或負載共享。一般來說,"負載平衡"要達到的目標是使各台計算機之間的負載基本均衡,而"負載共享"意味著只是簡單的負載的重新分配。

負載平衡包括兩種,一種是靜態負載平衡,一種是動態負載平衡。只是利用系統負載的平均信息,而忽視系統當前的負載狀況的方法被稱為靜態負載平衡。根據系統當前的負載狀況來調整任務劃分的方法被稱為動態負載平衡。

導致負載不平衡主要是由於:

  1. 某些算法的迭代大小不是固定的,但迭代的大小在編譯時卻可以被求得;
  2. 某些算法的迭代大小不是固定的,並且迭代的大小依賴於被處理的數據,在編譯時無法求得;
  3. 即使迭代大小是固定的,也會有許多不定因素導致計算速度的差異。

考察這三個原因,對第一種情況可在編譯時估計各迭代的工作量,按照處理節點的處理能力分布迭代,這就是靜態負載平衡的方法。對第二、三種情況來說,必須采用動態負載平衡的手段,在運行過程中根據各個處理節點完成任務的情況,動態地遷移任務,實現動態負載平衡。進行動態負載平衡需要考察處理節點的處理能力,它的基本依據是根據處理節點先前的處理速度預見未來的處理速度。

負載平衡算法



一個負載平衡算法都包含以下三個組成部分:

  • 信息策略:制定任務放置策略的制定者使用的負載和任務量,以及信息分配的方式。
  • 傳送策略:基於任務和計算機負載,判斷是否要把一個任務傳送到其它計算機上處理。
  • 放置策略:對於適合傳送到其它計算機處理的任務,選擇任務將被傳送的目的計算機。

    負載平衡的上述三個部分之間是以不同的方式相互作用的。放置策略利用信息策略提供的負載信息,僅當任務被傳送策略判斷為適於傳送之後才行動。

    總之,負載平衡的目標是:提供最短的平均任務響應時間;能適於變化的負載;是可靠的負載平衡機制。

    信息策略



    人們用來描述負載信息采用的參數有:

  • 運行隊列中的任務數;
  • 系統調用的速率;
  • CPU上下文切換率;
  • 空閒CPU時間百分比;
  • 空閒存儲器的大小(K字節);
  • 1分鐘內的平均負載。對於這些單個的負載描述參數,第(1)個,即采用運行隊列中的任務數作為描述負載的參數被證明是最有效的,即它的平均任務響應時間最短,並且已經得到廣泛應用。但是,如果為了使系統信息更全面而采集了更多的參數,則往往由於增加了額外開銷,卻得不到所希望的性能改善。例如,采用將六個參數中的某兩個進行"AND"或"OR"組合,得到的平均響應時間反而比單個參數的平均響應時間還要差一些。

    傳送策略



    為了簡單起見,在選用傳送策略時,多選用閥值策略。例如,Eager等人的方法是:在判斷是否要在本地處理一個任務時,無需交換計算機之間的狀態信息,一旦服務隊列或等待服務隊列的長度大於閥值時,就傳送這個任務,而且傳送的是剛剛接收的任務。而進程遷移能夠遷移正在執行的任務,是對這種只能傳送剛剛接收的任務的一種改進。

    Zhou在模擬研究七個負載平衡算法時,其傳送策略都采用閥值策略。它的閥值策略基於兩個閥值∶計算機的負載閥值Load和任務執行時間閥值TCPU。如果計算機的負載超過Load並且任務的執行時間超過TCPU時,就把此任務傳送到其它計算機執行。

    放置策略



    經過總結,共有以下四種放置策略。

  • 集中策略。每隔P秒,其中一個計算機被指定為"負載信息中心"(LIC),接受所有其它負載的變更值,並把它們

  • Copyright © Linux教程網 All Rights Reserved