Published May 18, 2017
| Version v1.2.0
Software
Open
manoelcampos/cloudsim-plus: Vertical VM Scaling, Initial Host Fault Injection, Automatic generation of IDs ...
- 1. Federal Institute of Education, Science and Technology of Tocantins (IFTO)
- 2. VersionEye
Description
Added
- Vertical VM Scaling Mechanism (#7) for up and down scaling of VM resources such as Ram, Bandwidth and PEs (CPUs).
double getUtilization()
method in theUtilizationModel
class to get the utilization percentage of a given resource at the current simulation time.- Methods
getUtilizationOfRam()
,getUtilizationOfBw()
,getUtilizationOfCpu()
added to Cloudlet in order to get utilization percentage of RAM, BW and CPU, respectively, for the current simulation time. UtilizationModel.Unit
enum to define the measuring unit in which a Cloudlet resource, to which aUtilizationModel
is associated to, will be used. The enum values can bePERCENTAGE
orABSOLUTE
, that respectively defines that the Cloudlet resource usage will be in percentage or absolute values. The existing UtilizationModels continue to define the value in percentage, as described in their documentation. TheUtilizationModelDynamic
(previously calledUtilizationModelArithmeticProgression
) allows setting a different unit for such anUtilizationModel
(#62).UtilizationModelDynamic
now allows defining the resource usage increment behavior using a Lambda Expression, enabling the developer to give a function that performs the increment in an arithmetic, geometric, exponential or any other kind of progression he/she needs (#64).- Updated the
DatacenterBroker
interface and implementing classes, including the methodssetVmComparator
andsetCloudletComparator
to enable a developer to set aComparator
object (which can be given as a Lambda Expression) to sort VMs and Cloudlets before they are actually requested to be created in some Datacenter. This enables defining priorities to request the creation of such objects. If noComparator
is defined, the objects creation request follows the order in which they were submitted. - Host Fault Injection Mechanism (under development) to enable injection of random failures into Hosts PEs: it injects failures into Host PEs and reallocates working PEs to running VMs. When all PEs from a Host fail, it starts clones of failed VMs to recovery from failure. This way, it is simulated the instantiation of VM snapshots into different Hosts (#81).
- Added the method Host.getWorkingPesList().
- Poisson Distribution implementation enabling the simulation of inter-arrival times of events such as Host failures.
- Added the method void
submitCloudletList(List<? extends Cloudlet> list, Vm vm)
to theDatacenterBroker
, enabling submission of a list of cloudlets to run inside a specific VM. - Added the method void
submitCloudletList(List<? extends Cloudlet> list, Vm vm, double submissionDelay)
to theDatacenterBroker
, enabling submission of a list of cloudlets to run inside a specific VM, and at the same time, allowing delaying the creation of such cloudlets. - Added a
getCloudletList()
method int theCloudletScheduler
to get the list of all cloudlets which are executing or waiting inside a given VM. - Includes new boolean methods to the Pe interface to make easier to check the PE status.
New methods are
isFree()
,isBuzy()
,isFailed(
) andisWorking()
. - Allowed disabling log on every
SimEntity
by calling the new methodSimEntity.setLog()
. IfLog.disable(
) is called, it disables all simulation logs, independent of the configuration on each entity. This new feature enables fine-grained control of entities log.
- Changed the methods
getRam()
,getBw()
andgetSize()
from Vm interface to instead of returning a long value that represents the resource capacity, to return an actual Resource object that provides information about the capacity and usage. The method getSize() was renamed to getStorage(). - Changed the methods
getRamCapacity()
,getBwCapacity()
andgetStorageCapacity()
from Host interface to instead of returning a long value that represents the resource capacity, to return an actual Resource object that provides information about the capacity and usage. The methods were renamed, removing the "Capacity" suffix. - Automatic generation of IDs for Hosts, VMs and Cloudlets.
- Hosts IDs can be manually defined using the
setId()
method, but the constructor parameter was removed. The IDs of Hosts across different Datacenters can be duplicated, since when a search for a Host is made using the HostList method, just the Hosts of a given Datacenter are considered. - Hosts IDs are generated when a List of Hosts is attached to a Datacenter.
- Cloudlets and VMs IDs are generated when they are submitted to a Broker.
- Hosts IDs can be manually defined using the
- Hosts constructors require the RAM and bandwidth capacity, since storage already was required.
- Instantiating a
ResourceProvisionerSimple
now requires just a default no-args constructor. - The
DatacenterBroker
interfaces now allow using Java 8 Lambda Expressions to define selection policies.- It provides a functional way of defining the policies to select a Datacenter to host a Vm, a fallback Datacenter when the creation of requested VMs failed in the previous selected Datacenter and to select a VM to run a Cloudlet.
- The DatacenterBrokerSimple is yet selecting the first Datacenter to place VMs and uses a round-robin policy to select a VM to run the Cloudlets. If such behaviors need to be changed, it is not required to create a new DatacenterBroker class.
- Since there are 3 selection policies to override (the selection of default datacenter, fallback datacenter and VM), the combination of different implementations for these 3 policies will require the creation of several DatacenterBroker implementations that will be impossible to maintain.
- Using the new functional implementation there is no need to create a new DatacenterBroker class and the implementations can be exchanged just using the new
setDatacenterSupplier
,setFallbackDatacenterSupplier
andsetVmMapper
methods, passing a Lambda Expression to them. - Automatically set the DatacenterBroker when Cloudlets and VMS are submitted. (#83)
- Refactored the method
CloudletScheduler.getCloudletFinishedList()
to keep the list of finished Cloudlets after the simulation ends. TheDatacenterBroker.getCloudletsFinishedList()
method returns the list of finished Cloudlets, but for all VMs of the broker. TheCloudletScheduler
method allows getting the finished list for a specific VM, enabling the researcher to compute some metrics using the data stored in Cloudlets attributes after the simulation ends. (#78)
Files
manoelcampos/cloudsim-plus-v1.2.0.zip
Files
(23.9 MB)
Name | Size | Download all |
---|---|---|
md5:1afdeb1e85bec76c0fb26971342a9cd0
|
23.9 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/manoelcampos/cloudsim-plus/tree/v1.2.0 (URL)