【发布时间】:2013-04-15 10:43:16
【问题描述】:
我正在开发 Cloudsim。如何将 cloudlet 提交延迟 30 秒?第一个cloudlet在30秒后提交后,第二个cloudlet必须开始执行。
有什么办法吗?
【问题讨论】:
我正在开发 Cloudsim。如何将 cloudlet 提交延迟 30 秒?第一个cloudlet在30秒后提交后,第二个cloudlet必须开始执行。
有什么办法吗?
【问题讨论】:
CloudSim Plus 本身就支持这样的功能。
您只需调用这个单一的方法broker.submitCloudletList(cloudletList, submissionDelay),Cloudlets 将仅在给定的延迟(以秒为单位)之后提交。
这样,您无需更改框架代码即可实现这样的基本功能。如果您更改框架的类以包含仅用于模拟的基本功能,则可能很难将框架的分支更新为最新版本。
查看https://cloudsimplus.org#main-exclusive-features 的功能 #8 了解更多详情。
【讨论】:
broker.submitCloudletList(cloudletList, submissionDelay);。
要在 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 函数并使用发送函数。
这个函数有一个延迟参数。将延迟更改为您想要的时间。 然后,如果您使用 cloudlet 的 getSubmissionTime ,您将获得此参数。
【讨论】: