本文准备介绍Cloudsim中云任务(Cloudlet)到虚拟机(Vm)的映射的实现方法,为相关扩展实验和二次开发提供启发。
先说两个CloudSim机制上的发现:
1、真实云环境(如IaaS)中,VM和主机是密不可分的,没有host怎么创建VM呢?而且VM的资源(尤其是处理器性能)与主机应该是绑定关系,例如2核的VM在host-A上是2*2.5Ghz,在host-B上可能就是2*3Ghz。但是,在Cloudsim中,VM更加像非常独立的实体,它在实例化时就有确定的内存大小、带宽以及MIPS。
2、真实云环境的VM在空闲时,仅占用少量资源(某些时候可以选择忽略)。但是根据我的实验发现,在CloudSim中,VM一旦submit并分配给某个host,这个host的资源会被立刻占用,即使VM上根本没有Cloudlet运行。比如没有运行任务Cloudlet的VM1分配给host-A,host-A的可用MIPS就减少了2*2.5=5Ghz。
现在回到正题,CloudSim中Cloudlet->VM的映射是由DataCenterBroker对象完成的,DCBroker首先提供了最直接的方法:
public void bindCloudletToVm(int cloudletId, int vmId) {
CloudletList.getById(getCloudletList(), cloudletId).setVmId(vmId);
}
该方法将ID为cloudletId的任务指定分配给ID为vmId的虚拟机(就是调用Cloudlet对象.setVmId(vmId))。该方法需要编程者主动调用,比如example2中就在main方法中主动调用bindCloudletToVm来绑定已提交的两对Cloudlet和Vm(这个提交就是填充列表而已,各种绑定操作是在CloudSim.startSimulation()之后才进行)</

1410

被折叠的 条评论
为什么被折叠?



