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
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.cloudbus.cloudsim.core.SimEntity
SimEntity.State
-
Field Summary
Modifier and TypeFieldDescriptionstatic final double
The default percentage ([0..1]) of bandwidth allocated for VM migration, if a value is not set.static final org.slf4j.Logger
static final Datacenter
A property that implements the Null Object Design Pattern forDatacenter
objects.Fields inherited from interface org.cloudbus.cloudsim.datacenters.TimeZoned
MAX_TIME_ZONE_OFFSET, MIN_TIME_ZONE_OFFSET
-
Method Summary
Modifier and TypeMethodDescription<T extends Host>
DatacenteraddHost
(T host) Physically expands the Datacenter by adding a new Host (physical machine) to it.<T extends Host>
DatacenteraddHostList
(List<T> hostList) Physically expands the Datacenter by adding a List of new Hosts (physical machines) to it.addOnHostAvailableListener
(EventListener<HostEventInfo> listener) Adds aEventListener
object that will be notified every time a new Host is available for the Datacenter during simulation runtime.Adds aEventListener
object that will be notified every time a VM migration is finished either successfully or not.Disable VM migrations.Enable VM migrations.long
Gets the current number of Hosts that are powered on inside the Datacenter.Gets aStream
containing the active Hosts inside the Datacenter.double
Gets the percentage of the bandwidth allocated to a Host to migrate VMs.Gets the Datacenter characteristics.Gets the storage of the Datacenter.getHost
(int index) Gets a Host in a given position inside the Host List.getHostById
(long id) Gets a Host from its id.Gets an unmodifiable host list.double
Gets the time interval before trying to find suitable Hosts to migrate VMs from an under or overload Host again.double
Gets the scheduling interval to process each event received by the Datacenter (in seconds).Gets the policy to be used by the Datacenter to allocate VMs into hosts.boolean
Checks if migrations are enabled.<T extends Host>
DatacenterremoveHost
(T host) Removes a Host from its Datacenter.void
requestVmMigration
(Vm sourceVm) void
requestVmMigration
(Vm sourceVm, Host targetHost) void
setBandwidthPercentForMigration
(double bandwidthPercentForMigration) Sets the percentage of the bandwidth allocated to a Host to migrate VMs.void
setDatacenterStorage
(DatacenterStorage datacenterStorage) Sets the storage of the Datacenter.setHostSearchRetryDelay
(double delay) Sets the time interval before trying to find suitable Hosts to migrate VMs from an under or overload Host again.setSchedulingInterval
(double schedulingInterval) Sets the scheduling delay to process each event received by the Datacenter (in seconds).long
size()
Gets the total number of existing Hosts in this Datacenter, which indicates the Datacenter's size.Methods inherited from interface java.lang.Comparable
compareTo
Methods inherited from interface org.cloudbus.cloudsim.core.Identifiable
getId
Methods inherited from interface org.cloudbus.cloudsim.power.PowerAware
getPowerModel, setPowerModel
Methods inherited from interface org.cloudbus.cloudsim.core.SimEntity
getShutdownTime, getSimulation, getStartTime, getState, isAlive, isFinished, isStarted, processEvent, run, schedule, schedule, schedule, schedule, schedule, schedule, schedule, setName, setSimulation, setState, shutdown, start
Methods inherited from interface org.cloudbus.cloudsim.datacenters.TimeZoned
distance, getTimeZone, setTimeZone, validateTimeZone
-
Field Details
-
LOGGER
static final org.slf4j.Logger LOGGER -
NULL
A property that implements the Null Object Design Pattern forDatacenter
objects. -
DEF_BW_PERCENT_FOR_MIGRATION
static final double DEF_BW_PERCENT_FOR_MIGRATIONThe default percentage ([0..1]) of bandwidth allocated for VM migration, if a value is not set.
-
-
Method Details
-
requestVmMigration
Sends an event to request the migration of aVm
to a given targetHost
on this Datacenter. If you want VM migrations to be performed automatically, use aVmAllocationPolicyMigration
.- Parameters:
sourceVm
- the VM to be migratedtargetHost
- the target Host to migrate the VM to- See Also:
-
requestVmMigration
Sends an event to request the migration of aVm
to some suitableHost
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 aVmAllocationPolicyMigration
.- Parameters:
sourceVm
- the VM to be migrated- See Also:
-
getHostList
Gets an unmodifiable host list.- Type Parameters:
T
- The generic type- Returns:
- the host list
-
getActiveHostStream
Gets aStream
containing the active Hosts inside the Datacenter.- Returns:
- the active host Stream
-
getHost
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. -
getHostById
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
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 theVmAllocationPolicy
.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
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 theVmAllocationPolicy
.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
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
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
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
Adds aEventListener
object that will be notified every time a new Host is available for the Datacenter during simulation runtime. If theaddHost(Host)
oraddHostList(List)
is called before the simulation starts, the listeners will not be notified.- Parameters:
listener
- the event listener to add- Returns:
-
addOnVmMigrationFinishListener
Adds aEventListener
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
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:
-