【问题标题】:Submit cloudlet task by some delay延迟提交 cloudlet 任务
【发布时间】:2013-04-15 10:43:16
【问题描述】:

我正在开发 Cloudsim。如何将 cloudlet 提交延迟 30 秒?第一个cloudlet在30秒后提交后,第二个cloudlet必须开始执行。

有什么办法吗?

【问题讨论】:

    标签: java cloudsim


    【解决方案1】:

    CloudSim Plus 本身就支持这样的功能。 您只需调用这个单一的方法broker.submitCloudletList(cloudletList, submissionDelay),Cloudlets 将仅在给定的延迟(以秒为单位)之后提交。

    这样,您无需更改框架代码即可实现这样的基本功能。如果您更改框架的类以包含仅用于模拟的基本功能,则可能很难将框架的分支更新为最新版本。

    查看https://cloudsimplus.org#main-exclusive-features 的功能 #8 了解更多详情。

    【讨论】:

    • 没错,在 CloudSim Plus 上真的很容易。正如 Manoel 所说,您必须使用 broker.submitCloudletList(cloudletList, submissionDelay);
    【解决方案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!!!!
     }
    

    【讨论】:

      【解决方案3】:

      我不确定Cloudsim的api,如果你只是需要使用代码添加时间延迟,你也可以使用java来做到这一点..

      使用

      Thread.sleep(3000);
      

      您可以在文档中了解更多信息 http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#sleep(long, int)

      【讨论】:

      • 这行不通。 CloudSim 是一个基于事件的模拟,经过模拟的时间的概念与运行程序的实际经过时间完全解耦。
      【解决方案4】:

      在 submitCloudlets 方法的数据中心代理类中,注释 SendNow 函数并使用发送函数。

      这个函数有一个延迟参数。将延迟更改为您想要的时间。 然后,如果您使用 cloudlet 的 getSubmissionTime ,您将获得此参数。

      【讨论】:

        猜你喜欢
        • 2013-03-28
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 2015-09-14
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多