Interface Host

All Superinterfaces:
AbstractMachine, ChangeableId, java.lang.Comparable<Host>, Identifiable, Machine, Resourceful
All Known Implementing Classes:
HostSimple, NetworkHost

public interface Host
extends Machine, java.lang.Comparable<Host>
An interface to be implemented by each class that provides Physical Machines (Hosts) 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 Host variables.
Since:
CloudSim Plus 1.0
Author:
Rodrigo N. Calheiros, Anton Beloglazov, Manoel Campos da Silva Filho
  • Field Details

  • Method Details

    • getDatacenter

      Datacenter getDatacenter()
      Gets the Datacenter where the host is placed.
      Returns:
      the data center of the host
    • setDatacenter

      void setDatacenter​(Datacenter datacenter)
      Sets the Datacenter where the host is placed.
      Parameters:
      datacenter - the new data center to move the host
    • isSuitableForVm

      boolean isSuitableForVm​(Vm vm)
      Checks if the host is suitable for vm (if it has enough resources to attend the VM) and it's not failed.
      Parameters:
      vm - the vm to check
      Returns:
      true if is suitable for vm, false otherwise
    • isActive

      boolean isActive()
      Checks if the Host is powered-on or not.
      Returns:
      true if the Host is powered-on, false otherwise.
    • hasEverStarted

      boolean hasEverStarted()
      Checks if the Host has ever started sometime, i.e., if it was active sometime in the simulation execution.
      Returns:
    • setActive

      Host setActive​(boolean activate)
      Sets the powered state of the Host, to indicate if it's powered on or off. When a Host is powered off, no VMs will be submitted to it.

      If it is set to powered off while VMs are running inside it, it is simulated a scheduled shutdown, so that, all running VMs will finish, but not more VMs will be submitted to this Host.

      Parameters:
      activate - define the Host activation status: true to power on, false to power off
      Returns:
      this Host instance
      Throws:
      java.lang.IllegalStateException - when trying to activate a failed host.
    • getVmsMigratingIn

      <T extends Vm> java.util.Set<T> getVmsMigratingIn()
      Gets the list of VMs migrating into this host.
      Type Parameters:
      T - the generic type
      Returns:
      the vms migrating in
    • addMigratingInVm

      boolean addMigratingInVm​(Vm vm)
      Try to add a VM migrating into the current host if there is enough resources for it. In this case, the resources are allocated and the VM added to the getVmsMigratingIn() List. Otherwise, the VM is not added.
      Parameters:
      vm - the vm
      Returns:
      true if the Vm was migrated in, false if the Host doesn't have enough resources to place the Vm
    • getVmsMigratingOut

      java.util.Set<Vm> getVmsMigratingOut()
      Gets a read-only list of VMs migrating out from the Host.
      Returns:
    • addVmMigratingOut

      boolean addVmMigratingOut​(Vm vm)
      Adds a Vm to the list of VMs migrating out from the Host.
      Parameters:
      vm - the vm to be added
      Returns:
      true if the VM wasn't into the list and was added, false otherwise
    • removeVmMigratingOut

      boolean removeVmMigratingOut​(Vm vm)
      Adds a Vm to the list of VMs migrating out from the Host.
      Parameters:
      vm - the vm to be added
      Returns:
    • reallocateMigratingInVms

      void reallocateMigratingInVms()
      Reallocate VMs migrating into the host. Gets the VM in the migrating in queue and allocate them on the host.
    • getTotalMipsCapacity

      double getTotalMipsCapacity()
      Gets total MIPS capacity of PEs which are not Pe.Status.FAILED.
      Specified by:
      getTotalMipsCapacity in interface AbstractMachine
      Returns:
      the total MIPS of working PEs
    • removeMigratingInVm

      void removeMigratingInVm​(Vm vm)
      Removes a migrating in vm.
      Parameters:
      vm - the vm
    • getTotalAllocatedMipsForVm

      double getTotalAllocatedMipsForVm​(Vm vm)
      Gets the total allocated MIPS for a VM along all its PEs.
      Parameters:
      vm - the vm
      Returns:
      the allocated mips for vm
    • getPeList

      java.util.List<Pe> getPeList()
      Gets the list of all Processing Elements (PEs) of the host, including failed PEs.
      Returns:
      the list of all Host PEs
      See Also:
      getWorkingPeList()
    • getWorkingPeList

      java.util.List<Pe> getWorkingPeList()
      Gets the list of working Processing Elements (PEs) of the host. It's the list of all PEs which are not FAILEd.
      Returns:
      the list working (non-failed) Host PEs
    • getBusyPeList

      java.util.List<Pe> getBusyPeList()
      Gets the list of working Processing Elements (PEs) of the host, which excludes failed PEs.
      Returns:
      the list working (non-failed) Host PEs
    • getFreePeList

      java.util.List<Pe> getFreePeList()
      Gets the list of Free Processing Elements (PEs) of the host, which excludes failed PEs.
      Returns:
      the list free (non-failed) Host PEs
    • getFreePesNumber

      int getFreePesNumber()
      Gets the number of PEs that are free to be used by any VM.
      Returns:
      the free pes number
    • getWorkingPesNumber

      int getWorkingPesNumber()
      Gets the number of PEs that are working. That is, the number of PEs that aren't FAIL.
      Returns:
      the number of working pes
    • getFailedPesNumber

      int getFailedPesNumber()
      Gets the number of PEs that have failed.
      Returns:
      the number of failed pes
    • getTotalAvailableMips

      double getTotalAvailableMips()
      Gets the current total amount of available MIPS at the host.
      Returns:
      the total available amount of MIPS
    • getAvailableStorage

      long getAvailableStorage()
      Gets the total free storage available at the host in Megabytes.
      Returns:
      the free storage
    • getBwProvisioner

      ResourceProvisioner getBwProvisioner()
      Gets the bandwidth (BW) provisioner with capacity in Megabits/s.
      Returns:
      the bw provisioner
    • setBwProvisioner

      Host setBwProvisioner​(ResourceProvisioner bwProvisioner)
      Sets the bandwidth (BW) provisioner with capacity in Megabits/s.
      Parameters:
      bwProvisioner - the new bw provisioner
    • getRamProvisioner

      ResourceProvisioner getRamProvisioner()
      Gets the ram provisioner with capacity in Megabytes.
      Returns:
      the ram provisioner
    • setRamProvisioner

      Host setRamProvisioner​(ResourceProvisioner ramProvisioner)
      Sets the ram provisioner with capacity in Megabytes.
      Parameters:
      ramProvisioner - the new ram provisioner
    • getVmList

      <T extends Vm> java.util.List<T> getVmList()
      Gets a read-only list of VMs currently assigned to the host.
      Type Parameters:
      T - The generic type
      Returns:
      the read-only current vm list
    • getVmCreatedList

      <T extends Vm> java.util.List<T> getVmCreatedList()
      Gets a read-only list of all VMs which have been created into the host during the entire simulation. This way, this method returns a historic list of created VMs, including those ones already destroyed.
      Type Parameters:
      T - The generic type
      Returns:
      the read-only vm created historic list
    • getVmScheduler

      VmScheduler getVmScheduler()
      Gets the policy for allocation of host PEs to VMs in order to schedule VM execution.
      Returns:
      the VmScheduler
    • setVmScheduler

      Host setVmScheduler​(VmScheduler vmScheduler)
      Sets the policy for allocation of host PEs to VMs in order to schedule VM execution. The host also sets itself to the given scheduler. It also sets the Host itself to the given scheduler.
      Parameters:
      vmScheduler - the vm scheduler to set
      Returns:
    • getStartTime

      double getStartTime()
      Gets the last time the Host was powered-on (in seconds).
      Returns:
      the last Host startup time or -1 if the Host has never been powered on
      See Also:
      setActive(boolean)
    • setStartTime

      void setStartTime​(double startTime)
      Sets the Host start up time (the time it's being powered on).
      Parameters:
      startTime - the time to set (in seconds)
      See Also:
      getStartTime()
    • getShutdownTime

      double getShutdownTime()
      Gets the last time the Host was shut down (in seconds).
      Returns:
      the last shut downtime or -1 if the Host is active
    • setShutdownTime

      void setShutdownTime​(double shutdownTime)
      Sets the the Host shut down time.
      Parameters:
      shutdownTime - the time to set (in seconds)
      See Also:
      getShutdownTime()
    • getUpTime

      double getUpTime()
      Gets the elapsed time since the last time the Host was powered on
      Returns:
      the elapsed time (in seconds)
      See Also:
      getUpTimeHours(), getTotalUpTime(), getTotalUpTimeHours()
    • getUpTimeHours

      double getUpTimeHours()
      Gets the elapsed time since the last time the Host was powered on
      Returns:
      the elapsed time (in hours)
      See Also:
      getUpTime(), getTotalUpTime(), getTotalUpTimeHours()
    • getTotalUpTime

      double getTotalUpTime()
      Gets the total time the Host stayed active (powered on). Since the Host can be powered on and off according to demand, this method returns the sum of all interval that the Host was active (in seconds).
      Returns:
      the total up time (in seconds)
      See Also:
      setActive(boolean), setIdleShutdownDeadline(double), getTotalUpTimeHours(), getUpTime(), getUpTimeHours()
    • getTotalUpTimeHours

      double getTotalUpTimeHours()
      Gets the total time the Host stayed active (powered on). Since the Host can be powered on and off according to demand, this method returns the sum of all interval that the Host was active (in hours).
      Returns:
      the total up time (in hours)
      See Also:
      setActive(boolean), setIdleShutdownDeadline(double), getTotalUpTime(), getUpTime(), getUpTimeHours()
    • getIdleShutdownDeadline

      double getIdleShutdownDeadline()
      Gets the deadline to shutdown the Host when it become idle. This is the time interval after the Host becoming idle that it will be shutdown.
      Returns:
      the idle shutdown deadline (in seconds)
      See Also:
      DEF_IDLE_SHUTDOWN_DEADLINE
    • setIdleShutdownDeadline

      Host setIdleShutdownDeadline​(double deadline)
      Sets the deadline to shutdown the Host when it become idle. This is the time interval after the Host becoming idle that it will be shutdown.
      Parameters:
      deadline - the deadline to shutdown the Host after it becoming idle (in seconds). A negative value disables idle host shutdown.
      Returns:
      See Also:
      DEF_IDLE_SHUTDOWN_DEADLINE, getIdleShutdownDeadline()
    • isFailed

      boolean isFailed()
      Checks if the host is working properly or has failed.
      Returns:
      true, if the host PEs have failed; false otherwise
    • setFailed

      boolean setFailed​(boolean failed)
      Sets the Host state to "failed" or "working".
      Parameters:
      failed - true to set the Host to "failed", false to set to "working"
      Returns:
      true if the Host status was changed, false otherwise
    • updateProcessing

      double updateProcessing​(double currentTime)
      Updates the processing of VMs running on this Host, that makes the processing of cloudlets inside such VMs to be updated.
      Parameters:
      currentTime - the current time
      Returns:
      the predicted completion time of the earliest finishing cloudlet (which is a relative delay from the current simulation time), or Double.MAX_VALUE if there is no next Cloudlet to execute
    • createVm

      boolean createVm​(Vm vm)
      Try to allocate resources to a new VM in the Host.
      Parameters:
      vm - Vm being started
      Returns:
      $true if the VM could be started in the host; $false otherwise
    • destroyVm

      void destroyVm​(Vm vm)
      Destroys a VM running in the host and removes it from the getVmList(). If the VM was not created yet, this method has no effect.
      Parameters:
      vm - the VM to be destroyed
    • createTemporaryVm

      boolean createTemporaryVm​(Vm vm)
      Try to allocate resources to a new temporary VM in the Host. The method is used only to book resources for a given VM. For instance, if is being chosen Hosts to migrate a set of VMs, when a Host is selected for a given VM, using this method, the resources are reserved and then, when the next VM is selected for the same Host, the reserved resources already were reduced from the available amount. This way, it it was possible to place just one Vm into that Host, with the booking, no other VM will be selected to that Host.
      Parameters:
      vm - Vm being started
      Returns:
      $true if the VM could be started in the host; $false otherwise
      To do something:
      https://github.com/manoelcampos/cloudsim-plus/issues/94
    • destroyTemporaryVm

      void destroyTemporaryVm​(Vm vm)
      Destroys a temporary VM created into the Host to book resources.
      Parameters:
      vm - the VM
      See Also:
      createTemporaryVm(Vm)
      To do something:
      https://github.com/manoelcampos/cloudsim-plus/issues/94
    • destroyAllVms

      void destroyAllVms()
      Destroys all VMs running in the host and remove them from the getVmList().
    • addOnUpdateProcessingListener

      Host addOnUpdateProcessingListener​(EventListener<HostUpdatesVmsProcessingEventInfo> listener)
      Adds a listener object that will be notified every time when the host updates the processing of all its VMs.
      Parameters:
      listener - the OnUpdateProcessingListener to add
      Returns:
      See Also:
      updateProcessing(double)
    • removeOnUpdateProcessingListener

      boolean removeOnUpdateProcessingListener​(EventListener<HostUpdatesVmsProcessingEventInfo> listener)
      Removes a listener object from the OnUpdateProcessingListener List.
      Parameters:
      listener - the listener to remove
      Returns:
      true if the listener was found and removed, false otherwise
      See Also:
      updateProcessing(double)
    • setSimulation

      Host setSimulation​(Simulation simulation)
      Sets the CloudSim instance that represents the simulation the Entity is related to. Such attribute has to be set by the Datacenter that the host belongs to.
      Parameters:
      simulation - The CloudSim instance that represents the simulation the Entity is related to
      Returns:
    • getProvisioner

      ResourceProvisioner getProvisioner​(java.lang.Class<? extends ResourceManageable> resourceClass)
      Gets the ResourceProvisioners that manages a Host resource such as Ram, Bandwidth and Pe.
      Parameters:
      resourceClass - the class of the resource to get its provisioner
      Returns:
      the ResourceProvisioner for the given resource class
    • getCpuPercentUtilization

      double getCpuPercentUtilization()
      Gets current utilization of CPU in percentage (between [0 and 1]), considering the usage of all its PEs..
      Returns:
    • getCpuMipsUtilization

      double getCpuMipsUtilization()
      Gets the current total utilization of CPU in MIPS, considering the usage of all its PEs.
      Returns:
    • getBwUtilization

      long getBwUtilization()
      Gets the current utilization of bw (in Megabits/s).
      Returns:
    • getRamUtilization

      long getRamUtilization()
      Gets the current utilization of memory (in Megabytes).
      Returns:
    • getUtilizationHistory

      java.util.SortedMap<java.lang.Double,​java.util.DoubleSummaryStatistics> getUtilizationHistory()

      Gets a map containing the host CPU utilization percentage history (between [0 and 1]), based on its VM utilization history. Each key is a time when the data collection was performed and each value is a DoubleSummaryStatistics from where some operations over the CPU utilization entries for every VM inside the Host can be performed. Such operations include counting, summing, averaging, etc. For instance, if you call the DoubleSummaryStatistics.getSum(), you'll get the total Host's CPU utilization for the time specified by the map key.

      There is an entry for each time multiple of the Datacenter.getSchedulingInterval(). This way, it's required to set a Datacenter scheduling interval with the desired value.

      In order to enable the Host to get utilization history, its VMs' utilization history must be enabled by calling enable() from the Vm.getUtilizationHistory().

      Returns:
      a Map where keys are the data collection time and each value is a DoubleSummaryStatistics objects that provides lots of useful methods to get max, min, average, count and sum of utilization values.
      See Also:
      getUtilizationHistorySum()
    • getUtilizationHistorySum

      java.util.SortedMap<java.lang.Double,​java.lang.Double> getUtilizationHistorySum()

      Gets a map containing the host CPU utilization percentage history (between [0 and 1]), based on its VM utilization history. Each key is a time when the data collection was performed and each value is the sum of all CPU utilization of the VMs running inside this Host for that time. This way, the value represents the total Host's CPU utilization for each time that data was collected.

      There is an entry for each time multiple of the Datacenter.getSchedulingInterval(). This way, it's required to set a Datacenter scheduling interval with the desired value.

      In order to enable the Host to get utilization history, its VMs' utilization history must be enabled by calling enable() from the Vm.getUtilizationHistory().

      Returns:
      a Map where keys are the data collection time and each value is a DoubleSummaryStatistics objects that provides lots of useful methods to get max, min, average, count and sum of utilization values.
      See Also:
      getUtilizationHistory()
    • getPowerModel

      PowerModel getPowerModel()
      Gets the PowerModel used by the host to define how it consumes power. A Host just provides power usage data if a PowerModel is set.
      Returns:
      the Host's PowerModel
    • setPowerModel

      Host setPowerModel​(PowerModel powerModel)
      Sets the PowerModel used by the host to define how it consumes power. A Host just provides power usage data if a PowerModel is set.
      Parameters:
      powerModel - the PowerModel to set
      Returns:
    • getPreviousUtilizationOfCpu

      double getPreviousUtilizationOfCpu()
    • enableStateHistory

      void enableStateHistory()
      Enables storing Host state history.
      See Also:
      getStateHistory()
    • disableStateHistory

      void disableStateHistory()
      Disable storing Host state history.
      See Also:
      getStateHistory()
    • isStateHistoryEnabled

      boolean isStateHistoryEnabled()
      Checks if Host state history is being collected and stored.
      Returns:
    • getStateHistory

      java.util.List<HostStateHistoryEntry> getStateHistory()
      Gets a read-only host state history. This List is just populated if isStateHistoryEnabled()
      Returns:
      the state history
      See Also:
      enableStateHistory()
    • getFinishedVms

      java.util.List<Vm> getFinishedVms()
      Gets the List of VMs that have finished executing.
      Returns:
    • getMigratableVms

      java.util.List<Vm> getMigratableVms()
      Gets the list of migratable VMs from a given host.
      Returns:
      the list of migratable VMs