私はCloudsimに取り組んでいます。クラウドレットの送信を 30 秒遅らせるにはどうすればよいですか? 最初のクラウドレットが 30 秒後に送信された後、2 番目のクラウドレットが実行を開始する必要があります。
これを行う方法はありますか?
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!!!!
}
Cloudsim の API についてはわかりません。コードを使用して時間遅延を追加する必要がある場合は、Java を使用してそれを行うこともできます..
使用する
Thread.sleep(3000);
ドキュメントhttp://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#sleep(long , int)で詳細を読むことができます
submitCloudlets メソッドのデータセンター ブローカー クラスで、SendNow 関数をコメント化し、send 関数を使用します。
この関数には Delay パラメータがあります。あなたが望む時間に遅延を変更します。次に、クラウドレットの getSubmissionTime を使用すると、このパラメーターを取得します。
CloudSim Plus は、このような機能をネイティブでサポートしています。この単一のメソッド呼び出しを行うだけbroker.submitCloudletList(cloudletList, submissionDelay)
で、Cloudlets は指定された遅延 (秒単位) の後にのみ送信されます。
この方法では、このような基本機能を実装するためにフレームワーク コードを変更する必要はありません。フレームワークのクラスを変更して、シミュレーション専用の基本機能を含めると、フレームワークのフォークを最新バージョンに更新するのに苦労する場合があります。
詳細については、 https://cloudsimplus.org#main-exclusive-featuresで機能 #8 を確認してください。