Cloudsim Plus Versions Save

State-of-the-art Framework 🏗 for Cloud Computing ⛅️ Simulation: a modern, full-featured, easier-to-use, highly extensible 🧩, faster 🚀 and more accurate ☕️ Java 17+ tool for cloud computing research 🎓. Examples: https://github.com/cloudsimplus/cloudsimplus-examples

v8.5.0

11 months ago
  • Close #444: enables batch creation of a List<Vm> instead of one VM at a time. It requires enabling DatacenterBrokerSimple batchVmCreation (available example here).
  • Fix #446.
  • Fix #447.

v8.4.0

1 year ago

v8.3.0

1 year ago
  • Close #435 (check available examples there)

v8.2.0

1 year ago

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

1 year ago
  • Close #430: Check available example and details here.

v8.0.0

1 year ago

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

1 year ago
  • Fix NullPointerException when selecting target DC #422
  • Fix column separator in CsvTable: changes from ; to ,

v7.3.2

1 year ago
  • Closes #415 (Link to available example there)

v7.3.1

1 year ago
  • 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).

v7.3.0

1 year ago

In this new release, some structural changes were performed in the repository. Firstly, all CloudSim Plus projects were moved to the new CloudSim Plus organization. Project modules were removed from the CloudSim Plus API (the one you use inside your own projects) and created as independent repositories, namely:

Updates

  • Introduce Cloudlet lifeTime attribute. It's an optional value to indicate how long (in seconds) you want a Cloudlet to execute (#373).
  • Fix VerticalVmScalingSimple issue (#378).
  • Fix GoogleTaskUsageTraceReader issue (#379).