2012-04-26 14 views
0

cloudSimでは、cloudlet_1が(実行時間について言えば)後に開始するように強制することはできますか?CloudSimでの実行順序の適用

は、私はこのようにそれをいくつかのことをしよう:

cloudlet_2.setExecStartTime(cloudlet_1.getFinishTime()); 

しかし、これはcloudletsの両方が0.0secで開始し、実行時には効果がありません。

cloudlet_1仕上げが実行する前に、実行(あるいはデータ・センターに提出されていない)を起動しないようにcloudlet_2を強制する任意のメカニズムがありますか?

これは、開始時刻を設定することによって、またはいくつかのcloudlet_2のブール条件、またはその他のトリックを課すことによって行うことができます...?

上記の要件は、私が次々に実行する必要がありcloudletsのいくつかのパイプライン計算パターン必要があるという事実から来ている(いない一度に。)

感謝。完全にあなたのスケジューリングポリシーに依存している時に実行されますcloudlet

+0

あなたのパフォーマンスに応じてあなたのような第二の何かを回すことができます: 'しばらく;'パフォーマンスを向上させるためにあなたが '条件付きvariable'と' lock'を使用することができます(cloudlet_1.done()!)。 – twain249

+0

どういう意味ですか?while(!cloudlet_1.done()); ? それは私が特に欲しいものです。 cloudSimにそのようなメソッド "done()"はありません。 – LeTex

+0

私はちょうど例としてそれを使用していた 'done()'メソッドがないと思いました。 'cloudSim'が終了したときに通知するフラグ/方法はありますか? – twain249

答えて

0

。ここで必要なのはFCFSポリシーのようなものです。実際、CloudsimのデフォルトスケジューリングポリシーはFCFSです。

しかし、あなたの要件ごととして「cloudlet_2はcloudlet_1後に開始すべきである」、あなたは、VM/cloudletスケジューリングポリシーを変更する必要があります。私はあなたが必要と思うのは、両方のVM/cloudletスケジューラのためのSpaceSharedPolicyです。確かに確かです。

異なるスケジューリングポリシーを適用するための4例では、Figure No 4 of this.

とコードでこれらのスケジューラを変更する方法についてを参照することができ、あなたがCloudsimパッケージであり、すでにあるexamplesを参照することができ、があります。例えば

、あなたはVMのスケジューラを変更したい場合は、あなたがライン上の例の無い188でパラメータ[VmSchedulerTimeSharedまたはVmSchedulerSpaceShared]を変更することができますし、cloudletスケジューラを変更するためには、パラメータ[CloudletSchedulerTimeShared()またはCloudletSchedulerSpaceSharedを(変更することができます)]上記の例の104番の行で。

関連する問題