Recent Releases of https://github.com/cloudsimplus/cloudsimplus

https://github.com/cloudsimplus/cloudsimplus - v8.5.7 :: Overall documentation review and update

The entire project documentation was carefully reviewed, extended and updated. It fix errors, clarifies the text and provides more information on how to use some features. The documentation now provides more links between different classes inside the project.

- Java
Published by manoelcampos 8 months ago

https://github.com/cloudsimplus/cloudsimplus - v8.5.2 - BugFix release

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

- Java
Published by manoelcampos almost 2 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.5.0 Enables batch creation of VMs from a List into a single event

  • 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.

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.4.0 Non-Live VM migration from/to public-cloud datacenters

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.3.0 VM startup/shutdown delay and boot overhead support

  • Close #435 (check available examples there)

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.2.0 :: Introduces Vm lifeTime attribute

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

  • Check https://github.com/cloudsimplus/cloudsimplus-examples/issues/16

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.1.0 - Adds support for HostPowerSpec to read power consumption data files

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

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v8.0.0 Packages restructuring, Lombok support and code clean up

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:

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.

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.3.3 :: Small bugfixes

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

- Java
Published by manoelcampos almost 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.3.2 :: Enables setting a target Datacenter for initially placing VMs

  • Closes #415 (Link to available example there)

- Java
Published by manoelcampos about 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.3.1 : Small improvements

  • 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).

- Java
Published by manoelcampos about 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.3.0 :: New project structure, new feature and bug fixes

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).

- Java
Published by manoelcampos over 3 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.2.0 : Multi-cloud simulations with inter-datacenter VM migrations

  • Improve Host Fault Injection module and update HostFaultInjectionExample1
  • Fix #360
  • Close #361 (check available example there)

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.1.0 :: Fix VM migration

1. Critical bug fixes

  • #352 - VM migration was not working

2. Network module

  • Makes NetworkDatacenter accept only NetworkHosts
  • Makes NetworkDatacenter.getHostList() return a List

3. Compatibility break

3.1 More impacting changes

  • Renames CloudSimTags to CloudSimTag, making it an enum: event tags were int constants in CloudSimTags class. Now, if you are sending custom events in your simulation, you need to move your int tags into the new CloudSimTag enum.
  • Renames CloudSimTag values starting with DATACENTER to DC

3.2 Less impacting changes

  • Makes SanStorage.getFile() to return an Optional<File>
  • Makes SanStorage.deleteFile() to return an Optional<File>
  • Throws exception when a file or its file name is invalid, instead of returning a boolean and logging a message
  • Renames Cloudlet.requiresFiles() to hasRequiresFiles
  • Makes VmSelectionPolicy.getVmToMigrate to return Optional<Vm>
  • Renames LognormalDistr class to LogNormalDistr

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v7.0.0 - Upgrade to JDK 17

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.6.1 - Last JDK 8 release before upgrading to JDK 17

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.5.0 :: Up to 45% performance improvements

  • Lots of internal changes that achieve huge performance improvements, cutting simulation time by almost half. Check PR #341 for details.
  • Fix #327
  • Fix #339
  • Close #340

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.4.3 :: Performance Improvements

  • #332
  • #333
  • #334
  • #335
  • #336
  • Reduces computational complexity of HostSimple.setPeList()
  • Only activate a Host that was requested to be powered on after creation (with no delay) when that Host is attached to some Datacenter.
  • #328

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.4.0: Support for defining Hosts's power on/off delay and power consumption

  • Close #238: Adds power on/off delay and power consumption attributes in PowerModelHost. Check the issue page for a complete example.
  • Close #314
  • Fix #315
  • Shows reason of VM creation failure
  • Fix #319
  • Close #320
  • Introduces UtilizationModelDynamicOversubscriptionExample
  • Close #321
  • Close #322
  • Accepts Integer.MAX_VALUE in TraceReaderAbstract.setMaxLinesToRead instead of -1 to indicate the entire file must be read. That simplifies verification.
  • Close #323
  • Close #324
  • Close #325
  • Close #326
  • Fix #331

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.3.0 Support for Virtual Memory (vMem / swap) and Reduction of allocated BW for Cloudlets

  • Close #170: check 873708e5161f4e51f5a3f7a9d1f55f3f0671c42f for specific implementation details that you may be aware of.
    • Redesign Host storage to use an actual HarddriveStorage instead of just a Storage (which is now called SimpleStorage). This way, we can define disk parameters such as reading speed that is considered when virtual memory is required by Cloudlets running inside a VM on the Host.
    • Updates CloudletSchedulerAbstract to process virtual memory (vMem / swap) requests and BW reduction, which cause cloudlet processing delay due to over-subscription.
    • Introduces VirtualMemoryForRequestedRamHigherThanAvailableExample.java to check the processing delay caused by the use of Virtual Memory and reduced BW allocation.
  • Close #308
  • Fix #309
  • Introduces a beforeExperimentRun Consumer to enable the researcher to execute some code before an Experiment starts running.
  • Introduces a beforeExperimentBuild Consumer to enable the researcher to execute some code before an Experiment is built.
  • Close #313
  • Updates presentation including new features

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.2.7 Small new features and bug fixes

  • Improves broker's log for delayed VM.
  • Don't disable logging when starting the experiment runner. Let the researcher to adjust the desired logging level for each experiment.
  • Adds toString() method to VmCost to print costs information.
  • Introduces CostsExample1 showing how to configure Datacenter costs and compute individual costs for VMs.
  • #299 Show progress bar when running an experiment multiple times, something like progress-bar
  • #303 Show the exact reason why a Host cannot be allocated to a VM
  • #304 Host.getRelativeRamUtilization() and getRelativeBwUtilization() are wrongly computing the relative VM resource usage
  • #305 Vm start time was not being set
  • #306 VmCost was not considering the VM total execution time for CPU cost/second
  • #307 VMs which don't receive cloudlets were never considered idle

- Java
Published by manoelcampos over 4 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.2.3 - Bugfix release

This release fix small issues including:

  • #294
  • #295
  • #296

It also fix the critical issue #281. Despite it is about the Google Cluster Data Traces, that is a core issue related to message processing that may affect accuracy of your simulations because some events may have been missed.

- Java
Published by manoelcampos almost 5 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.2.0 - High performance improvements for large-scale simulations

This release improves the way to store the requested and allocated MIPS capacity for VMs and Cloudlets. Check issue #291 and PR #290 for details.

It also fixes a minor bug when allocating MIPS for a VM (#292). But that bug may have not impacted your simulations.

- Java
Published by manoelcampos almost 5 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.1.0 - High performance improvement for Host and VM CPU utilisation statistics in large-scale experiments

This update redesigns UtilizationHistory classes, breaking compatibility. Keeping a Map to store the history for Hosts and VM CPU utilization along with simulation run, collecting data according to the Datacenter scheduling interval, has a huge penalty in simulation performance and memory consumption. Storing this data drastically degrades the performance of large-scale experiments. For experiments that simulate days of execution, the performance and memory footprint penalty makes such large-scale experiments unfeasible.

This new release doesn't keep this history anymore, just storing summarized statistics. Check issue #287 for details.

- Java
Published by manoelcampos almost 5 years ago

https://github.com/cloudsimplus/cloudsimplus - v6.0.0 - Power Module redesign and Network Module update

1. Redesigned Power Module (#257, #265, #266, #268)

1.1 Advances

  • New, simple PowerModel interface. It is backwards compatible (providing the getPower() method) but also offers a new method getPowerMeasurement() which returns an object with more detailed information (currently static & dynamic fraction but can be easily extended).
  • Gets rid of all the old PowerModel implementations from the original CloudSim paper, since they are overly specific.
  • Adds PowerModel implementations for Datacenter and Host:
    • PowerModelHost has a more intuitive interface PowerModelHost(staticPower, maxPower) than the old PowerModelLinear(double maxPower, double staticPowerPercent)
  • DatacenterPowerSupply was replaced with PowerMeter. PowerMeter can be applied to any PowerAware entities like Datacenters or Hosts (and in the future also VMs, etc). The implementation of PowerMeter is decoupled from the core which resulted in a lot of removed code in Datacenter and especially HostSimple.

1.2 Other changes

  • Moves wattSecondsToKWattHours() to Conversion class
  • Throws exception in PowerModelHostSimple constructor when maxPower or staticPower is smaller than 1. That may indicate the researcher is trying to pass a percentage instead of a value in watts.
  • Stops a Datacenter to accept someone else's PowerModel.
  • If a Datacenter assigned to a datacenter is tried to be assigned to another one, an exception is thrown because each Datacenter must have its own PowerModel.
  • Changes setPowerModel() on Host and Datacenter to comply to "least astonishment principle". It's not intuitive that setting null will be replaced by a PowerModelDatacenter.NULL or PowerModelHost.NULL object. A meaningful error message showing how to do that is provided in such a case.

1.3 Upgrading Notes

If you come from CloudSim Plus 5.x and used the PowerModule, there are some steps you need to follow to update your simulations, since now we have specific implementations of PowerModel for Datacenter and Hosts. The steps are:

  1. Replaces PowerModel implementations such as PowerModelLinear byPowerModelHostSimple (previous PowerModelLinear) or PowerModelSpec. The very specific implementations PowerModelSqr, PowerModelSqrt and PowerModelCubic were removed because they aren't realistic. Implementations such as PowerModelSpecPowerIbmX3250XeonX3470, that represent the power model for a very specific hardware were also removed. If you want to use such a kind of specific model, just use the new PowerModelSpec and pass the utilization percentage array from the previous implementation as a parameter.
  2. The static power consumption provided in the constructor is not in percentage anymore, but watts. But don't worry, if you provide a value smaller than 1 (which may indicate a percentage value), an exception will be thrown to let you know.
  3. Replaces class to PowerAware.wattsSecToKWattsHour by Conversion.wattSecondsToKWattHours.

2. Redesigned Network Module

  • Migrates network API from id-based to object/entity-based. This way, you can pass entity objects instead of arbitrary IDs that could not even represent a valid entity and cause runtime errors (#260).
  • Moves Brite-specific methods fromNetworkTopology interface to BriteNetworkTopology class (#264)

3. General Improvements

  • Adds SimEntity.startTime and shutdownTime attribute to know when the entity was started and shut down
  • Adds DatacenterBroker.shutdownWhenIdle attribute to define if it should be automatically shut down when idle or not.
  • Rename CloudSimEntity.shutdownEntity() method to shutdown() to avoid redundancy.

4. BugFixes

  • Avoids ConcurrentModificationException in event loop (#267)
  • Setting Broker vmDestructionDelay as 0 makes broker to shutdown before adding cloudlets to finished list (#271)
  • The broker was destroying VMs after becoming idle but wasn't shutting down when all VMs finished (#273)
  • VmSchedulerAbstract was setting more Host's PEs as free than expected after deallocating a VM (#274)

5. Performance

  • Redesigns the way to check if there is any event matching a given predicate in the future queue. This improves the performance ofHostFaultInjection and PowerMeter event scheduling.
  • Purges finished entities from list, improving performance and reducing memory consumption in large scale experiments (#269)

Acknowledgment

The great changes in Power and Network modules were made thanks to Philipp Wiesner who developed LEAF, a simulator for large energy-aware fog computing environment. LEAF uses CloudSim Plus as the underlying cloud simulation framework.

- Java
Published by manoelcampos about 5 years ago

https://github.com/cloudsimplus/cloudsimplus - v5.4.0 - Fixes critical bugs and introduces features to provide more simulation control

Updates and New Features

  • Includes all AWS EC2 Instance Templates from the "US Est (Ohio)" Region, available at https://aws.amazon.com/ec2/pricing/on-demand/
  • Add instructions to use Gradle in the README
  • #228 - Enables DatacenterBroker to avoid retrying or not the creating of failed VMs
  • #233 - Provide more public LOGGER instances for specific classes. Check LoggingExample.java
  • #236 - Datacenter kept trying to migrate VMs from under or overloaded Hosts without waiting some time. A setHostSearchForMigrationDelay(double delay) method was introduced in Datacenter. Check MigrationExample1.java

Bugfixes

  • #54 - VmSchedulerTimeShared wasn't sharing Host PEs between different VMs when there is fewer Host PEs than required by all VMs
  • #226 - Some cloudlets weren't finishing, although the CPU utilization is high
  • #227 - MinTimeBetweenEventsExample.java was showing -1 as the ExecTime for almost all Cloudlets
  • #229 - VmSchedulerSpaceShared was throwing a NoSuchElementException when all Host PEs were already used
  • #231 - When a Cloudlet is bound to a VM and that VM was not created, the Cloudlet status wasn't set to FAILED
  • #232 - VmSchedulers were showing a warning "VmSchedulerXX: It was requested an empty list of PEs for Vm YY in Host ZZ" because the resources of a destroyed VM were tried to be deallocated twice
  • #234 - VmAllocationPolicyMigrationAbstract was not allocating Hosts without a PowerModel. Since power consumption is buil-in in the HostSimple class of CloudSim Plus, the developer can choose if he/she wants to model power consumption or not using regular Hosts.
  • #235 - Some simulations using a VmAllocationPolicyMigration were freezing when there were under/overloaded Hosts.

- Java
Published by manoelcampos almost 6 years ago

https://github.com/cloudsimplus/cloudsimplus - Improves UtilizationModelPlanetLab and fixes some bugs

New Features

  • Add size() method to Datacenter interface to enable getting its number of Hosts.
  • #216 :: Enable manual VM migrations based on arbitrary conditions
  • #221 :: Enable UtilizationModelPlanetLab to read the number of lines from a comment at the beginning of the file
  • #222 :: Enable UtilizationModelPlanetLab to scale the values read from the trace

BugFixes

  • #214
  • #215
  • #217
  • #218
  • #219
  • #220
  • #223
  • #224

- Java
Published by manoelcampos over 6 years ago

https://github.com/cloudsimplus/cloudsimplus - v5.0.0 - Incredible performance improvements, synchronous simulations, placement of groups of VMs, selection of the closest Datacenter, new policies and more

1. Important new Features

1.1. Implement synchronous simulations (#205)

This feature enables the simulation to be run inside a regular loop as below:

java simulation.startSync(); while(simulation.isRunning()){ simulation.runFor(INTERVAL); /* Perform some operation here, such as data collection or submission of new VMs or Cloudlets. */ } simulation.finish();

That makes it easier to interact with the simulation and perform some tasks, such as data collection. Thanks for Pawel Koperek.

1.2. DatacenterBroker

  • Enables Broker to try selecting the closest Datacenter to place VMs, according to their time zone (#212).
  • Enables Broker to destroy a VM and return the list of unfinished Cloudlets (#209). Thanks for Pawel Koperek.
  • Enables placing groups of VMs into the same PM (#90).
  • Introduces DatacenterBrokerBestFit. Thanks to Humaira Abdul Salam.
  • Introduces DatacenterBrokerFirstFit.

2. Introduces new Vm methods and updates Host

  • The Vm.getHostCpuUtilization() method enables computing the relative VM CPU utilization from the Host. That is different from the same method in VmUtilizationHistory since the former just works during simulation execution, while the latter uses the history to compute the utilization.
  • Vm.getHostRamUtilization() and Vm.getHostBwUtilization() provide the same feature for RAM and BW.
  • Adds the VmRelativeHostResourceUtilizationExample to show the relative percentage of each resource every VM is using from its Host.
  • Introduces getUpTimeHours() and getTotalUpTimeHours() methods in Host interface to return the number of hours a Host has been active.

Renames following methods in Host and Vm to provide uniformity:

  • Host.getUtilizationOfCpu to getCpuPercentUtilization
  • Host.getUtilizationOfCpuMips to getCpuMipsUtilization
  • Host.getUtilizationOfBw to getBwUtilization
  • Host.getUtilizationOfRam to getRamUtilization
  • Vm.getCpuPercentUsage to getCpuPercentUtilization
  • Vm.getTotalCpuMipsUsage to getTotalCpuMipsUtilization

3. Refactor and redesign classes in distributions package (#201)

  • Provides uniformity for parameter order in ContinuousDistribution classes
  • Introduces new constructors for ContinuousDistribution classes, enabling the researcher to provide a specific RandomGenerator instance that will be used as the actual pseudo random number generator.
  • Makes the ContinuousDistribution classes to use inheritance instead of composition. Despite the recommendation is to favor composition, in this case, that was just causing a huge increase in memory usage in large scale simulations. This way, now ContinuousDistribution classes extend AbstractRealDistribution instead of storing an attribute of this type.

4. General Features

  • Moves time-related methods from Conversion to TimeUtil class.
  • Introduces VmAllocationPolicyWorstFit, VmAllocationPolicyRandom, VmAllocationPolicyRoundRobin.
  • Moves ExperimentRunner and Experiment classes to main module, to enable researchers extend such classes to implement their own experiments that execute in a repeatable manner. This way, they can use a scientific approach to collect valid results. Moving this base classes to the main module stops researchers from depending on the cloudsim-plus-testbeds module, which just provides existing testbeds that may be used just as a learning resource.
  • Smaller bug-fixes.

5. Performance

The performance improvements in this release are impressive. The list below shows where the improvements were made. If you want a glympse of the impact in simulation time, check the end of the Exclusive Features section at the home page.

  • Improves performance of Broker's Cloudlets creation request (#203)
  • The Host previous utilization mips is just used when there is a DatacenterPowerSupply instance attached to the Datacenter. Since getting the utilization of CPU is a very expensive operation in large scale experiments, if a Datacenter power supply is not set, the value is not stored.
  • Improves performance of idle VM detection (#200).
  • Improves overall performance of VmAllocationPolicies (#190, #191).
  • Improves DatacenterBroker performance for allocation of VMs and Cloudlets (#109, #188).
  • Improves DatacenterBroker performance for checking if a VM is alive (#187).

5.1 UtilizationModelStochastic

  • Improves performance when getting the utilization value from the history map (#194).
  • Introduces historyEnabled attribute and setHistoryEnabled() to allow enabling or disabling the history of utilization values (#197).
  • Enables the utilization history by default, because that option brings more performance (at the cost of higher memory consumption). If you are running a large scale simulation, that history may grow too much, which will impact performance anyway. But for regular simulations, enabling the history provides better performance because a lower number of pseudo-random numbers will be generated.
  • Enables the UtilizationModelStochastic to always return a new utilization
    • Allow the researcher to decide if a UtilizationModelStochastic instance will always return a new utilization value every time the getUtilization() methods are called.
    • Returning a new random utilization value for every call to those methods enables the researcher to use a single UtilizationModelStochastic instance for all Cloudlets. This drastically reduces simulation time and memory consumption in large scale simulations. It also ensures that distinct Cloudlets may have different resource utilization even for the same requested time.

- Java
Published by manoelcampos over 6 years ago

https://github.com/cloudsimplus/cloudsimplus - v4.3.1 - Bug fixes, built-in VM power consumption, dynamic activation of hosts and more

  • #185 :: Warn when a simulation which has an explicit termination time is lasting too long. This way, the researcher may know if he/she has set a too long termination time, instead of just keep waiting the simulation to finish when there are no events to process.
  • #184 :: Refactor ContinuousDistribution implementations providing consistent order in construtor parameters. The parameter order of NormalDistr's constructor was changed from NormalDistr(long seed, double mean, double standardDeviation) to NormalDistr(double mean, double standardDeviation, long seed). This way, the SEED (when available) is always the last parameter, conforming to constructors of other random number generators such as the UniformDistr. This change probably will cause a compilation error and will be easy to detect and fix. However, if you are using int or long for all the 3 parameters, there will be no error or warning and your simulation results will be just wrong. In such a case, you need to find where you are using this NormalDistr constructor and correct parameters order.
  • #183 :: Adds time conversion methods to the Conversion class
  • #180 :: When a submission delay is set, VM creation is not being delayed by the DatacenterBroker
  • #178 :: Fix confusion between energy, power and their units
  • #173, #174, #175 :: Performance improvements for large scale simulations
  • #171 :: Cloudlet BW utilization is always zero
  • Adds RamAndBwUsageHistoryExample to collect VM's RAM and BW utilization
  • #168 :: Compute VM Power usage
  • #163 :: Some cloudlets don't finish execution - Adds new example to show it's just a configuration issue.
  • #161 :: Introduce an onCloudletStartListener to be notified when a Cloudlet starts executing
  • #128, #181 :: Enable VmAllocationPolicy implementations to power Hosts on and off as required. Introduce the following methods to Host: getIdleShutdownDeadline(), setIdleShutdownDeadline(), getUpTime() and getTotalUpTime(). Accordingly updates the Host startTime and shutdownTime when the activation status of a Host changes.

- Java
Published by manoelcampos almost 7 years ago

https://github.com/cloudsimplus/cloudsimplus - v4.0.3 - Google Cluster Data Trace Readers: bugfix release

  • Fix #154
  • Fix #156

- Java
Published by manoelcampos over 7 years ago

https://github.com/cloudsimplus/cloudsimplus - v4.0.0 - Google Cluster Data Trace Readers

  • Process trace files from Google Cluster Data creating Hosts and Cloudlets (tasks). A script to download the trace files is available at download-google-cluster-data.sh. Examples are available here (#149).
  • Reimplement Host's and VM's power usage computation that were returning inconsistent results for different Datacenter's scheduling intervals (#153).
  • Makes the UtilizationModelPlanetLab work as a circular list when the Cloudlet using it as a CPU UtilizationModel runs longer than there is data in the trace file. This way, when the end of the file is reached, it starts reading from the beginning to avoid ArrayIndexOutOfBoundsException (#152).
  • Enables creation of Cloudlets with undefined lengths, so that they can keep running until a message is sent to finish them. This enables the simulation of tasks such as a web service that keeps running waiting for requests, until a signal to finish it is sent. (#150).
  • Improves the HostSimple.isSuitableForVm method which was incorrectly checking if a Host is suitable for a Vm (#148).
  • Other small improvements.

- Java
Published by manoelcampos over 7 years ago

https://github.com/cloudsimplus/cloudsimplus - v3.0.0 - Powerful logging features using SLF4J and Logback Libraries. Totally working Network Module

  • Defines types and colors for log messages and enables filtering the level of messages to print. The image below shows how easy is to check things that may be wrong in your simulation (#24). And for instance, if you want to see just messages from warning level, it's as simple as calling Log.setLevel(ch.qos.logback.classic.Level.WARN);
  • Includes all fixes in the Network Module from version 2.4.0.

- Java
Published by manoelcampos over 7 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.4.0 - Totally refactored Network Module

  • General refactoring of Network module, improving code organization and reducing duplication.
  • Fix infinite loop issue with network examples.
  • Improves documentation.
  • Updates network examples.

Closed Issues

  • #85
  • #135
  • #132
  • #137
  • #138
  • #141
  • #142

- Java
Published by manoelcampos over 7 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.3.1 - BugFix and Small Improvements

Updates #130

  • Postpone DatacenterBroker shutdown to the end of the simulation when a termination time is set, instead of as soon as all cloudlets finish. This way, the broker waits for new Cloudlets and VMs submitted during simulation runtime, even if the broker is idle.
  • Updates DatacenterBrokerSimple to request VM destroy during shutdown. In situations such as when a simulation termination time is set, the broker was kept alive to wait for new Cloudlets and VMs. However, this was causing VM destruction to be ignored when the broker was shutdown.
  • Improves information printed by DatacenterBroker.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.2.2 - Cleanup Release

  • General cleanup to remove unused and redundant code.
  • General code review and refactoring.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.2.0 - Simplifies the way to use PowerModel

The PowerSupply was just delegating everything to PowerModel. After refactoring the latter one to provide a better class hierarchy, remove code duplication and fix bugs (#127), PowerSupply was merged into the PowerModel and the former removed.

Now, the way to use PowerModel is as before the release 2.0.0, but with all the benefits of using regular classes to implement power-aware simulations, namely DatacenterSimple, HostSimple and VmSimple.

You just need to call Host's setPowerModel(PowerModel powerModel) method to enable power-aware simulations.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.1.0 - Redesigns PowerModel classes and provides the functional PowerModelSimple

  • Provides a functional implementation of PowerModel classes, enabling to pass a Function as a parameter to the constructor. Such a Function defines how the power consumption increases along the time.
  • Introduces the PowerModelSimple, enabling the developer to define the power consumption increment as a Function. This way, it doesn't require the creation of a new class.
  • Removes all code duplication between PowerModel classes.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v2.0.0 - Integrating power-aware features into regular simulation objects, enabling simulations that are both power- and network-aware

INTRODUCTION

Enables power-aware simulations using regular classes such asDatacenterSimple, HostSimple and VmSimple. This way, it automatically allows creating simulations that are both network- and power-aware by using the network versions of such classes.

Any Host now has a PowerSupply attribute that allows to get power consumption data from. To enable collecting such data, it's is required to set a PowerModel object by calling host.getPowerSupply().setPowerModel(powerModel). The only difference from previous versions is that the PowerModel is defined inside the PowerSupply instead of the Host.

This way, if you don't need power-aware simulations, you need to do nothing because that is the default behaviour.

There are some examples such as the PowerExample and the MigrationExample2_PowerUsage.

More details are presented below.

VmUtilizationHistory

Adds the VmUtilizationHistory class to store resource utilization history by a given Vm. This way, all Vm implementations have a UtilizationHistory attribute.

PowerVm

PowerVm class was removed and its methods were moved to a new VmUtilizationHistory class. The Vm now has an attribute VmUtilizationHistory that enables collecting CPU utilization data. The VmUtilizationHistory.enabled is set by default to false. This way, the user have to manually enable the history to start collecting utilization data. It was disabled by default to reduce memory usage.

PowerSupply

Adds the PowerSupply interface to concentrate all power consumption data and operations, enabling any Host to get such an information. The PowerSupply includes the PowerModel that was previously inside the PowerHost class.

PowerHost

PowerHost class removed and its methods merged into Host. A PowerSupply interface was introduced to group power consumption data (including a PowerModel). This way, any Host can extract power consumption data. It's just required a PowerModel to be set in the PowerSupply.

PowerHostUtilizationHistory and HostDynamicWorkloadSimple

PowerHostUtilizationHistory and HostDynamicWorkloadSimple class were removed and their code merged into the HostSimple class.

The Host's getUtilizationHistory method gets the CPU utilization history from its VMs. The Host doesn't store any data. The VM utilization history must be enabled to allow getting such data, by calling vm.getUtilizationHistory().enable().

VmAllocationPolicy

Refactors VmAllocationPolicy implementations, mainly the VmAllocationPolicyAbstract and VmAllocationPolicySimple.

Changed the method Host findHostForVm(final Vm vm) to Optional<Host> findHostForVm(final Vm vm), making it return an Optional to explicitly indicate that a suitable Host may not be found for a given VM.

The method was defined as abstract in the VmAllocationPolicyAbstract and it's the single one initially required to be implemented by subclasses of VmAllocationPolicyAbstract.

Removes PowerVmAllocationPolicySimple because it was doing nothing that other policies weren't doing. Introduces the VmAllocationPolicyFirstFit.

Renames the package org.cloudbus.cloudsim.allocationpolicies.power to org.cloudbus.cloudsim.allocationpolicies.migration. Such allocation policies enable VM migration and can be used now for any kind of simulation, not only for power-aware ones. All internal classes and interfaces were renamed, removing the prefix Power.

NOTICE

Check release 2.2.0 for important updates about power-aware simulations.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.3.3 - Removes Confusing Examples

Removes all the examples that were available at package org.cloudbus.cloudsim.examples.power

Those simulations aren't in fact examples. They were clearly used just to publish results for the paper Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient Dynamic Consolidation of Virtual Machines in Cloud Data Centers.

Since the code lacks organization and results aren't structured and clear, such simulations just confuse instead of help. A more detailed discussion about the issues in these simulations is available here.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.3.2 - Easier way to load files for Network Topologies, Workloads, Utilization Models, etc

Updates the ResourceLoader class

Enables loading a resource from the resource directory, regardless the simulation is running directly from a compiled class or from a jar file.

Makes it easier to get an instance of classes that require reading a file,

The classes BriteNetworkTopology, WorkloadFileReader, UtilizationModelPlanetLab and SlaContract now have a simplified getInstance(String path) method that just requires the relative path to the file to be loaded. If such file is inside the application's resource directory, it will be found. If it's anywhere else, just provide an absolute file path.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.3.1 - Bugfix Release

Fix issue #126

Consider there are 4 Cloudlets running at the same time inside the same VM and that a UtilizationModelFull was used to define how a Cloudlet requests RAM from its VM. This issue was enabling, for instance, that all Cloudlets requested together 400% of RAM from the VM, which is obviously not possible without virtual memory (which is not supported in simulations).

You are strongly recommended to check more details in #126.

Send messages between entities

Enable internal message passing mechanism to accept and SimEntity as the source and destination for a message, instead of int IDs. That makes easier to interact with the involved entities, enabling the event processing to call some methods directly on these entities. It also avoids looking up the entities into a list or map in order to get an instance to them. That makes the message processing faster.

This feature also enables freely changing entities' names. When the ID of an entity is changed, its name is accordingly changed to.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.3.0 - Creation of Hosts during Simulation Runtime

Enables simulating the physical expansion of a Datacenter by dynamically adding new Hosts (PMs) at simulation runtime. The Datacenter interface now has the methods addHost and addHostList, which can be called before or after starting the simulation, to expand a Datacenter physical capacity by adding new Hosts.

This release also makes it easier to create a Datacenter since a DatacenterCharacteristics object is not required anymore. When a Datacenter is instantiated, it internally creates a DatacenterCharacteristics object. In place of passing such an object to the Datacenter constructor, you just need to pass a List of Hosts.

This way, instead of creating a Datacenter like this:

java DatacenterCharacteristics characts = new DatacenterCharacteristicsSimple(hostList); Datacenter dc0 = new DatacenterSimple(cloudsim, characts, new VmAllocationPolicySimple());

you simple do:

java Datacenter dc0 = new DatacenterSimple(cloudsim, hostList, new VmAllocationPolicySimple());

The DatacenterCharacteristics can be accessed using the Datacenter.getDatacenterCharacteristics() method, enabling the characteristics (such as costs) to be changed.

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.2.7 - Refactoring Release

- Java
Published by manoelcampos almost 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.2.6 - Bufix Release

Fix the issue #123 to enable canceling the execution of running Cloudlets.

- Java
Published by manoelcampos about 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.2.3 - Updates Host Fault Injection Mechanism

Added / Changed

  • Renamed the DatacenterBroker getVmsCreatedList() method to getVmCreatedList() and added a getVmExecList() one (#106). Now the getVmExecList() method is the one which stores the list of all currently running VMs. These VMs may or may not be running Cloudlets, but they are available for new submitted Cloudlets to be placed into them. The old getVmCreatedList() stores all created VMs for the broker along the entire simulation time. This way, the list of all created VMs can be queried after the simulation finishes.

Changed

  • Updates Host Fault Injection Mechanism (#105).

- Java
Published by manoelcampos over 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1 2.2 - Amazon EC2 Instance Templates and other small features

Added

  • Amazon EC2 instance templates in JSON format (#97).
  • Vm.getStartTime(), Vm.getStopTime() and Vm.getTotalExecutionTime() methods to, respectively: get the time a VM started running for the first time; the time it was destroyed in the last Host it executed; and the total execution time across all Hosts the VM possibly have migrated across (#98).
  • Allow a VM belonging to a broker to be destroyed after all its Cloudlets have finished, independently of the state of other running VMs and according to a given delay (#99).

Changed

  • Host Fault Injection Mechanism (#81).

Fixed

  • Cloudlets executed with CloudletSchedulerSpaceShared were giving incorrect results (#96).

- Java
Published by manoelcampos over 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.2.1 - Updates Host Fault Injection Mechanism, fixes bugs and includes minor features

Added

  • PowerVmAllocationPolicyMigrationBestFitStaticThreshold to select the Host to place or migrate a VM using a Best Fit policy, that is, it selects the Host with less available resources that is enough to place a given VM.
  • EventListener to notify subscribers when all VMs in the DatacenterBroker waiting list were created (#92).
  • Enables Hosts to be powered on and off (#89).
  • Enables changing the CPU migration overhead for any VmScheduler. A new constructor was added to these schedulers to enable setting this value once (#88).
  • Enables dynamically adding new columns to the simulation results table (#87).

Fixed

  • Bug fixes (#95)

Changed

  • Updates the Host Fault Injection Mechanism to allow creating a snapshot of a VM when all VMs belonging to a broker have failed (#93).

- Java
Published by manoelcampos over 8 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.2.0 - Vertical VM Scaling, Initial Host Fault Injection, Automatic generation of IDs ...

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 the UtilizationModel 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 a UtilizationModel is associated to, will be used. The enum values can be PERCENTAGE or ABSOLUTE, 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. The UtilizationModelDynamic (previously called UtilizationModelArithmeticProgression) allows setting a different unit for such an UtilizationModel (#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 methods setVmComparator and setCloudletComparator to enable a developer to set a Comparator 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 no Comparator 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 the DatacenterBroker, 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 the DatacenterBroker, 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 the CloudletScheduler 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() and isWorking().
  • Allowed disabling log on every SimEntity by calling the new method SimEntity.setLog(). If Log.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

  • Changed the methods getRam(), getBw() and getSize() 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() and getStorageCapacity() 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 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 and setVmMapper 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. The DatacenterBroker.getCloudletsFinishedList() method returns the list of finished Cloudlets, but for all VMs of the broker. The CloudletScheduler 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)

- Java
Published by manoelcampos almost 9 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.1.0 - Completely refactored PeProvisionerSimple to just extend the ResourceProvisionerSimple

This release provides some refactoring and bug fixes to enable implementation of Vertical VM Scaling proposed in #7.

Fixed

  • Closed Isssue #60
  • Fixed the issue of allocating the same physical PE for multiple Virtual PEs inside the VmSchedulerTimeShared class.

Changed

  • Changed the signature of the PeSimple constructor that now requires the PE MIPS capacity instead of an ID, because it is in fact an attribute that must belong to a PE. The PE is the one that has a MIPS capacity. If a PE ID is not defined, when a PE list is assigned to a Host, the host automatically defines the IDs.
  • The PeProvisionerSimple constructor doesn't require any parameter anymore. It internally creates an association with the PE that receives the PeProvisioner instance when a Pe is created.
  • All the duplicated code inside the PeProvisioner and PeProvisionerSimple were removed. The PeProvisionerSimple class now extends the ResourceProvisionerSimple and the PeProvisioner is now an interface.

- Java
Published by manoelcampos about 9 years ago

https://github.com/cloudsimplus/cloudsimplus - v1.0.0 - First stable release available at Maven Central

In January of 2015 we started to contribute to CloudSim and due to different philosophies from CloudSim team we decided to initiate CloudSim Plus as an independent project. One year of intense and constant work later, after 375 commits and 30 issues closed, we are proud to announce that CloudSim Plus 1.0 is available as the first stable release.

The framework went through a comprehensive re-design and we doubt there is a single class that was not refactored to improve code quality, clarity and extensiblity and to provide an extensive and updated documentation.

All the performed changes aimed to reduce violation of several software engineering principles, that directly impact researchers trying to extend the framework to provide some specific features for their simulations. Some bugs that reduced the framework accuracy were also fixed. Some of these principles, practices and recommendations are Design Patterns, SOLID principles and clean code programming.

With all these principles in mind, CloudSim Plus has become a modern, better structured and much easier-to-use cloud simulation framework. It is a Java 8 framework that strongly relies on the most recent features of Java language to provide a code that is simpler, easier to understand and to extend. There are innumerous changes and several exclusive features and improvements that make CloudSim Plus a promising project.

Some of the most relevant and exclusive features and improvements are presented below: - Parallel execution of experiments, enabling multiple runs of a given simulation to be executed simultaneously in a multi-core machine. - Horizontal VM scaling to balance workload of dynamically arrived cloudlets by creating new VMs on-demand. - Dynamic creation of VMs and Cloudlets by delaying their submission to a broker. - Dynamic creation of VMs at runtime without requiring the need to create new brokers. - Listener objects to monitor several events happening during simulation execution, enabling metrics collection and dynamic resource allocation for SLA fulfillment. - Classes and interfaces to allow implementation of heuristics such as Tabu Search, Simulated Annealing, Ant Colony Systems and so on. - Implementation of the Completely Fair Scheduler used in recent version of the Linux Kernel, that in fact performs task preemption as a multi-task mechanism. - Completely re-designed, reusable and simpler Network module that just works. - Extremely simpler constructors for objects such as Datacenter, Host, Vm, Cloudlet, VmAllocationPolicy, VmScheduler and ClodletSchedler. - A very easier way to initialize a simulation by just calling a no-args constructor of the CloudSim class. - Totally re-organized package and modules structure, grouping classes such as Hosts into an exclusive package.

And for the first time, a cloud simulation framework is provided at the Maven Central repository to enable a researcher to include CloudSim Plus as a dependency into his/her pom.xml project file, making it even easier to use CloudSim Plus. Such a feature also enables researchers to implement new modules and tools running on top of CloudSim Plus, without requiring them to include CloudSim Plus source code inside their projects. That also encourage these researchers making changes to CloudSim Plus code to submit pull request to include those changes in the official repository, contributing to the entire academic and open source community.

The efforts of CloudSim Plus already were recognized by the acceptance of a paper in a top conference. More details will be provided as soon as the paper is published.

We'd like to hear from researchers using CloudSim Plus. Join us at the Google Groups Forum.

For more information, check the README file at the project's home page.

- Java
Published by manoelcampos about 9 years ago