2

n個のErlangノードのクラスターがあり、そのうちのいくつかはLAN上にあり、他のノードはWANを使用して(つまり、インターネット経由で)接続されていると仮定すると、a)異なる帯域幅の可用性/動作に対応するための適切なメカニズムは何ですか? (たとえば、遅延が誘発される)およびb)計算能力が異なるノード(またはそのことについてはメモリの制約さえある)?

言い換えると、計算能力の高いローカルノードを、レイテンシが高く強力でない可能性のあるローカルノードよりも優先する方法、または送信レイテンシの高い高性能リモートノードを優先して、これらのプロセスを具体的に実行する方法を教えてください。比較的巨大な計算/送信(つまり、メッセージごと、時間単位ごとの完了した作業)の比率?

私は主に、クラスター内の各ノードにベンチマークプロセスを送信して初期化中に実行することでベンチマークを行うことを考えています。これにより、メッセージ処理に関連するレイテンシーと全体的な計算速度を計算できます(つまり、ノードを使用します)。 -ノードが任意のタスクで終了する速度を決定するための特定のタイマー)。

おそらく、そのようなことは、一方では代表的なデータ(つまり平均化データ)を取得するために繰り返し実行する必要があり、他方では動的に調整できるようにするために実行時に役立つ可能性さえあります実行時条件の変更に。

(同じ意味で、他のマシンで実行されているノードよりもローカルで実行されているノードを優先したい場合があります)

これは、特定のノードが特定のジョブを処理できるように、内部ジョブディスパッチを最適化することを目的としています。

4

2 に答える 2

1

あなたが話している問題は、グリッドコンピューティングのコンテキストで、さまざまな方法で対処されてきました(たとえば、Condorを参照)。これをより徹底的に議論するには、いくつかの追加情報が必要だと思います(解決する問題の均一性、ノードの制御の程度[つまり、予期しない外部負荷などがありますか?])。

アダプティブジョブディスパッチャーを実装するには、通常、使用可能なリソースをプローブする頻度も調整する必要があります(そうしないと、プローブによるオーバーヘッドがパフォーマンスの向上を超える可能性があります)。

理想的には、ベンチマークテストを使用して、特定の問題の計算難度を予測できる経験的(統計)モデルを考え出すことができる場合があります(実行速度に大きな影響を与える優れたドメイン知識と問題機能が必要です。抽出が簡単)、および通信オーバーヘッドを予測するためのもう1つ。両方を組み合わせて使用​​すると、予測モデルに基づいて決定を行い、フィードバック/報酬として実際の実行時間を考慮して(強化学習などを介して)予測モデルを改善する単純なディスパッチャーを実装できるようになります。

于 2009-05-22T08:07:54.840 に答える
1

内部LAN/WANのみ(たとえば、サンフランシスコからロンドンへのWAN)で、これと同様のことを行いました。問題は、これらの要因の組み合わせに要約されます。

  1. ローカル(内部)呼び出しを介してリモート呼び出しを行うだけのオーバーヘッド
  2. ノードへのネットワーク遅延(要求/結果ペイロードの関数として)
  3. リモートノードのパフォーマンス
  4. 関数を実行するために必要な計算能力
  5. 共有の「静的」データセットがあった場合に、呼び出しのバッチ処理によってパフォーマンスが向上するかどうか。

1.については、オーバーヘッドがないと仮定しました(他のものと比較して無視できる程度でした)

2.については、プローブメッセージを使用して積極的に測定し、往復時間を測定し、実際に行われた通話からの情報を照合しました。

3.の場合、ノードでそれを測定し、その情報をブロードキャストしました(これはノードでアクティブな負荷電流に応じて変化しました)

4と5については、与えられたバッチに対して経験的に計算しました。

次に、呼び出し元は、呼び出しのバッチの最小ソリューション(この場合は派生物の全体の価格設定)を取得するために解決し、それらをバッチでノードに送信しました。

この手法を使用して、計算「グリッド」をより有効に活用できましたが、かなりの労力を要しました。グリッドはこの環境でのみ使用されるという追加の利点があったため、より多くの制御が可能でした。インターネットミックス(可変遅延)とグリッドの他のユーザー(可変パフォーマンス)を追加すると、複雑さが増すだけで、収穫逓減が発生する可能性があります...

于 2009-06-16T22:13:18.283 に答える