負載均衡
編輯在計算中,負載平衡是將一組任務分配到一組資源(計算單元)上的過程,目的是使它們的整體處理更有效率。 負載均衡可以優化響應時間,避免一些計算節點不均勻地過載而其他計算節點處于空閑狀態。
負載均衡是并行計算機領域的研究課題。 存在兩種主要方法:靜態算法,不考慮不同機器的狀態;動態算法,通常更通用、更高效,但需要在不同計算單元之間交換信息,有丟失的風險 的效率。
問題概述
編輯負載平衡算法總是試圖回答特定問題。 除其他事項外,必須考慮任務的性質、算法的復雜性、運行算法的硬件架構以及所需的容錯能力。 因此,必須找到妥協以xxx地滿足特定于應用程序的要求。
任務性質
負載平衡算法的效率主要取決于任務的性質。 因此,決策時可獲得的任務信息越多,優化的潛力就越大。
任務的大小
完美了解每個任務的執行時間可以達到最佳負載分配(參見前綴和算法)。 不幸的是,這實際上是一個理想化的案例。 知道每個任務的準確執行時間是極其罕見的情況。
出于這個原因,有幾種技術可以了解不同的執行時間。 首先,在任務大小相對均勻的幸運場景中,可以考慮每個任務大約需要平均執行時間。 另一方面,如果執行時間非常不規則,則必須使用更復雜的技術。 一種技術是向每個任務添加一些元數據。 根據類似元數據的先前執行時間,可以根據統計信息對未來的任務進行推斷。
依賴
在某些情況下,任務相互依賴。 這些相互依賴性可以通過有向無環圖來說明。 直覺上,有些任務只有在其他任務完成后才能開始。
假設預先知道每個任務所需的時間,則最佳執行順序必須導致總執行時間最小化。 盡管這是一個 NP-hard 問題,因此很難準確求解。 有一些算法,如作業調度程序,可以使用元啟發式方法計算最佳任務分布。
任務分離
對于負載平衡算法設計至關重要的任務的另一個特征是它們能夠在執行期間分解為子任務。 后面介紹的樹形計算算法就充分利用了這種特殊性。
靜態和動態算法
靜態
當負載平衡算法不考慮系統狀態以分配任務時,它是靜態的。 因此,系統狀態包括某些處理器的負載級別(有時甚至過載)等度量。 相反,預先對整個系統做出假設,例如傳入任務的到達時間和資源需求。 此外,處理器的數量、它們各自的功率和通信速度都是已知的。 因此,靜態負載平衡旨在將一組已知任務與可用處理器相關聯,以最小化某個性能函數。 訣竅在于這個性能函數的概念。
靜態負載平衡技術通常集中在路由器或 Master 周圍,它分配負載并優化性能功能。 這種最小化可以考慮與要分配的任務相關的信息,并得出預期的執行時間。
靜態算法的優點是它們易于設置并且在相當常規的任務(例如處理來自網站的 HTTP 請求)的情況下非常有效。 然而,任務分配中仍然存在一些統計差異,這可能導致某些計算單元過載。
動態
與靜態負載分配算法不同,動態算法考慮了系統中每個計算單元(也稱為節點)的當前負載。 在這種方法中,任務可以動態地從過載節點移動到負載不足的節點,以便接收更快的處理。 雖然這些算法的設計要復雜得多,但它們可以產生出色的結果,尤其是當執行時間因任務而異時。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/193316/