-
-
Notifications
You must be signed in to change notification settings - Fork 204
Description
Feature
Currently, CloudletTasks are executed only sequentially. This prevents the simulation of more realistic application execution. If a NetworkCloudlet has different tasks such as CloudletExecutionTask, CloudletReceiveTask and CloudletSendTask, there is no way to either send packets using a CPU core and execute some processing in another core (for instance). A task needs to be finished before the next one starts executing.
Proposal
Each task may represent a thread. This way, an execution task should only use one CPU core and may be executed in parallel (considering there are multiple cores) and/or sequentially. The execution of tasks must follow the CloudletScheduler defined for the VM, using a CloudletScheduler that is:
- space-shared, all tasks must be executed sequentially.
- time-shared, tasks must be executed in parallel. If the Cloudlet has N available CPU cores and there are more tasks than cores, some tasks must be executed in parallel an other ones will have to wait to be scheduled next time.
A major issue is that CloudletTaskScheduler is not following the CloudletScheduler policy.
Furthermore, there is no way to define relationships between tasks.
For instance, if a Cloudlet receives a packet (in a CloudletReceiveTask), there is no event fired so that another task can be started in response to that event. We could receive a packet and: (i) send it to another Cloudlet or (ii) start an execution task to process it.