You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UtilizationModel (UM) defines how a Cloudlet uses VM resources. Implementations such as UtilizationModelFull define that the Cloudlet will use 100% of a specific resource all the time.
VM PEs (CPU) can be shared among multiple Cloudlets, according to the CloudletScheduler used. For instance, a CloudletSchedulerTimeShared enables the same VM PE to be used at different times by multiples Cloudlets. Each Cloudlet uses the PE at a specific time and then it is preempted so that the next one can start using the PE. The PE capacity used by a Cloudlet is defined by its CPU UtilizationModel.
On the other hand, resources such as RAM and BW don't have such preemption mechanism, meaning that a specific portion of such resources cannot be used at the same time by multiple Cloudlets. In real environments, it's possible to use virtual memory for RAM (which is like CPU preemption), but such a feature isn't supported by simulation yet (see #170).
Consider the RAM resource. If there are 4 Cloudlets running in a VM and they use a UtilizationModelFull, then the total amount of used RAM will be 400%, that is more than the VM has available.
Expected behavior
When a Cloudlet requests an amount of resource which is not available, just the amount available should be allocated to it. This way, a UtilizationModelFull should be used for RAM, CPU or BW only if there is just one Cloudlet running at a time inside a given VM.
There are several ways to make just one Cloudlet to be executed in a VM at a time. For instance, if a CloudletSchedulerSpaceShared is used and the number of VM PEs is equal to the number of PEs required by each submitted Cloudlet, just one Cloudlet will run at a time.
Actual behavior
Each Cloudlet requests the amount of resources according to the rules defined by the UM. The CloudletSchedulerAbstract updates the processing of Cloudlets and sum up the total amount of a specific resource requested by all Cloudlets. If such amount is greater than the VM capacity, no resource is allocated at all. This way, if a call such as vm.getRam().getAllocatedResource() is made, the result will be zero.
Specifications like the version of the project, operating system or workload file used
This is an issue existing in CloudSim at least as far as version 3.0.3 and that was inherited by CloudSim Plus since version 1.0.
NOTICE
Current examples using a UtilizationModelFull for RAM and BW may show that such resources requested by some Cloudlets will not be allocated due to insufficient capacity. If such resources are important for your simulations, you must exchange the UtilizationModelFull by other implementations such as UtilizationModelDynamic or UtilizationModelStochastic.
For instance, if you have 4 Cloudlets to run inside the same VM, you can define the RAM UtilizationModel for each Cloudlet to use 25% of the total VM's RAM, as below:
UtilizationModel
(UM) defines how a Cloudlet uses VM resources. Implementations such asUtilizationModelFull
define that the Cloudlet will use 100% of a specific resource all the time.VM PEs (CPU) can be shared among multiple Cloudlets, according to the
CloudletScheduler
used. For instance, aCloudletSchedulerTimeShared
enables the same VM PE to be used at different times by multiples Cloudlets. Each Cloudlet uses the PE at a specific time and then it is preempted so that the next one can start using the PE. The PE capacity used by a Cloudlet is defined by its CPUUtilizationModel
.On the other hand, resources such as RAM and BW don't have such preemption mechanism, meaning that a specific portion of such resources cannot be used at the same time by multiple Cloudlets. In real environments, it's possible to use virtual memory for RAM (which is like CPU preemption), but such a feature isn't supported by simulation yet (see #170).
Consider the RAM resource. If there are 4 Cloudlets running in a VM and they use a
UtilizationModelFull
, then the total amount of used RAM will be 400%, that is more than the VM has available.Expected behavior
When a Cloudlet requests an amount of resource which is not available, just the amount available should be allocated to it. This way, a
UtilizationModelFull
should be used for RAM, CPU or BW only if there is just one Cloudlet running at a time inside a given VM.There are several ways to make just one Cloudlet to be executed in a VM at a time. For instance, if a
CloudletSchedulerSpaceShared
is used and the number of VM PEs is equal to the number of PEs required by each submitted Cloudlet, just one Cloudlet will run at a time.Actual behavior
Each Cloudlet requests the amount of resources according to the rules defined by the UM. The
CloudletSchedulerAbstract
updates the processing of Cloudlets and sum up the total amount of a specific resource requested by all Cloudlets. If such amount is greater than the VM capacity, no resource is allocated at all. This way, if a call such asvm.getRam().getAllocatedResource()
is made, the result will be zero.Specifications like the version of the project, operating system or workload file used
This is an issue existing in CloudSim at least as far as version 3.0.3 and that was inherited by CloudSim Plus since version 1.0.
NOTICE
Current examples using a
UtilizationModelFull
for RAM and BW may show that such resources requested by some Cloudlets will not be allocated due to insufficient capacity. If such resources are important for your simulations, you must exchange theUtilizationModelFull
by other implementations such asUtilizationModelDynamic
orUtilizationModelStochastic
.For instance, if you have 4 Cloudlets to run inside the same VM, you can define the RAM
UtilizationModel
for each Cloudlet to use 25% of the total VM's RAM, as below:Without such changes, the first Cloudlet will use 100% of the VM's RAM and other running Cloudlets will not get the requested resource.
The text was updated successfully, but these errors were encountered: