cloudsim相关疑问与解答(1)

来源:互联网 发布:tl-wr886n第二个网络 编辑:程序博客网 时间:2024/05/09 08:17

翻译: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.       如何创建自己定义的信息类型?如何使他们被其他实体接收?

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


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 为什么回收站的删除键不见了怎么办 微信在异地登录怎么办 支付宝帐号被冻结怎么办 进不了路由器设置页面怎么办 支付宝支付密码忘记了怎么办 淘宝忘记登录密码了怎么办 手机换卡了微信怎么办 淘宝退款成功后收到货怎么办 没收到货退款商家不处理怎么办 没收到货申请退款卖家不处理怎么办 京东已收到货却不处理退款怎么办 货退了卖家不退款怎么办 淘宝退了货卖家不退款怎么办 手机淘宝不显示图片怎么办 京东申请退款卖家不处理怎么办 企业网银冻结了怎么办 农行k宝坏了怎么办 手机检测不到u盾怎么办 农行有k宝怎么办信用卡 k米怎么点不了怎么办 c1驾照被扣3分怎么办 淘宝账号被黑了怎么办 淘宝卖家号虚假交易违规怎么办 扣扣申诉成功后怎么办 微信二维码收款异常怎么办 国际包裹被退回去了怎么办 京东账号手机号换了怎么办 换手机号了淘宝账号怎么办 qq登录id密码忘记怎么办 iphone商店密码忘记了怎么办 淘宝账号被限制登入怎么办 手机换号码了qq登不上怎么办 换手机了qq登不上怎么办 微信帐号和密码错误怎么办 高考生忘记登录密码怎么办 高考生登录密码丢了怎么办 高考志愿登录密码忘了怎么办 电视声音和画面不同步怎么办 苹果5s不能开机怎么办 红米手机老是闪退怎么办 苹果7plus打字卡怎么办