关闭

Cloudsim 3.0.3中Power系列类的解析——PowerDataCenter和PowerDCBroker

标签: java云计算power
293人阅读 评论(1) 收藏 举报
分类:

我在上一篇博客<http://blog.csdn.net/wingter92/article/details/75098626>中提到了cloudsim模拟的函数调用逻辑,针对是DC、DCBroker等类,也即所有examples中的通用逻辑。但3.0.3中包含有power扩展包,里面的Power系列Java类(PowerDC, PowerDCBroker, PowerHost等)是之前描述的类的扩展,加入了能耗相关特征和调度方法。

本文在此介绍最核心的Power类——PowerDataCenter,重点讲述对父类的扩展内容:

1、PowerDataCenter

继承:继承DataCenter,沿用的主要函数包括setXXX(),getXXX()函数和大部分processXXX()系列函数(除了processCloudletSubmit()和processVmMigrate(),因为这两个是数据中心VM调度的关键)

增加的成员:

  Double Power——数据中心的总功耗

  Boolean disableMigratations——是否开启VM迁移

  Double cloudletSubmitted —— 最近一个cloudlet的提交时刻,在每次调用processCloudletSubmit()函数的最后被设置为当前clock。

  Int migrationCount——VM迁移计数

增加、重载的重要函数:

1)updateCloudetProcessingWithoutSchedulingFutureEventsForce():这个函数间接更新了每一台host上的VM的执行进度(通过调用父类的updateVmsProcessing()方式来更新,该函数内容见开头提及的博客),同时输出当前clock、各主机当前CPU利用率以及最近一个时间窗口(clock()- lastProcessTime)内的能耗,并将其累加至PowerDC对象中的总能耗(成员命名为Power,有点不合理);其中,lastProcessTime更新在本函数内完成,所以lastProcessTime就是上一次update的时刻。

2)@Override updateCloudletProcessing():更新DC中已经在执行的任务的进度;这个函数与父类的updateCloudletProcessing()实现风格迥然不同(应该是不同的人编写的)。

    它首先进行判断:如果现在是首个任务(cloudletSubmitted==-1)或之前的任务都还没推进(cloudletSubmitted==clock()),那么就不必做update,只需要将future中的VM_DC_EVENT事件推进一个schedulingInterval再放回队列去。

    否则,说明有先前的任务处于执行阶段,进度需要update,同时还可能触发迁移操作。具体来说,先进行进度更新,即调用updateCloudetProcessingWithoutSchedulingFutureEventsForce()函数来完成更新,再调用DC.getVmAllocationPolicy().optimizeAllocation()来取得一个migrationMap,这个结构里面记录了根据VM迁移策略制定的迁移方案(即哪些VM要迁移至哪些host),然后据此完成VM迁移(又涉及到host状态更新,比较繁杂)并产生tags.VM_MIGRATE事件。完成这一系列动作之后,将future中的VM_DC_EVENT事件推进一个schedulingInterval再放回队列去。


3)@Override processCloudletSubmit(SimEvent, boolean):处理当前这个任务的提交事件;通过调用父类(DataCenter类)的processCloudletSubmit(ev, ack),而processCloudletSubmit(ev, ack)又会调用updateCloudletProcessing()(下面会讲),最后设置cloudletSubmitted = clock();


4)@Override processCloudletMirgrate(SimEvent, boolean):处理VM迁移事件,逻辑大概是:先调用updateCloudetProcessingWithoutSchedulingFutureEventsForce()来更新所有Host上所有vm的进度,然后调用父类的processVmMigrate(ev, ack)完成迁移操作。


2、PowerDataCenterBroker: 基本上等同于父类DCBroker,用于配合PowerDC来使用,仅重载了一个方法

继承:DataCenterBroker

新成员:无

重载的方法:

@Override
protected void processVmCreate(SimEvent ev)
:重载了父类DCBroker对VM创建(完成)事件(应该是DC完成创建并发回来的事件)的逻辑,但基本上就是简单判断创建成功与否然后直接调用父类的processVmCreate(ev)



1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

cloudsim安装,配置(到eclipse)

本文讲了cloudsim的安装与配置,以及在eclipse上的样例运行。
  • kingsleyaa
  • kingsleyaa
  • 2016-02-29 19:13
  • 2172

使用Cloudsim实现基于多维QoS的资源调度算法之一:配置Cloudsim环境

Cloudsim是一款开源的云计算仿真软件,它继承了网格计算仿真软件Gridsim的编程模型,支持云计算的研究和开发。它是一个自足的支持数据中心、服务代理人、调度和分配策略的平台,支持大型云计算的基础...
  • hanchaoqi
  • hanchaoqi
  • 2014-06-30 23:13
  • 2429

cloudsim简介以及在eclipse下使用

cloudsim简介: 2009年4月8日,澳大利亚墨尔本大学的网格实验室和Gridbus项目宣布推出云计算仿真软件,称为CloudSim。它是在离散事件模拟包SimJava上开发的函数库...
  • soony_007
  • soony_007
  • 2014-01-08 17:07
  • 2034

Cloudsim 3.0.3中VM调度策略系列类解析(无迁移的策略)

Cloudsim中VM调度策略类在DataCenter(或PowerDataCenter)创建时需要制定,更是我们在Cloudsim上试验我们的调度算法的核心所在。
  • wingter92
  • wingter92
  • 2017-07-18 15:06
  • 181

Cloudsim 3.0.3中VM调度策略系列类解析(带迁移的策略)

Cloudsim3.0.3中提供了Power系列包(在之前几篇blog中提到的诸如PowerHost, PowerDataCenter等),自然也有对应的Policy类,并且丰富得多。Power系列包...
  • wingter92
  • wingter92
  • 2017-07-18 17:12
  • 310

CloudSim3.0.3中Cloudlet的执行——代码流程简析

上一篇文章说到了CloudSim模拟流程的整体事件流,其中最为复杂和关键的自然是Cloudlet被提交到DC(DC对象开始process相关事件)之后的流程,本文就该流程在代码方面作简要分析。 由C...
  • wingter92
  • wingter92
  • 2017-07-14 10:48
  • 244

CloudSim(3.0.3)运行机制见解

最近几日在学习CloudSim3.0.3的源码,看着看着就意图弄清example的模拟过程,即从startSimulation()到stopSimulation()之间主要发生了什么。     Cl...
  • wingter92
  • wingter92
  • 2017-07-12 09:24
  • 301

Cloudsim 3.0.3中任务到VM的映射

需要导入包 java.util.Collections
  • wingter92
  • wingter92
  • 2017-08-09 09:11
  • 254

云计算仿真工具cloudsim 3.0.3 【无错误,带例子!】

  • 2015-10-26 21:55
  • 26.80MB
  • 下载

云计算仿真平台——一篇关于CloudSim的论文

  • 2010-11-25 13:11
  • 1.18MB
  • 下载
    个人资料
    • 访问:4461次
    • 积分:219
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论