2

假設我有一個n Erlang節點的集羣,其中一些節點可能位於我的局域網上,而其他節點可能使用WAN(即通過Internet)連接,那麼適合哪些節點)不同的帶寬可用性/行爲(例如,誘發延遲)和b)具有不同計算能力的節點(或者甚至針對該問題的內存限制)?劃分Erlang節點的優先級

換句話說,我如何優先考慮具有大量計算能力的本地節點,而不是那些具有高延遲且可能不那麼強大的節點,或者如何理想地將具有高傳輸延遲的高性能遠程節點優先化爲特定優先級那些計算/傳輸量相對較大的過程(即每個消息完成的工作量,每個時間單位)的比率是多少?

我主要是基於基準測試集羣中的每個節點,通過向它們發送基準進程以在初始化期間運行來考慮,以便可以計算涉及雜亂的潛伏期以及整體計算速度(即,使用節點特定的計時器來確定節點以任何任務終止的速度)。

可能這樣的事情必須重複進行,一方面爲了獲得有代表性的數據(即平均數據),另一方面它可能甚至在運行時有用,以便成爲能夠動態調整以適應不斷變化的運行環境

(在相同的意義,人們可能希望在本地運行的優先級比那些在其他機器上運行的節點)

這將意味着希望優化內部作業調度,以便特定節點處理具體工作。

回答

1

我們只在內部局域網/廣域網(例如舊金山到倫敦的廣域網)上做了類似的事情。歸結於這些因素的組合的問題:在簡單地在一個地方(內部)進行遠程呼叫

  1. 塔頂調用
  2. 的網絡延遲到節點(作爲請求/結果的功能有效載荷)
  3. 遠程節點
  4. 要執行的函數
  5. 無論呼叫的配料提供任何性能改進,如果有設置一個共享的「靜態」數據所需的計算能力的性能。

對於1.我們假定沒有開銷(比別人是可忽略的)

對於2.我們積極利用探測消息以測量往返行程時間測量它,我們整理製成實際​​的呼叫信息

對於3.我們測量它的節點上,並讓他們的廣播的信息(這改變取決於負載電流活性的節點上)

對於4和5,我們的工作了憑經驗爲給定的批次

然後調用者求解以獲得一批調用的最小解(在我們的例子中定價一大堆派生),並將它們分批發送到節點。

我們利用這種技術獲得了更好的利用我們的計算「網格」,但這是相當費力的。我們還有額外的優勢,即網格僅被這個環境使用,所以我們有更多的控制權。增加互聯網組合(可變延遲)和網格的其他用戶(可變性能)只會增加複雜性和可能遞減的收益...

+0

感謝您的迴應,您使用的技術幾乎符合我一直在想象(以及我在問題中所勾畫的)。我認爲看到這種場景會被某種形式的erlang基礎架構支持(例如使用OTP)會很有趣。我接受了你的答案,因爲它非常接近我的情況。 – none 2009-06-16 22:52:34

1

在網格計算的背景下,您正在討論的問題已經以多種不同方式解決(例如,請參閱Condor)。爲了更徹底地討論這個問題,我認爲需要一些額外的信息(要解決的問題的同質性,對節點的控制程度(即是否有意外的外部負載等?))。

實現自適應作業調度程序通常還需要調整探測可用資源的頻率(否則由於探測而導致的開銷可能會超過性能增益)。

理想情況下,您可以使用基準測試來提出一個經驗(統計)模型,使您能夠預測給定問題的計算硬度(需要良好的領域知識和問題特徵,執行速度快且易於提取),另一個用於預測通信開銷。兩者結合使用可以實現簡單的調度程序,該調度程序將其決策基於預測模型,並通過考慮實際執行時間作爲反饋/回報(例如,通過reinforcement learning)來改進它們。