dante47 / cloudsim

Automatically exported from code.google.com/p/cloudsim
0 stars 0 forks source link

Wrong sharing of MIs among VMs by VmSchedulerTimeShared #11

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Create a simple example with 1 host, 1 pe, 3 vms (each with 1 core, same 
mips as PE)
2. Use VmSchedulerTimeShared to host, CloudletSchedulerTimeShared for VMs
3. Create 3 cloudlets with same length; assign each one to a different VM

What is the expected output? What do you see instead?

MIs are not equally split among the 3 VMs; 3rd VM gets more mips and its 
Cloudlet completes first.

The expected behaviour is having the MIs from the single core equally divided 
among VMs and their cloudlets should finish at the same time.

Please use labels and text to provide additional information.

It seems that this problem was introduced together with PeAllocationPolicy 
(older code works properly).

I could isolate the problem to the VmSchedulerTimeShared and 
VMSchedulerTimeSharedOverSubscription classes. The faulty method seems to be 
allocatePesForVm(String, List<Double>), where the wrong value is being set in 
the mipsMap. Another candidate for faulty method is updatePeProcessing(), but 
it is less likely.

Original issue reported on code.google.com by rodrigo.calheiros on 8 Sep 2011 at 6:00

GoogleCodeExporter commented 8 years ago
Problem has been fixed. VmSchedulerTimeshared and 
VmSchedulerTimeSharedOverSubscription were refactored to isolate the method 
that calculate MIPS share in case of oversubscription.

Original comment by rodrigo.calheiros on 21 Dec 2011 at 1:23