2

私はCloudsimに取り組んでいます。クラウドレットの送信を 30 秒遅らせるにはどうすればよいですか? 最初のクラウドレットが 30 秒後に送信された後、2 番目のクラウドレットが実行を開始する必要があります。

これを行う方法はありますか?

4

4 に答える 4

1

CloudSim でクラウドレット間に遅延を追加するには、クラス「DatacenterBroker」のメソッド「submitCloudLets」にアクセスする必要があります。メソッド「submitCloudlets」では、メソッド「sendNow」にアクセスして編集する必要があります。次のサンプル コードを挿入する必要があります。

protected void sendNow(int entityId, int cloudSimTag, Object data) {
    if(cloudSimTag==CloudSimTags.CLOUDLET_SUBMIT){               
          send(entityId, delay /* enter your delay value here or call a method that calculates the delay value randomly */, cloudSimTag, data);
    }
    else send(entityId, 0, cloudSimTag, data); // CASE the cloudsim tag was not "CLOUDLET_SUBMIT". !!! If you remove this line, your program does not work!!!!
 }
于 2015-04-01T03:38:05.443 に答える
0

Cloudsim の API についてはわかりません。コードを使用して時間遅延を追加する必要がある場合は、Java を使用してそれを行うこともできます..

使用する

Thread.sleep(3000);

ドキュメントhttp://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#sleep(long , int)で詳細を読むことができます

于 2013-04-15T10:56:55.640 に答える
-1

submitCloudlets メソッドのデータセンター ブローカー クラスで、SendNow 関数をコメント化し、send 関数を使用します。

この関数には Delay パラメータがあります。あなたが望む時間に遅延を変更します。次に、クラウドレットの getSubmissionTime を使用すると、このパラメーターを取得します。

于 2015-02-25T09:17:45.340 に答える
-1

CloudSim Plus は、このような機能をネイティブでサポートしています。この単一のメソッド呼び出しを行うだけbroker.submitCloudletList(cloudletList, submissionDelay)で、Cloudlets は指定された遅延 (秒単位) の後にのみ送信されます。

この方法では、このような基本機能を実装するためにフレームワーク コードを変更する必要はありません。フレームワークのクラスを変更して、シミュレーション専用の基本機能を含めると、フレームワークのフォークを最新バージョンに更新するのに苦労する場合があります。

詳細については、 https://cloudsimplus.org#main-exclusive-featuresで機能 #8 を確認してください。

于 2018-10-17T18:51:29.513 に答える