全体的な実行時間を最小化するための負荷分散スキームの分析


7

特定の並列アプリケーションがマスタースレーブ設計を使用して多数のワークロードを処理するとします。各ワークロードは完了するまでに数サイクルかかります。特定のワークロードにかかるサイクル数は、既知の確率変数によって与えられます。そのようなワークロードが、同等のスレーブ(処理ノード)があると想定します。当然、この質問のより一般的なバージョンは、異なる機能のスレーブのケースに対処しますが、今のところこれは無視します。Xnm

マスターはワークロードを処理できませんが、ワークロードをスレーブノードに分散し、スレーブノードの進行状況を監視できます。具体的には、マスターは次のアクションを実行できます。

  1. 空きノードのワークロードの処理を即座に開始します。k
  2. 以前に開始されたワークロードのバッチのノードによる完了の確認を瞬時に受信します。k
  3. いつでも、瞬時に、すべてのノードの状態(空きまたはビジー)、完了したワークロードの数、および残っているワークロードの数を特定します。

簡単にするために、が除算すると仮定します。kn

すべてのスレーブを使用してすべてのワークロードの合計実行時間を最小化するための負荷分散戦略には少なくとも2つのカテゴリがあります(明確にするために、総処理時間ではなく、メイクスパンまたは実時間について話します。これは、この質問で行われている単純化の仮定の下で使用されている負荷分散戦略):静的および動的。静的スキームでは、すべての配置決定は時間で行われ。動的スキームでは、マスターは一部のスレーブによって行われている進行状況に関する情報を使用して配置決定を行うことができるため、より良い使用率を達成できます(実際には、静的スケジューリングと比較して動的スケジューリングに関連するオーバーヘッドがありますが、これらは無視してください)。今いくつかの質問のために:t=0

  1. ワークロードを静的にスケジュールするには、スレーブ間でワークロードのバッチをできるだけ均等に分割するよりも良い方法があります(簡単にするために、は分割するので、バッチを完全に均等に静的にスケジュールできると仮定することもできます)。 ?もしそうなら、どうですか?kmmn/k
  2. 最適な静的スケジューリングポリシーを使用して、の平均および標準偏差に関して、総実行時間の平均および標準偏差はどうあるべきですか?μσX

単純なダイナミック・ロード・バランサは、スケジュール可能性がのバッチ最初に各スレーブへ作業負荷を、次に、ノードは初期完了するとバッチを、追加のバッチスケジュール先着順に各スレーブへ作業負荷を。したがって、2つのスレーブノードが最初にそれぞれ2つのワークロードの2つのバッチをスケジュールし、最初のスレーブが2つのバッチを完了すると、最初のスレーブに追加のバッチがスケジュールされ、2番目のスレーブは動作し続けます。最初のスレーブが2番目のバッチが最初の作業を完了する前に新しいバッチを完了すると、マスターは最初のスレーブへのスケジューリングを続行します。2番目のスレーブが作業の実行を完了すると、新しいワークロードのバッチが発行されます。例:ikik

         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. 上記の動的負荷分散ポリシーを使用して、の平均および標準偏差の観点から、合計実行時間の平均および標準偏差はどうあるべきですか?μσX

興味のある読者は、これが宿題ではないことを確信していますが、特定のコースで宿題として取得することを期待するよりも難しいことはおそらくありません。それを考えると、誰かがこの質問に反対し、私にいくつかの作品を見せることを要求した場合、私は義務を負うことになります(近いうちに時間があるかどうかはわかりませんが)。この質問は、実際には1〜2学期前にやったことがないいくつかの作業に基づいており、経験的な結果は、私たちが去ったところです。ヘルプや努力のおかげで、皆さんが何をまとめたかを見てみたいと思います。


1
の役割は何ですか?正確にワークロードのみをスケジュールできる場合は、回かかる単一のワークロードについて話すのと同じではありませんか?ワークロードはすべてt = 0に到達しますか?kkk
アレックステンブリンク

実行時間が、がインスタンス( "ワークロード")であり、が既知の関数であり、が現在のマシンの速度であると仮定するのは、より自然ではありませんか?その場合は、マシンの速度を使用して決定を通知し、速度がわからない(または速度が変化する)場合は速度を学習できます。ランダム実行時間はあなたに与えていないすべてのあなたの仕事を配布する方法についての情報を。f(I)/sIfs
ラファエル

@AlextenBrinkはい、すべてのワークロードは時間t = 0に到着します。ある意味で、はい、この質問ではk = 1と想定できます...しかし、Xはkのワークロードのバッチではなく、単一のワークロード用です。どんなイベントでも、kは実際に調整したいものかもしれません(おそらく通信待ち時間のオーバーヘッドを克服するため)。k = 1の残りを解決できる場合、他のkへのジャンプは簡単です(分布Y = X + X + ... + X(k回)を見つけてください)。
Patrick87 2012年

@Raphaelランダムなワークロードサイズでは、作業の分散方法に関する有用な情報が得られないことに同意します...それが問題の意図です。ここではいくつかの簡略化が行われていますが、私が興味を持っているのは、質問の範囲を(おそらく)拡張する前に、これらの単純化された仮定を使用してこれらの単純なメソッド(静的および動的)を主に分析することです(たとえば、より多くの情報があると言って)特定のワークロードに必要な作業量について、および均一に-または常に-実行ノードの仮定を削除することにより)。
Patrick87

@Raphael実際、この質問の動機はまさにこれです。特定のワークロードにかかる時間について何もわからない場合は、上記の静的および動的な方法よりもはるかに優れているでしょうか。いずれにせよ、静的メソッドと比較して動的メソッドの方がはるかに優れています(悪くなることはありません。動的が実際に優れている例を示します)。
Patrick87

回答:


5

更新:

makespanを最小化しようとする新しいバージョンの場合、静的スケジュールには依然として最適な期待値があります。

してみましょうメイクスパンのためのランダム変数です。してみましょうタイムスレーブに終了します。次に、ます。してみましょうスレーブに割り当てられたジョブの数も。次に、ます。MFiiM=maxi(Xi)ciiXi=i=1ciX=ciX

場合ための累積確率分布関数であり、は、は、累積確率分布関数です。つまり、 and、通常どおり。Fi(x)XP(M<m) =P(maxi(Xi)<m) =iP(Xi<m) =iP(ciX<m) =iP(X<mci) =iF(mci)MEM=x(iF(xci))dxstddev(M)=(xEM)2(iF(xci))dx

最小化最小限になる我々はすべて保持したい手段、(としての均等低い単調増加し、0と1の間れています)。これは、すべてのタスクをスレーブ間で均等に分散する必要があることを意味します。これは、静的スケジュールが実現することとまったく同じです。EMiF(xci)ciF


自分が何を求めているのか、おそらくはっきりしていなかったと思います。「合計時間」とは、「プロセス時間」ではなく「壁時計時間」を意味します。もちろん、私がすべてのプログラムのランタイムを一緒に追加することだけに興味がある場合は、スケジュールに違いはありません。最小限にしたいのは、すべてのスレーブがすべての作業を完了するのにかかる合計時間です。私が提供する例では、私が興味を持っている時間は4秒です。あなたが話している時間は8秒だと思います。それは、スレーブがコンピューティングに費やす時間だからです。たとえば、1つのスレーブが他のスレーブより先に終了する可能性があります。つまり、私のメトリックは「ストラグラー」によって傷つけられます。
Patrick87

別の言い方をすると、私が質問を意図している方法です。静的スキームと動的スキームは、提供する例ではパフォーマンスが異なり、動的の方が優れています。それが私の質問から明らかでない場合は、質問を編集する必要があります。
Patrick87

@ Patric87:次に、あなたが探している単語は 'makespan'です。これは、一部のスレーブが終了する最後の時間として定義されます。このケースの分析も提供できますが(今日ではないかもしれませんが)、もう少し長くなります:)
Alex ten Brink

はい、makespanはそのための用語です。質問の文脈を理解する背景のない他の人々による混乱を防ぐために、質問でその用語を明示的に使用するのが最善だと思います。
Patrick87 2012年

多分私は間違っていますが、X + X!= 2X、一般的に正しいですか?Xがサイコロのように均一に分布している場合はどうなりますか?サイコロを2回振って数を加えることと、1回サイコロを振って2を掛けることには違いがあります(平均は同じですが、形と広がりが異なります)。残りの分析は良さそうですが、ポイントが有効である場合、私のポイントの影響が何であるかは完全にはわかりません。平均には影響がなくてもstdevに影響があり、期待値の期待最大値がstdevに影響される可能性があるので、それは直感的に考えられます。
Patrick87
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.