Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The time a Cloudlet waits after being preempted is not computed #151

Open
manoelcampos opened this issue Aug 16, 2018 · 3 comments
Open
Labels
enhancement good-first-issue A good issue to start contributing to the project

Comments

@manoelcampos
Copy link
Collaborator

manoelcampos commented Aug 16, 2018

The regular Cloudlet workflow is as follow:

  • a Cloudlet is submitted to a VM and may wait in a queue until the VM has enough PEs to execute the Cloudlet (according to the CloudletScheduler policy).
  • After a Cloudlet is scheduled using a CloudletSchedulerTimeShared, it will share the CPU with other concurrent Cloudlets. This way, multiple Cloudlets are executed preemptively (i.e., interchangeably).

However, the time a preempted Cloudlet is supposed to wait until be scheduled again is not computed.
The oversimplified CloudletSchedulerTimeShared doesn't actually perform preemption, but just reduces the amount of MIPS a Cloudlet can use when there are more Cloudlets than CPU cores.
This way, it enables all Cloudlets to run at the same time (which is not possible with current processor technologies). Check issues #27, #33 and #58 for more details.

When a CloudletSchedulerSpaceShared is used, when there are fewer CPU cores than Cloudlets, the next Cloudlet just starts executing when a previous one completely finishes its execution. This wait time is not computed either.

The Cloudlet.getWaitingTime() method returns the time the Cloudlet waited before starting executing, not the intermediate wait time after the Cloudlet started executing but was descheduled (preempted) for some reason. Before the implementation of Google Cluster Data readers (#149), a Cloudlet was never descheduled, but now this is a reality (as it is in real CPU scheduling).

It has to be assessed if the Cloudlet.getWaitingTime() will be used just to return the time the Cloudlet waited to be scheduled for the first time (as it is now) and a new method such as getTotalWaitingTime() will be introduced that adds up the intermediate waiting times. Possibly the first method should be renamed to getStartWaitingTime().

@manoelcampos manoelcampos added this to the CloudSim Plus 4.0 milestone Aug 16, 2018
@manoelcampos manoelcampos changed the title The time a Cloudlet waits after be preempted is not computed The time a Cloudlet waits after being preempted is not computed Aug 16, 2018
@manoelcampos manoelcampos removed this from the CloudSim Plus 4.0 milestone Aug 31, 2018
@manoelcampos manoelcampos added the good-first-issue A good issue to start contributing to the project label Jun 25, 2019
@krupaJari
Copy link

Hey @manoelcampos ,
I looked into your project and would like to start working on this issue.

@manoelcampos
Copy link
Collaborator Author

Hey @krupaJari
Sorry for the late reply. I've been very busy these days.
That is great. If you want to start working on this, just let me know and send a PR.
You don't need to wait for it to be done to send the PR. This way, I can provide some guidance.

@manoelcampos
Copy link
Collaborator Author

Do you have anything in mind already on how to design a solution? It would be great if you provide your thoughts abouth the discussion on the issue above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement good-first-issue A good issue to start contributing to the project
Projects
None yet
Development

No branches or pull requests

2 participants