Skip to content

Releases: cloudsimplus/cloudsimplus

v3.0.0 - Powerful logging features using SLF4J and Logback Libraries. Totally working Network Module

29 Jun 23:37
5a4592b
Compare
Choose a tag to compare
  • 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.

v2.4.0 - Totally refactored Network Module

27 Jun 15:09
69abd4e
Compare
Choose a tag to compare
  • 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

v2.3.1 - BugFix and Small Improvements

22 May 13:51
a3b6258
Compare
Choose a tag to compare

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.

v2.3.0 - Enables simulation to keep running, waiting for events such as the dynamic arrival of Cloudlets and VMs

04 May 22:19
84f58c0
Compare
Choose a tag to compare

v2.2.2 - Cleanup Release

29 Apr 17:05
7333fcc
Compare
Choose a tag to compare
  • General cleanup to remove unused and redundant code.
  • General code review and refactoring.

v2.2.0 - Simplifies the way to use PowerModel

23 Apr 14:16
60e50b0
Compare
Choose a tag to compare

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.

v2.1.0 - Redesigns PowerModel classes and provides the functional PowerModelSimple

21 Apr 21:18
fbf90ad
Compare
Choose a tag to compare
  • 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.

v2.0.0 - Integrating power-aware features into regular simulation objects, enabling simulations that are both power- and network-aware

20 Apr 22:34
c7aa88c
Compare
Choose a tag to compare

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.

v1.3.3 - Removes Confusing Examples

18 Apr 20:22
e2db204
Compare
Choose a tag to compare

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.

v1.3.2 - Easier way to load files for Network Topologies, Workloads, Utilization Models, etc

18 Apr 20:15
35c520c
Compare
Choose a tag to compare

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.