1. 21 Apr, 2018 1 commit
  2. 20 Apr, 2018 1 commit
    • Manoel Campos's avatar
      Closes #45 · c7aa88c9
      Manoel Campos authored
      
      
      Redesigns Power Module to enable any Host and VM to have power capacity.
      Enables power-aware simulations using regular classes such as
      `DatacenterSimple`, `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.
      
      - Merges PowerDatacenter into the DatacenterSimple and removes the first one.
        Removes useless prints and code.
      - Adds PowerSupply interface to concentrate all power consumption data
        and operations, enabling any Host to get such an information,
        including the PowerModel.
      - Merges the PowerHost into the HostSimple and removes the first one.
      - Adds VmUtilizationHistory class to store resource utilization history
        by a given VM.
      - Removes PowerVm and adds an attribute of this class
        inside the Vm, in order to store utilization data.
        The VmUtilizationHistory.enabled
        attribute allows enabling/disabling the data collection
        (which is disabled by default to save memory)
      - Moves StateHistory from HostDynamicWorkloadSimple to HostSimple
        and adds attribute stateHistoryEnabled to allow
        enabling or disabling collection and storage of such states
        (it is disabled by default).
      - Renamed package org.cloudbus.cloudsim.allocationpolicies.power to
        org.cloudbus.cloudsim.allocationpolicies.migration and removed
        the prefix Power from its classes and interfaces, since these
        allocation policies aren't used just for power-aware simulations
        anymore, but to enable VM migrations in general.
      - Refactors VmAllocationPolicy implementations, mainly
        the VmAllocationPolicyAbstract and VmAllocationPolicySimple.
        Code duplication between different classes was fixed.
        Methods were moved to upper levels to provide a common
        implementation for several classes.
        Changed the method `Host findHostForVm(final Vm vm)
        to `Optional<Host> findHostForVm(final Vm vm)`, making it
        to return an Optional to explicitly indicate that a suitable Host
        may not be found for a given VM.
        The method was defined as protected abstract in the
        VmAllocationPolicyAbstract and it's the single method
        initially required to be implemented by subclasses of
        VmAllocationPolicyAbstract.
        These changes pave the way to close issue #76.
      - Refactors migration examples and prints CPU utilization and
        power usage in MigrationExample2_PowerUsage.
      - Exchanges all references from PowerVm to VmSimple
      - Exchanged all references from PowerHost to HostSimple
      - Exchanged all references from PowerDatacenter to DatacenterSimple
      Signed-off-by: default avatarManoel Campos <manoelcampos@gmail.com>
      c7aa88c9
  3. 16 Mar, 2018 1 commit
  4. 05 Jun, 2017 2 commits
  5. 04 Jun, 2017 1 commit
  6. 03 Jun, 2017 1 commit
  7. 28 May, 2017 2 commits
  8. 25 May, 2017 1 commit
    • Manoel Campos's avatar
      Closes #87 · 75229044
      Manoel Campos authored
      - Refactored TableBuilder, TableColumn and the CloudletsTableBuilder
        to enable dynamically adding columns to be printed in the table
        usually shown in the end of simulation, presenting the list
        of executed Cloudlets.
      - It is introduced some addColumn methods to the CloudletsTableBuilder
        to allow adding new columns dynamically.
      75229044
  9. 17 May, 2017 2 commits
  10. 09 Apr, 2017 1 commit
  11. 06 Apr, 2017 1 commit
    • Manoel Campos's avatar
      - Removed the ID parameter from Hosts constructor, enabling automatic ID... · 353d8569
      Manoel Campos authored
      - Removed the ID parameter from Hosts constructor, enabling automatic ID generation when a List of Hosts is attached to a Datacenter.
      - Hosts constructors require the RAM and bandwidth capacity, since storage already was required.
      - Instantiating a `ResourceProvisionerSimple` requires just a default no-args constructor.
      353d8569
  12. 30 Mar, 2017 1 commit
  13. 25 Jan, 2017 1 commit
  14. 21 Jan, 2017 2 commits
    • Manoel Campos's avatar
      Fix build error. · df16f0af
      Manoel Campos authored
      df16f0af
    • Manoel Campos's avatar
      Closes #7 · 345a1b9f
      Manoel Campos authored
      The development of this feature started some commits ago, which required
      the creation of the new issues #62, #63, #64 that already were closed.
      345a1b9f
  15. 20 Jan, 2017 2 commits
    • Manoel Campos's avatar
      Closes #62 · 4cb60346
      Manoel Campos authored
      ==========
      
      Changed the UtilizationModel interface adding an enum called Unit that enables the model to define resource usage in percentage or absolute value.
      All the already existing UtilizationModels inherited from CloudSim project use a percentage value.
      
      The CloudSim Plus UtilizationModelArithmeticProgression allows changing the unit attribute to any value defined in the Unit enum.
      All the code that was getting the resource usage from an UtilizationModel was updated to check what is the unit (if percentage or absolute values),
      to correctly compute resource usage.
      
      There may be Cloudlets using UtilizationModels with different units, even inside the same VM.
      Depending on where the UtilizationModel is being used, all utilization values are converted to either percentage or absolute values.
      The documentation was properly updated to make clear these changes.
      
      Some methods in classes such as CloudletScheduler that had an abstract and confusing name that didn't make clear if
      the method was returning an absolute or percentage value were renamed to make them clear.
      When the method returns a percentage, its name clearly shows that.
      4cb60346
    • Manoel Campos's avatar
      - Changed the methods getRam(), getBw() and getSize() from Vm interface to... · 747214c7
      Manoel Campos authored
      - 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.
      747214c7
  16. 14 Jan, 2017 1 commit
  17. 06 Jan, 2017 1 commit
  18. 05 Jan, 2017 1 commit
    • Manoel Campos's avatar
      - Refactored NetworkCloudletSchedulerSpaceShared to change the redundant... · d547cc63
      Manoel Campos authored
      - Refactored NetworkCloudletSchedulerSpaceShared to change the redundant Map<Vm, List<VmPacket>> vmPacketsToSend to just List<VmPacket>. Since this structure stores the List of packets to sent from the cloudlets of a source Vm and that the scheduler is assigned to a single Vm, all the cloudlets running inside the scheduler are from that same Vm. That poses no need to have a Map since all keys (Vm) will be the same. Thus, just a list is enough.
      - Fixed the network example that weren't finding the topology.brite file. The error was not identified before because the original CloudSim code was swallowing (suppressing) the exception. The topology.brite file was moved to the resources directory and the ResourceLoader class was used to get is absolute path.
      d547cc63
  19. 04 Jan, 2017 1 commit
  20. 03 Jan, 2017 2 commits
  21. 02 Jan, 2017 1 commit
  22. 24 Dec, 2016 1 commit
  23. 22 Dec, 2016 3 commits
  24. 21 Dec, 2016 1 commit
    • Manoel Campos's avatar
      Closes #48 · 59f2fb2c
      Manoel Campos authored
      - Simplified the EventInfo class hierarchy by changing all classes to interfaces and
        removed classes with the suffix "Simple".
        Since these classes are just Data Type Objects (DTO) that don't have
        business rules, the JDK8 "static methods for interfaces" feature was
        used to enable creating new objects from EventInfo interfaces without
        requiring to define implementing classes for such intefaces.
        For instance, to create an object from the CloudletVmEventInfo interface
        you can call CloudletVmEventInfo.of() passing the required parameters.
        This approach also creates immutable objects, since there is no setter.
      - Enabled adding multiple Listeners to get notifications about a given event.
      - Now interfaces Vm, Cloudlet and Simulation have some addOnXXXXXX and removeOnXXXXXX methods
        to enable adding and removing Listeners to a given event.
      59f2fb2c
  25. 17 Dec, 2016 2 commits
    • Manoel Campos's avatar
      Closes #19 · b0909ea1
      Manoel Campos authored
      - Renamed the class `HostPacket` to `VmPacket` because such a kind of packet is sent between VMs.
      - Renamed the class `NetworkPacket` to `HostPacket` because such a kind of packet is sent between Hosts.
      - Renamed the class `InfoPacket` to `IcmpPacket` because such a kind of packet is sent to simulate ping requests (ICMP protocol).
      - Classes `IcmpPacket`, `HostPacket` and `VmPacket` now implements the new interface `NetworkPacket`
      b0909ea1
    • Manoel Campos's avatar
      Closes #17: Updated SimEvent and Simulation documentation. Internal... · 6505c408
      Manoel Campos authored
      Closes #17: Updated SimEvent and Simulation documentation. Internal refactoring to CloudSim class to use Streams API.
      6505c408
  26. 14 Dec, 2016 1 commit
  27. 12 Dec, 2016 1 commit
  28. 11 Dec, 2016 1 commit
  29. 09 Dec, 2016 2 commits
    • Manoel Campos's avatar
      Included a new example showing how to schedule a pause during simulation... · f3a36411
      Manoel Campos authored
      Included a new example showing how to schedule a pause during simulation execution using a Listener.
      f3a36411
    • Manoel Campos's avatar
      - Changed the method Simulation.running() to Simulation.isRunning() · 308d065f
      Manoel Campos authored
      - Removed the Simulation.stop() method because it in fact was doing nothing. When the Simulation.start() is called, it already waits for the simulation to
        finish executing and automatically stops when there is not more events to process.
      - Renamed method in Simulation interface: pause(int src, double delay) to Simulation.pauseEntity(int src, double delay);
        hold(int src, long delay) to holdEntity(int src, long delay).
      - Included examples that shows how to [schedule the simulation termination at a given time](cloudsim-plus-examples/src/main/java/org/cloudsimplus/examples/TerminateSimulationAtGivenTime.java), how to terminate it [when a specific condition is met](cloudsim-plus-examples/src/main/java/org/cloudsimplus/examples/TerminateSimulationAtGivenCondition.java) and how to [pause the simulation at an specific time and collect partial results](cloudsim-plus-examples/src/main/java/org/cloudsimplus/examples/PauseSimulationAtGivenTime.java).
      - Internal refactorings in CloudSim pause and termination mechanism.
      308d065f
  30. 08 Dec, 2016 1 commit
    • Manoel Campos's avatar
      Removed the numUsers parameter, that represents the number of created... · 911e44a4
      Manoel Campos authored
      Removed the numUsers parameter, that represents the number of created DatacenterBrokers, from CloudSim constructor.
      Now when a Broker is created, it automatically increases the numberOfUsers in the given CloudSim instance.
      This probably will automatically make possible to create brokers dynamically during simuluation execution (it has to be tested yet).
      911e44a4