Interface Datacenter

All Superinterfaces:
Comparable<SimEntity>, Identifiable, Nameable, PowerAware<PowerModelDatacenter>, Runnable, SimEntity, Sizeable, TimeZoned
All Known Implementing Classes:
DatacenterSimple, NetworkDatacenter

public interface Datacenter extends SimEntity, PowerAware<PowerModelDatacenter>, TimeZoned, Sizeable
An interface to be implemented by each class that provides Datacenter features. The interface implements the Null Object Design Pattern in order to start avoiding NullPointerException when using the NULL object instead of attributing null to Datacenter variables.
Since:
CloudSim Plus 1.0
Author:
Rodrigo N. Calheiros, Anton Beloglazov, Manoel Campos da Silva Filho
  • Field Details

    • LOGGER

      static final org.slf4j.Logger LOGGER
    • NULL

      static final Datacenter NULL
      A property that implements the Null Object Design Pattern for Datacenter objects.
    • DEF_BW_PERCENT_FOR_MIGRATION

      static final double DEF_BW_PERCENT_FOR_MIGRATION
      The default percentage ([0..1]) of bandwidth allocated for VM migration, if a value is not set.
      See Also:
  • Method Details

    • requestVmMigration

      void requestVmMigration(Vm sourceVm, Host targetHost)
      Sends an event to request the migration of a Vm to a given target Host on this Datacenter. If you want VM migrations to be performed automatically, use a VmAllocationPolicyMigration.
      Parameters:
      sourceVm - the VM to be migrated
      targetHost - the target Host to migrate the VM to
      See Also:
    • requestVmMigration

      void requestVmMigration(Vm sourceVm)
      Sends an event to request the migration of a Vm to some suitable Host on this Datacenter. A suitable Host will try to be found when the migration request message is processed by the Datacenter. If you want VM migrations to be performed automatically, use a VmAllocationPolicyMigration.
      Parameters:
      sourceVm - the VM to be migrated
      See Also:
    • getHostList

      <T extends Host> List<T> getHostList()
      Gets an unmodifiable host list.
      Type Parameters:
      T - The generic type
      Returns:
      the host list
    • getActiveHostStream

      Stream<? extends Host> getActiveHostStream()
      Gets a Stream containing the active Hosts inside the Datacenter.
      Returns:
      the active host Stream
    • getHost

      Host getHost(int index)
      Gets a Host in a given position inside the Host List.
      Parameters:
      index - the position of the List to get the Host
      Returns:
    • getActiveHostsNumber

      long getActiveHostsNumber()
      Gets the current number of Hosts that are powered on inside the Datacenter.
      Returns:
      See Also:
    • size

      long size()
      Gets the total number of existing Hosts in this Datacenter, which indicates the Datacenter's size.
      Specified by:
      size in interface Sizeable
      Returns:
    • getHostById

      Host getHostById(long id)
      Gets a Host from its id.
      Parameters:
      id - the ID of the Host to get from the List.
      Returns:
      the Host if found or Host.NULL otherwise
    • addHostList

      <T extends Host> Datacenter addHostList(List<T> hostList)
      Physically expands the Datacenter by adding a List of new Hosts (physical machines) to it. Hosts can be added before or after the simulation has started. If a Host is added during simulation execution, in case VMs are added dynamically too, they may be allocated to this new Host, depending on the VmAllocationPolicy.

      If an ID is not assigned to a Host, the method assigns one.

      Parameters:
      hostList - the List of new hosts to be added
      Returns:
      See Also:
    • addHost

      <T extends Host> Datacenter addHost(T host)
      Physically expands the Datacenter by adding a new Host (physical machine) to it. Hosts can be added before or after the simulation has started. If a Host is added during simulation execution, in case VMs are added dynamically too, they may be allocated to this new Host, depending on the VmAllocationPolicy.

      If an ID is not assigned to the given Host, the method assigns one.

      Parameters:
      host - the new host to be added
      Returns:
      See Also:
    • removeHost

      <T extends Host> Datacenter removeHost(T host)
      Removes a Host from its Datacenter.
      Parameters:
      host - the new host to be removed from its assigned Datacenter
      Returns:
    • getVmAllocationPolicy

      VmAllocationPolicy getVmAllocationPolicy()
      Gets the policy to be used by the Datacenter to allocate VMs into hosts.
      Returns:
      the VM allocation policy
      See Also:
    • getSchedulingInterval

      double getSchedulingInterval()
      Gets the scheduling interval to process each event received by the Datacenter (in seconds). This value defines the interval in which processing of Cloudlets will be updated. The interval doesn't affect the processing of such cloudlets, it only defines in which interval the processing will be updated. For instance, if it is set an interval of 10 seconds, the processing of cloudlets will be updated at every 10 seconds.

      Trying to get the amount of instructions the cloudlet has executed after 5 seconds, by means of Cloudlet.getFinishedLengthSoFar(Datacenter), won't return an updated value. This way, one should set the scheduling interval to 5 to get updated data. As longer is the interval, faster will be the simulation execution.

      The default value is zero, which indicates no scheduling interval is set and the simulation state is updated only when a cloudlet is finished. That ensures the highest performance but may not be desired if you want to collect some simulation data in a defined time interval.

      Returns:
      the scheduling interval (in seconds)
    • setSchedulingInterval

      Datacenter setSchedulingInterval(double schedulingInterval)
      Sets the scheduling delay to process each event received by the Datacenter (in seconds).
      Parameters:
      schedulingInterval - the new scheduling interval (in seconds)
      Returns:
      See Also:
    • getCharacteristics

      DatacenterCharacteristics getCharacteristics()
      Gets the Datacenter characteristics.
      Returns:
      the characteristics
    • getDatacenterStorage

      DatacenterStorage getDatacenterStorage()
      Gets the storage of the Datacenter.
      Returns:
      the storage
    • setDatacenterStorage

      void setDatacenterStorage(DatacenterStorage datacenterStorage)
      Sets the storage of the Datacenter.
      Parameters:
      datacenterStorage - the new storage
    • getBandwidthPercentForMigration

      double getBandwidthPercentForMigration()
      Gets the percentage of the bandwidth allocated to a Host to migrate VMs. It's a value between [0 and 1] (where 1 is 100%). The default value is 0.5, meaning only 50% of the bandwidth will be allowed for migration, while the remaining will be used for VM services.
      Returns:
      See Also:
    • setBandwidthPercentForMigration

      void setBandwidthPercentForMigration(double bandwidthPercentForMigration)
      Sets the percentage of the bandwidth allocated to a Host to migrate VMs. It's a value between [0 and 1] (where 1 is 100%). The default value is 0.5, meaning only 50% of the bandwidth will be allowed for migration, while the remaining will be used for VM services.
      Parameters:
      bandwidthPercentForMigration - the bandwidth migration percentage to set
    • addOnHostAvailableListener

      Datacenter addOnHostAvailableListener(EventListener<HostEventInfo> listener)
      Adds a EventListener object that will be notified every time a new Host is available for the Datacenter during simulation runtime. If the addHost(Host) or addHostList(List) is called before the simulation starts, the listeners will not be notified.
      Parameters:
      listener - the event listener to add
      Returns:
    • addOnVmMigrationFinishListener

      Datacenter addOnVmMigrationFinishListener(EventListener<DatacenterVmMigrationEventInfo> listener)
      Adds a EventListener object that will be notified every time a VM migration is finished either successfully or not.
      Parameters:
      listener - the event listener to add
      Returns:
    • isMigrationsEnabled

      boolean isMigrationsEnabled()
      Checks if migrations are enabled.
      Returns:
      true, if migrations are enable; false otherwise
    • enableMigrations

      Datacenter enableMigrations()
      Enable VM migrations.
      Returns:
      See Also:
    • disableMigrations

      Datacenter disableMigrations()
      Disable VM migrations.
      Returns:
    • getHostSearchRetryDelay

      double getHostSearchRetryDelay()
      Gets the time interval before trying to find suitable Hosts to migrate VMs from an under or overload Host again.
      Returns:
      the Host search delay (in seconds)
    • setHostSearchRetryDelay

      Datacenter setHostSearchRetryDelay(double delay)
      Sets the time interval before trying to find suitable Hosts to migrate VMs from an under or overload Host again.
      Parameters:
      delay - the new delay to set (in seconds). Give a positive value to define an actual delay or a negative value to indicate a new Host search for VM migration must be tried as soon as possible
      Returns: