X Tutup
Skip to content

Tasks in a NetworkCloudlet cannot be executed in parallel #515

@manoelcampos

Description

@manoelcampos

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      X Tutup