特定の並列アプリケーションがマスタースレーブ設計を使用して多数のワークロードを処理するとします。各ワークロードは完了するまでに数サイクルかかります。特定のワークロードにかかるサイクル数は、既知の確率変数によって与えられます。そのようなワークロードが、同等のスレーブ(処理ノード)があると想定します。当然、この質問のより一般的なバージョンは、異なる機能のスレーブのケースに対処しますが、今のところこれは無視します。
マスターはワークロードを処理できませんが、ワークロードをスレーブノードに分散し、スレーブノードの進行状況を監視できます。具体的には、マスターは次のアクションを実行できます。
- 空きノードのワークロードの処理を即座に開始します。
- 以前に開始されたワークロードのバッチのノードによる完了の確認を瞬時に受信します。
- いつでも、瞬時に、すべてのノードの状態(空きまたはビジー)、完了したワークロードの数、および残っているワークロードの数を特定します。
簡単にするために、が除算すると仮定します。
すべてのスレーブを使用してすべてのワークロードの合計実行時間を最小化するための負荷分散戦略には少なくとも2つのカテゴリがあります(明確にするために、総処理時間ではなく、メイクスパンまたは実時間について話します。これは、この質問で行われている単純化の仮定の下で使用されている負荷分散戦略):静的および動的。静的スキームでは、すべての配置決定は時間で行われ。動的スキームでは、マスターは一部のスレーブによって行われている進行状況に関する情報を使用して配置決定を行うことができるため、より良い使用率を達成できます(実際には、静的スケジューリングと比較して動的スケジューリングに関連するオーバーヘッドがありますが、これらは無視してください)。今いくつかの質問のために:
- ワークロードを静的にスケジュールするには、スレーブ間でワークロードのバッチをできるだけ均等に分割するよりも良い方法があります(簡単にするために、は分割するので、バッチを完全に均等に静的にスケジュールできると仮定することもできます)。 ?もしそうなら、どうですか?
- 最適な静的スケジューリングポリシーを使用して、の平均および標準偏差に関して、総実行時間の平均および標準偏差はどうあるべきですか?
単純なダイナミック・ロード・バランサは、スケジュール可能性がのバッチ最初に各スレーブへ作業負荷を、次に、ノードは初期完了するとバッチを、追加のバッチスケジュール先着順に各スレーブへ作業負荷を。したがって、2つのスレーブノードが最初にそれぞれ2つのワークロードの2つのバッチをスケジュールし、最初のスレーブが2つのバッチを完了すると、最初のスレーブに追加のバッチがスケジュールされ、2番目のスレーブは動作し続けます。最初のスレーブが2番目のバッチが最初の作業を完了する前に新しいバッチを完了すると、マスターは最初のスレーブへのスケジューリングを続行します。2番目のスレーブが作業の実行を完了すると、新しいワークロードのバッチが発行されます。例:
DYNAMIC STATIC
POLICY POLICY
slave1 slave2 slave1 slave2
------ ------ ------ ------
t<0 -- -- -- --
t<1 batch1 batch3 batch1 batch3
batch2 batch4 batch2 batch4
batch5 batch7
batch6 batch8
t=1 -- batch3 batch5 batch3
batch4 batch6 batch4
batch7
batch8
t<2 batch5 batch3 batch5 batch3
batch4 batch6 batch4
batch7
batch8
t=2 -- batch4 batch6 batch4
batch7
batch8
t<3 batch6 batch4 batch6 batch4
batch7
batch8
t=3 -- -- -- batch7
batch8
t<4 batch7 batch8 -- batch7
batch8
t=4 -- -- -- batch8
t<5 -DONE- -- batch8
t=5 -- --
t < 6 -DONE-
明確にするために、バッチ1と2の処理にはそれぞれ1/2秒かかり、バッチ3の処理には2秒かかり、バッチ4〜8の処理にはそれぞれ1秒かかります。この情報は事前にわかっていません。静的スキームでは、すべてのジョブがt = 0で分散されますが、動的スキームでは、ジョブの実際の実行時間を「分散」で考慮に入れることができます。静的スキームは動的スキームよりも1秒長くかかり、slave1は3秒動作し、slave2は5秒動作することがわかります。動的スキームでは、両方のスレーブが4秒間動作します。
これを書く動機となった質問について:
- 上記の動的負荷分散ポリシーを使用して、の平均および標準偏差の観点から、合計実行時間の平均および標準偏差はどうあるべきですか?
興味のある読者は、これが宿題ではないことを確信していますが、特定のコースで宿題として取得することを期待するよりも難しいことはおそらくありません。それを考えると、誰かがこの質問に反対し、私にいくつかの作品を見せることを要求した場合、私は義務を負うことになります(近いうちに時間があるかどうかはわかりませんが)。この質問は、実際には1〜2学期前にやったことがないいくつかの作業に基づいており、経験的な結果は、私たちが去ったところです。ヘルプや努力のおかげで、皆さんが何をまとめたかを見てみたいと思います。