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
- PR #439
- Close #437 (check example here)
- Close #438
- Close #440
- 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
- Finish Milestone 8.
- You can find the last release for JDK 8 here, but it's not supported anymore.
- 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
- JDK 8 version will not be supported anymore.
- You can find the last release for this JDK version here.
- 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
HarddriveStorageinstead of just aStorage(which is now calledSimpleStorage). 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
CloudletSchedulerAbstractto process virtual memory (vMem / swap) requests and BW reduction, which cause cloudlet processing delay due to over-subscription. - Introduces
VirtualMemoryForRequestedRamHigherThanAvailableExample.javato check the processing delay caused by the use of Virtual Memory and reduced BW allocation.
- Redesign Host storage to use an actual
- Close #308
- Fix #309
- Introduces a
beforeExperimentRunConsumerto enable the researcher to execute some code before anExperimentstarts running. - Introduces a
beforeExperimentBuildConsumerto enable the researcher to execute some code before anExperimentis 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

- #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
PowerModelinterface. It is backwards compatible (providing thegetPower()method) but also offers a new methodgetPowerMeasurement()which returns an object with more detailed information (currently static & dynamic fraction but can be easily extended). - Gets rid of all the old
PowerModelimplementations from the original CloudSim paper, since they are overly specific. - Adds
PowerModelimplementations forDatacenterandHost:- PowerModelHost has a more intuitive interface
PowerModelHost(staticPower, maxPower)than the oldPowerModelLinear(double maxPower, double staticPowerPercent)
- PowerModelHost has a more intuitive interface
DatacenterPowerSupplywas replaced withPowerMeter.PowerMetercan be applied to anyPowerAwareentities like Datacenters or Hosts (and in the future also VMs, etc). The implementation ofPowerMeteris decoupled from the core which resulted in a lot of removed code inDatacenterand especiallyHostSimple.
1.2 Other changes
- Moves
wattSecondsToKWattHours()toConversionclass - Throws exception in
PowerModelHostSimpleconstructor whenmaxPowerorstaticPoweris smaller than 1. That may indicate the researcher is trying to pass a percentage instead of a value in watts. - Stops a
Datacenterto accept someone else'sPowerModel. - If a
Datacenterassigned to a datacenter is tried to be assigned to another one, an exception is thrown because eachDatacentermust have its ownPowerModel. - Changes
setPowerModel()onHostandDatacenterto comply to "least astonishment principle". It's not intuitive that setting null will be replaced by aPowerModelDatacenter.NULLorPowerModelHost.NULLobject. 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:
- Replaces PowerModel implementations such as PowerModelLinear by
PowerModelHostSimple(previousPowerModelLinear) orPowerModelSpec. The very specific implementationsPowerModelSqr,PowerModelSqrtandPowerModelCubicwere removed because they aren't realistic. Implementations such asPowerModelSpecPowerIbmX3250XeonX3470, 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 newPowerModelSpecand pass the utilization percentage array from the previous implementation as a parameter. - 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.
- Replaces class to
PowerAware.wattsSecToKWattsHourbyConversion.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 from
NetworkTopologyinterface toBriteNetworkTopologyclass (#264)
3. General Improvements
- Adds
SimEntity.startTimeandshutdownTimeattribute to know when the entity was started and shut down - Adds
DatacenterBroker.shutdownWhenIdleattribute to define if it should be automatically shut down when idle or not. - Rename
CloudSimEntity.shutdownEntity()method toshutdown()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)
VmSchedulerAbstractwas 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 of
HostFaultInjectionandPowerMeterevent 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 theHost. That is different from the same method inVmUtilizationHistorysince the former just works during simulation execution, while the latter uses the history to compute the utilization. Vm.getHostRamUtilization()andVm.getHostBwUtilization()provide the same feature for RAM and BW.- Adds the
VmRelativeHostResourceUtilizationExampleto show the relative percentage of each resource every VM is using from its Host. - Introduces
getUpTimeHours()andgetTotalUpTimeHours()methods inHostinterface to return the number of hours a Host has been active.
Renames following methods in Host and Vm to provide uniformity:
Host.getUtilizationOfCputogetCpuPercentUtilizationHost.getUtilizationOfCpuMipstogetCpuMipsUtilizationHost.getUtilizationOfBwtogetBwUtilizationHost.getUtilizationOfRamtogetRamUtilizationVm.getCpuPercentUsagetogetCpuPercentUtilizationVm.getTotalCpuMipsUsagetogetTotalCpuMipsUtilization
3. Refactor and redesign classes in distributions package (#201)
- Provides uniformity for parameter order in
ContinuousDistributionclasses - Introduces new constructors for
ContinuousDistributionclasses, enabling the researcher to provide a specificRandomGeneratorinstance that will be used as the actual pseudo random number generator. - Makes the
ContinuousDistributionclasses 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, nowContinuousDistributionclasses extendAbstractRealDistributioninstead of storing an attribute of this type.
4. General Features
- Moves time-related methods from Conversion to TimeUtil class.
- Introduces
VmAllocationPolicyWorstFit,VmAllocationPolicyRandom,VmAllocationPolicyRoundRobin. - Moves
ExperimentRunnerandExperimentclasses 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 thecloudsim-plus-testbedsmodule, 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
Hostprevious utilization mips is just used when there is aDatacenterPowerSupplyinstance attached to theDatacenter. 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
DatacenterBrokerperformance for allocation of VMs and Cloudlets (#109, #188). - Improves
DatacenterBrokerperformance for checking if a VM is alive (#187).
5.1 UtilizationModelStochastic
- Improves performance when getting the utilization value from the history map (#194).
- Introduces
historyEnabledattribute andsetHistoryEnabled()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
UtilizationModelStochasticto always return a new utilization- Allow the researcher to decide if a
UtilizationModelStochasticinstance will always return a new utilization value every time thegetUtilization()methods are called. - Returning a new random utilization value for every call to those methods enables the researcher to use a single
UtilizationModelStochasticinstance 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.
- Allow the researcher to decide if a
- 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)toNormalDistr(double mean, double standardDeviation, long seed). This way, theSEED(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()andgetTotalUpTime(). 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.isSuitableForVmmethod 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.3.0 - Enables simulation to keep running, waiting for events such as the dynamic arrival of Cloudlets and VMs
- Closes #130
- 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
PowerModelclasses, enabling to pass aFunctionas a parameter to the constructor. Such aFunctiondefines how the power consumption increases along the time. - Introduces the
PowerModelSimple, enabling the developer to define the power consumption increment as aFunction. This way, it doesn't require the creation of a new class. - Removes all code duplication between
PowerModelclasses.
- 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
DatacenterBrokergetVmsCreatedList()method togetVmCreatedList()and added agetVmExecList()one (#106). Now thegetVmExecList()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 oldgetVmCreatedList()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()andVm.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
CloudletSchedulerSpaceSharedwere 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
PowerVmAllocationPolicyMigrationBestFitStaticThresholdto 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.EventListenerto notify subscribers when all VMs in theDatacenterBrokerwaiting 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 theUtilizationModelclass 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.Unitenum to define the measuring unit in which a Cloudlet resource, to which aUtilizationModelis associated to, will be used. The enum values can bePERCENTAGEorABSOLUTE, 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).UtilizationModelDynamicnow 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
DatacenterBrokerinterface and implementing classes, including the methodssetVmComparatorandsetCloudletComparatorto enable a developer to set aComparatorobject (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 noComparatoris 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 theCloudletSchedulerto 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
SimEntityby 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
- 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
ResourceProvisionerSimplenow requires just a default no-args constructor. - The
DatacenterBrokerinterfaces 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,setFallbackDatacenterSupplierandsetVmMappermethods, 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. TheCloudletSchedulermethod 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