cloudsim相关疑问与解答(1)

翻译:https://code.google.com/p/cloudsim/wiki/FAQ#Getting_started

开始:

1.       什么是cloudsim?他能做什么和不能做什么?

Cloudsim是一个工具(库)用来云计算场景的模拟(注意不是仿真)。它提供基本的类用来描述数据中心,虚拟机,应用程序,用户,计算资源,和一些策略(如调度和提供等)对系统不同部分的管理。

这些组件放在一起可以帮助用户评估在云资源使用方面的新策略(策略,调度算法,映射和负载平衡策略等)。它也可以用来从不同方面评估一些策略的效率,从花销到程序运行时间。它还支持绿色IT策略的评估。

以上是我们预想的常见的场景和使用者已经探索过的。然而,在使用方面没有限制。你可以用它做:类可以被扩展和代替,新的策略可以被添加和编写使用的新的场景。把它认为成你自己模拟云环境的一个编译模块。

因此,Cloudsim并不是现成可用的解决方案,不是在你工程中设置一些参数然后收集结果。作为一个库,Cloudsim要求你写一个Java程序使用它的组件去构建渴望的场景。当然,Cloudsim可以被使用去创建这样一个现成可用的解决方案,例如:

Bhathiya Wickremasinghe, Rodrigo N. Calheiros, and Rajkumar Buyya. CloudAnalyst:一个基于Cloudsim的可视化模拟器用于分析云计算环境和应用。

2.       Cloudsim对于我的工程是一个适合的工具吗?

Cloudsim是个模拟器(注意模拟器和仿真器的区别),因此他不运行任何实际的软件技术。模拟可以被定义为“在一个硬件模型上运行一个软件的模型”。由于它是关于模型的,具体技术细节被抽象。更多信息关于模拟器和仿真器或者其他实验方法的不同可以查看:

Gustedt, J.; Jeannot, E.; and Quinson, M. Experimental methodologies for large-scale systems: a survey, Parallel Processing Letters, World Scientific, 2009, 19(3), 399-418.

因此,如果你的项目的目标是运行一个你开发实际软件或者计划在一个实际的系统上去开发,那么或许你得在一个小规模的数据中心中进行软件开发和测试。

3.       使用Cloudsim我需要知道什么?如何安装它?

使用Cloudsim需要的先前知识是基本的java编程(因为Cloudsim使用java写的)和一些关于云计算的知识。了解一些关于IDE编程像eclipse或者Netbeans是方便的,因为他们简化了许多应用程序开发的任务。二者选其一,AntMaven可以用于应用程序的编译。

Cloudsim没有必要安装:你仅仅需要解压下载的包在任一目录下,把它添加到你的java classpath就可以使用了。如果你用Eclipse或者NetBeans,你可以把Cloudsim作为一个工程添加,之后他就对以后通过IDE创建的工程可用。

4.       如何更使用进一步学习Cloudsim?

你可以从Cloudsim包中的例子开始。他们从简单的场景慢慢到复杂。之后你就知道如何把组件放在一起去建立你自己的场景。

由于基本的组件不能满足你的工程,你可以研究API,因此你可以使用高级的特性,和扩展或者代替组件。

其他信息资源是CloudSim group.

5.       Cloudsim能够运行我的应用程序?

不行,Cloudsim是一个模拟器,他不能运行一个真实的程序,他是用来模拟和测试不同的调度和虚拟机分配算法。

Cloudsim组件,通信和事件:

1.       Cloudsim包中提供的组件的默认行为是什么?如何改变他们?

数据中心举止像一个IaaS提供商:它从代理商接收虚拟机的请求然后在主机中创建虚拟机。

Cloudsim中的代理商只是提交一些需要被创建的虚拟机表和顺序的调度云任务。代理商被提供作为一个例子,它应该被你自己的调度策略,和(或者)虚拟机和云任务的生成策略所代替。

去改变默认的行为,你可以或者扩展这些类去增加一些行为,或者实现新的类。在后者,这些新的实体必须扩展SimEntity和实现processEvent()方法。

2.       如何编写一个定期的行为被实体接受?

通过设置一个内部事件周期性的被设置来完成。一旦事件被接收,处理方法将被调用,然后想要的行为在这个处理方法中实现。下面我们展示如何为Datacenterclass实现它。相同的步骤可以被用于在Broker中的行为。

1)  扩展Datacenter

2)  定义一个新的标签去描述周期性事件

3)  重写processOtherEvent,去探索这个周期性事件和调用处理方法。

4)  实现处理方法,最后,这个方法为了这个事件也调度下一个调用。

重要:你的代码必须包含一个停止生成内部实事件的条件,否则模拟将不会结束。

class NewDatacenter extends Datacenter {

 public static final int PERIODIC_EVENT = 67567; //choose any unused value you want to represent the tag.

  :

 @Override
 protected void processOtherEvent(SimEvent ev) {
   if (ev == null){
     Log.printLine("Warning: "+CloudSim.clock()+": "+this.getName()+": Null event ignored.");
   } else {
     int tag = ev.getTag();
     switch(tag){
       case PERIODIC_EVENT: processPeriodicEvent(ev); break;
       default: Log.printLine("Warning: "+CloudSim.clock()+":"+this.getName()+": Unknown event ignored. Tag:"+tag);
     }
   }
 }

  :

 private void processPeriodicEvent(SimEvent ev) {
    //your code here
     :
   float delay; //contains the delay to the next periodic event
   boolean generatePeriodicEvent; //true if new internal events have to be generated
   if (generatePeriodicEvent) send(getId(),delay,PERIODIC_EVENT,data);
 }

 :

}

 

3.       如何创建自己定义的信息类型?如何使他们被其他实体接收?

这一过程与前一个类似。首先,一个新的信息标签必须在某个地方声明。然后一个处理这个信息的方法必须添加到信息的接收者中。代码和前一个类似,除了处理方法,它不会内部的生成这个事件,而是等待某些实体发送事件。


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值