在cloudSim中,我如何强制执行cloudlet_2应该在cloudlet_1之后启动(说到执行时间)?
我尝试做这样的事情:
cloudlet_2.setExecStartTime(cloudlet_1.getFinishTime());
但这在运行时没有影响,两个cloudlet都以0.0秒开始。
在cloudlet_1完成执行之前,是否有任何机制可以强制cloudlet_2不开始执行(甚至不提交到数据中心)?
这可以通过设置开始时间或在cloudlet_2上施加一些布尔条件,或其他技巧...... ???
上述要求来自于我需要一些cloudlet的管道计算模式,这些模式应该一个接一个地执行(不是一次执行。)
感谢。
答案 0 :(得分:0)
哪个cloudlet执行完全取决于您的调度策略。这里你需要的是FCFS政策。实际上,Cloudsim的默认调度策略是FCFS。
但是根据您的要求" cloudlet_2应该在cloudlet_1"之后启动,您需要更改vm / cloudlet调度策略。我认为你需要的是用于vm / cloudlet调度程序的SpaceSharedPolicy。但是不确定。
有4种情况适用于不同的日程安排政策,您可以参考Figure No 4 of this.
关于如何在代码中更改这些调度程序,您可以参考Cloudsim包中已有的examples。
例如,如果要更改VM调度程序,可以在上面示例的第188行更改参数 [VmSchedulerTimeShared或VmSchedulerSpaceShared] ,并且要更改cloudlet调度程序,您可以更改参数 [上面例子第104行的CloudletSchedulerTimeShared()或CloudletSchedulerSpaceShared()] 。