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

标签: java 云计算 power
484人阅读 评论(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)



查看评论

[CloudSim学习心得] 第一天学习Cloudsim

通过CloudSim给出的Example学习CloudSim的代码编写方式 今天学习的是CloudSim的第一个Example, 第一个Example的主要内容是创建了一个有一台Host的Datace...
  • u010103383
  • u010103383
  • 2014-12-11 20:17:07
  • 604

Cloudsim 3.0.3中Power系列类的解析——PowerHost, PowerVM, PowerModel

在上一篇博客中,讲到PowerDatacenter:     的确,Cloudsim中的power系列类最关键的是PowerDatacenter,因为整个数据中心的能耗统计都由它完成,并且其重载了一些...
  • wingter92
  • wingter92
  • 2017-07-18 09:57:08
  • 517

CloudSim源码分析之主机资源分配(处理器能力篇)

这里所讲的主机资源主要是指处理能力、带宽和内存,在CloudSim中,如何分配这些资源给虚拟机是由类PeProvisioner、BwProvisioner和RamProvisioner分别定义的。这三...
  • chhaj5236
  • chhaj5236
  • 2011-08-25 15:33:07
  • 2245

<em>cloudsim</em>相关介绍及源代码

上传者: huchun2010 <em>时间</em>: 2010-11-07 综合评分: 0 积分/C币:3 云计算仿真工具<em>cloudsim</em>介绍和使用 立即下载 上传者: yuanhou2011 <em>时间</em>: 2012-12-06 综合...
  • 2018年04月15日 00:00

<em>CloudSim</em>-3.0.3

<em>CloudSim</em>是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨...上传者: wenjieyatou <em>时间</em>: 2016-11-14 综合评分: 5 积分/C币:3 上传...
  • 2018年04月15日 00:00

CloudSim类设计

BwProvisioner: 这个抽象类为VM的带宽配置策略建模。该模块的主要功能是向在数据中心部署的相互竞争的VM分配网络带宽。云系统开发者可以用他们自己的策略(优先级,QoS)来扩展该类。BwPr...
  • u010993983
  • u010993983
  • 2014-10-10 10:13:41
  • 871

CloudSim中的example1分析

example1主要模拟了如何创建一个含有一台主机的数据中心,并在其上运行一个云任务。 具体步骤如下: 一、初始化CloudSim工具包。         CloudSim.init(num_u...
  • longsaiqin
  • longsaiqin
  • 2012-02-22 21:21:36
  • 10574

程序员时间管理法(基于 SGTD)

一直感觉自己时间不够用,因此学习过 GTD 和番茄时间管理法等,每种管理法都有自己的优缺点,也有自己不习惯的部分。经过一长段时间(接近两年)的实践与改良、结合番茄时间管理法和 GTD 的优点,最后总结...
  • u012207345
  • u012207345
  • 2017-10-18 11:57:36
  • 61

网络中的时延

时延是指数据(报文、比特)从网络(或链路)的一端传送到另一端所需要的时间 总时延=发送时延+传播时延+处理时延+排队时延 发送时延:主机或路由器发送完数据帧的时间(相当于快递公司装运快递需要的...
  • catchingSun
  • catchingSun
  • 2015-08-14 10:42:24
  • 2288

CloudSim(3.0.3)运行机制见解

最近几日在学习CloudSim3.0.3的源码,看着看着就意图弄清example的模拟过程,即从startSimulation()到stopSimulation()之间主要发生了什么。     Cl...
  • wingter92
  • wingter92
  • 2017-07-12 09:24:56
  • 700
    个人资料
    等级:
    访问量: 8495
    积分: 256
    排名: 30万+
    文章存档
    最新评论