如何在CloudSim Plus 中为Cloudlets 设置非相对提交延迟?

How to set non-relative submission delay for Cloudlets in CloudSim Plus?

我想推迟 Cloudlet 的到来,以便他们晚些到达。我知道 setSubmissionDelay() 但我想要一个与当前模拟时间无关的提交延迟,就像 setSubmissionDelay() 那样。例如,如果 cloudlet 有 5 秒的延迟,它将恰好在那个时间创建,而不是像 5.10 秒(0.10 秒是事件之间的最短时间)。我考虑过使用侦听器来侦听和拦截 cloudlet 将要提交给 VM 的那一刻以获取时间(可能是 .10 或一些小时间值),然后减去我的延迟时间那个时间(cloudlet 的当前延迟 - 当前模拟时间 = 非相对提交延迟)。

问题是我找不到执行此操作的侦听器。查看下面的控制台输出让我想到可能使用了侦听器或某种方法来打印,在它之前发送了 cloudlet。如果存在这样的东西,我想使用它。任何对类似目标的文档或存储库的访问都将受到高度赞赏。

参考:https://github.com/manoelcampos/cloudsim-plus/tree/master/cloudsim-plus/src/main/java/org/cloudbus/cloudsim

[0;39m[34mINFO  0.10: DatacenterBrokerSimple2: Sending Cloudlet 0 to Vm 0 in Host 0/DC 1 with a requested delay of 9 seconds.

你真的需要这么精确吗? 0.1 秒是一个非常小的值。 无论如何,您可以将 Datacenter schedulingInterval 设置为您想要的最小间隔(例如,1 秒),然后使用 CloudSim Plus 的 onClockTickListener 来跟踪模拟时间并在需要时提交您的小云。请参阅下面的代码片段,但您无法保证事件会在您希望的时间准确触发。


public class Example{
    private static final int SCHEDULING_INTERVAL = 1; //in seconds

    public Example(){
       //.......... instantiate simulation objects here

       datacenter0.setSchedulingInterval(SCHEDULING_INTERVAL); 
       simulation.addOnClockTickListener(this::clockTickListener);

       //.......... the rest of the simulation code here
    }

    private void clockTickListener(final EventInfo info) {
        final int seconds = (int)info.getTime();

        if(seconds == 5) {
           //create and submit your cloudlets
        }
    }
}

查看 RandomCloudletsArrivalExample.java 了解更多详情。