Skip to content

Releases: cloudsimplus/cloudsimplus

v8.5.2 - BugFix release

16 May 14:48
b641095
Compare
Choose a tag to compare

Fixes

  • #476 :: Cloudlet's setLifeTime() is ignored with default schedulingInterval
  • #484 :: Sometimes a Host does not deallocate VM's RAM and BW upon VM destruction

v8.5.0 Enables batch creation of VMs from a List into a single event

18 May 21:07
Compare
Choose a tag to compare
  • Close #444: enables batch creation of a List instead of one VM at a time. It requires enabling DatacenterBrokerSimple batchVmCreation (available example here).
  • Fix #446.
  • Fix #447.

v8.4.0 Non-Live VM migration from/to public-cloud datacenters

11 May 20:51
Compare
Choose a tag to compare

v8.3.0 VM startup/shutdown delay and boot overhead support

10 May 15:17
Compare
Choose a tag to compare
  • Close #435 (check available examples there)

v8.2.0 :: Introduces Vm lifeTime attribute

20 Apr 21:40
38bf8b0
Compare
Choose a tag to compare

Provides uniformity in attribute names and renaming to avoid ambiguity

  • Introduces a Vm lifeTime attribute (Cloudlet already had it)
  • Makes Broker request VM destruction after reaching lifeTime
  • Start and finishTime attributes were moved to the new Startable interface and StartableAbstract class. Now such attributes are uniform between Cloudlet, Vm and Host.
  • Makes CustomerEntity extends Lifetimed and Startable
  • Redesign to provide a default implementation for Lifetimed.isLifeTimeReached
  • Renames Cloudlet.getActualCpuTime to getTotalExecutionTime to conform to the Vm method.
    That method is now defined inside CustomerEntity interface.
  • Renames Cloudlet.execStartTime to startTime to conform to Vm.startTime
    to avoid confusion and provide uniformity to method names
  • Renames Cloudlet.getWaitingTime to getStartWaitTime
  • Renames Vm and Cloudlet (CustomerEntity) getWaitTime to getCreationWaitTime
  • Renames Cloudlet and Vm getArrivedTime to getBrokerArrivalTime
  • Renames Cloudlet.getArrivalTime to getDcArrivalTime
  • Renames Vm.stopTime to Vm.finishTime to conform to Cloudlet.finishTime
  • Renames Host.shutdownTime to finishTime

Examples Included

v8.1.0 - Adds support for HostPowerSpec to read power consumption data files

13 Apr 14:51
Compare
Choose a tag to compare

v8.0.0 Packages restructuring, Lombok support and code clean up

17 Mar 12:04
5d6bc37
Compare
Choose a tag to compare

Introduction

CloudSim Plus started in 2016 (7 years ago, considering the date of this new release) as a fork of CloudSim in order to provide a more well-engineered, fully extensible, easier-to-use, more accurate, and reliable cloud simulation framework. All the changes performed were intended to make the framework easier to maintain and extend, while providing an industry-standard tool to carry out cloud computing research.

After all these years, this release is a major restructuring of the project that breaks some compatibility with previous versions.
It took a lot of thought before stepping ahead to make these changes. Despite CloudSim and CloudSim Plus having lots of similarities and being easy to migrate simulation scenarios to CloudSim Plus, internally they are very different at this time.

This way, in order to break the ties with CloudSim and enable a healthier and faster evolution, these structural changes presented below were performed.

1. Maven artifact

Maven artifact name changed from cloudsim-plus to cloudsimplus.
Despite the former is available at Maven Central, it's deprecated.
Use the following code to include CloudSim Plus 8 as a dependency into your pom.xml:

<dependency>
    <groupId>org.cloudsimplus</groupId>
    <artifactId>cloudsimplus</artifactId>
    <version>8.0.0</version>
</dependency>

2. Packages restructuring

2.1 Moves all classes from org.cloudbus.cloudsim to org.cloudsimplus

Everything in CloudSim Plus is now under the org.cloudsimplus package.
Probably, there isn't a single class inherited from CloudSim which was not updated in CloudSim Plus. Most of them passed through a huge refactoring, remodeling and documentation improvement and extension.

Therefore, keeping these files inside the org.cloudbus.cloudsim gives the wrong impression that the classes and interfaces are the same. CloudSim Plus just exists thanks to CloudSim. This way, all the copyright notes inside the original files were kept, as required to conform to CloudSim's license. Accordingly, all the credits to the original CloudSim authors are still given.

2.2 Makes CloudSim class abstract and package private, then introduces CloudSimPlus class to be used as the Simulation engine.

In order to make it clear that the simulation scenarios are using CloudSim Plus, a new CloudSimPlus subclass was created, moving all the new code this project introduced in the CloudSim class to this new one.

3. Adds Lombok support

Adds Lombok support to reduce boilerplate code and verbosity.
Futhermore, it makes the code cleaner, concise and easier to document and maintain.
Lombok automatically changes the bytecode to introduce getters, setters, toString, equals, hashCode, builders and other features.
It needs IDE support, however all major IDEs (including VS Code Editor) currently have default support for it.

The introduction of Lombok enabled a thorough code clean-up, removing all boilerplate that was just polluting the code, making it harder to understand and maintain. Since these boilerplates were mixed inside the code that really matters, it just made it more difficult for new researchers to understand and extend the framework.

The code automatically produced by Lombok for getters, setters, equals and hashCode are well tested and avoids the introduction of bugs when the researcher has to implement them by him/herself. A smaller codebase means less code to maintain and test, increasing code coverage.

4. Renames attributes numberOfPes to pesNumber

In order to provide more concise names, Cloudlet and Vm interfaces had their getNumberOfPes() and setNumberOfPes() methods renamed to getPesNumber() and setPesNumber(). If you are passing this attribute to the Vm and Cloudlet constructor, you don't need to change anything on your simulation scenarios.

v7.3.3 :: Small bugfixes

10 Mar 22:02
771793e
Compare
Choose a tag to compare
  • Fix NullPointerException when selecting target DC #422
  • Fix column separator in CsvTable: changes from ; to ,

v7.3.2 :: Enables setting a target Datacenter for initially placing VMs

08 Dec 00:05
8e0cef7
Compare
Choose a tag to compare

v7.3.1 : Small improvements

24 Nov 17:07
56c7e74
Compare
Choose a tag to compare
  • Fix #404 :: Enables custom column formats on CloudletsTableBuilder (PR #405)
  • Fix #349 :: Introduce DatacenterBroker.getVmCreation() method that returns an object enabling configuration of max number of VM creation retries to avoid infinite loops when there is no suitable host available (PR #398).