Interface VmScheduler
- All Known Implementing Classes:
VmSchedulerAbstract
,VmSchedulerSpaceShared
,VmSchedulerTimeShared
,VmSchedulerTimeSharedOverSubscription
public interface VmScheduler
An interface that represents the policy used by a
Virtual Machine Monitor (VMM) to share processing power of a PM among VMs
running in a host. Each host has to use is own instance of a
VmScheduler that will so schedule the allocation of host's PEs for
VMs running on it.
It also implements the Null Object Design
Pattern in order to start avoiding NullPointerException
when using the NULL
object instead
of attributing null
to VmScheduler
variables.
- Since:
- CloudSim Plus 1.0
- Author:
- Rodrigo N. Calheiros, Anton Beloglazov, Manoel Campos da Silva Filho
-
Field Summary
Fields Modifier and Type Field Description static org.slf4j.Logger
LOGGER
static VmScheduler
NULL
An attribute that implements the Null Object Design Pattern forVmScheduler
objects. -
Method Summary
Modifier and Type Method Description boolean
allocatePesForVm(Vm vm)
Requests the allocation of PEs for a VM, according to the number of PEs and MIPS defined by VM attributes.boolean
allocatePesForVm(Vm vm, MipsShare requestedMips)
Requests the allocation of PEs for a VM.void
deallocatePesForAllVms()
Releases PEs allocated to all the VMs of the host the VmScheduler is associated to.void
deallocatePesFromVm(Vm vm)
Releases all PEs allocated to a VM.void
deallocatePesFromVm(Vm vm, int pesToRemove)
Releases a given number of PEs from a VM.MipsShare
getAllocatedMips(Vm vm)
Gets the MIPS share of each host's Pe that is allocated to a given VM.Host
getHost()
Gets the host that the VmScheduler get the list of PEs to allocate to VMs.double
getMaxCpuUsagePercentDuringOutMigration()
Gets the max percentage of CPU a VM migrating out of this Host can use.MipsShare
getRequestedMips(Vm vm)
Gets the List of MIPS requested by a VM.double
getTotalAllocatedMipsForVm(Vm vm)
Gets the actual total allocated MIPS for a VM along all its allocated PEs.double
getTotalAvailableMips()
Gets the total amount of MIPS that is currently free.double
getVmMigrationCpuOverhead()
Defines the percentage of Host's CPU usage increase when a VM is migrating in or out of the Host.boolean
isSuitableForVm(Vm vm)
Checks if the PM using this scheduler has enough MIPS capacity to host a given VM.boolean
isSuitableForVm(Vm vm, MipsShare requestedMips)
Checks if a list of MIPS requested by a VM is allowed to be allocated or not.VmScheduler
setHost(Host host)
Sets the host that the VmScheduler get the list of PEs to allocate to VMs.
-
Field Details
-
LOGGER
static final org.slf4j.Logger LOGGER -
NULL
An attribute that implements the Null Object Design Pattern forVmScheduler
objects.
-
-
Method Details
-
allocatePesForVm
Requests the allocation of PEs for a VM, according to the number of PEs and MIPS defined by VM attributes.- Parameters:
vm
- the vm to allocate PEs to- Returns:
- true if the PEs were allocated to the VM, false otherwise
-
deallocatePesForAllVms
void deallocatePesForAllVms()Releases PEs allocated to all the VMs of the host the VmScheduler is associated to. After that, all PEs will be available to be used on demand for requesting VMs. -
deallocatePesFromVm
Releases all PEs allocated to a VM. After that, the PEs may be used on demand by other VMs.- Parameters:
vm
- the vm to deallocate PEs from
-
deallocatePesFromVm
Releases a given number of PEs from a VM. After that, the PEs may be used on demand by other VMs.- Parameters:
vm
- the vm to deallocate PEs frompesToRemove
- number of PEs to deallocate
-
getAllocatedMips
Gets the MIPS share of each host's Pe that is allocated to a given VM.- Parameters:
vm
- the vm to get the MIPS share- Returns:
-
getTotalAvailableMips
double getTotalAvailableMips()Gets the total amount of MIPS that is currently free. If there are VMs migrating into the Host, their requested MIPS will already be allocated, reducing the total available MIPS.- Returns:
-
getRequestedMips
Gets the List of MIPS requested by a VM.- Parameters:
vm
- the VM to get the List of requested MIPS- Returns:
-
isSuitableForVm
Checks if the PM using this scheduler has enough MIPS capacity to host a given VM.- Parameters:
vm
- the vm to check if there is enough available resource on the PM to host it- Returns:
- true, if it is possible to allocate the the VM into the host; false otherwise
- See Also:
isSuitableForVm(Vm)
-
getTotalAllocatedMipsForVm
Gets the actual total allocated MIPS for a VM along all its allocated PEs. If the VM is migrating into the Host, then just a fraction of the requested MIPS is actually allocated, representing the overhead of the migration process.The MIPS requested by the VM are just actually allocated after the migration is completed.
- Parameters:
vm
- the VM to get the total allocated MIPS- Returns:
- See Also:
getVmMigrationCpuOverhead()
-
getMaxCpuUsagePercentDuringOutMigration
double getMaxCpuUsagePercentDuringOutMigration()Gets the max percentage of CPU a VM migrating out of this Host can use. Since there may be an overhead associated to the migration process (if theCPU overhead for VM migration
is greater than 0), during the migration, the amount of MIPS the VM can use is reduced due to this overhead.- Returns:
- the max percentage of CPU usage during migration (in scale from [0 to 1], where 1 is 100%)
-
getVmMigrationCpuOverhead
double getVmMigrationCpuOverhead()Defines the percentage of Host's CPU usage increase when a VM is migrating in or out of the Host. The value is in scale from 0 to 1 (where 1 is 100%).- Returns:
- the Host's CPU migration overhead percentage.
-
getHost
Host getHost()Gets the host that the VmScheduler get the list of PEs to allocate to VMs.- Returns:
-
setHost
Sets the host that the VmScheduler get the list of PEs to allocate to VMs. A host for the VmScheduler is set when the VmScheduler is set to a given host. Thus, the host is in charge to set itself to a VmScheduler.- Parameters:
host
- the host to be set- Returns:
- Throws:
IllegalArgumentException
- when the scheduler already is assigned to another Host, since each Host must have its own schedulerNullPointerException
- when the host parameter is null