Class NetworkCloudlet

All Implemented Interfaces:
Comparable<Cloudlet>, Cloudlet, ChangeableId, CustomerEntity, ExecDelayable, Identifiable, Lifetimed, Startable, SubmissionDelayable, UniquelyIdentifiable

public class NetworkCloudlet extends CloudletSimple
NetworkCloudlet to support simulation of complex applications. Each application is compounded of one or more CloudletTasks for performing different kinds of processing.

Please refer to the following publication for more details:

Since:
CloudSim Toolkit 1.0 TODO Check how to implement the NULL pattern for this class.
Author:
Saurabh Kumar Garg, Manoel Campos da Silva Filho
  • Constructor Details

    • NetworkCloudlet

      public NetworkCloudlet(int pesNumber)
      Creates a NetworkCloudlet with no priority, no file size and output size equal to 1. The length of the Cloudlet is determined by the sum of its tasks length.
      Parameters:
      pesNumber - the number of Pes this Cloudlet requires
    • NetworkCloudlet

      public NetworkCloudlet(int id, int pesNumber)
      Creates a NetworkCloudlet with no priority, no file size and output size equal to 1. The length of the Cloudlet is determined by the sum of its tasks length.
      Parameters:
      id - the unique ID of this cloudlet
      pesNumber - the number of Pes this Cloudlet requires
  • Method Details

    • getNumberOfTasks

      public double getNumberOfTasks()
    • getTasks

      public List<CloudletTask> getTasks()
      Returns:
      a read-only list of Cloudlet's tasks.
    • isTasksStarted

      public boolean isTasksStarted()
      Checks if some Cloudlet Task has started yet.
      Returns:
      true if some task has started, false otherwise
    • startNextTaskIfCurrentIsFinished

      public boolean startNextTaskIfCurrentIsFinished(double nextTaskStartTime)
      Change the current task to the next one to start executing it, if the current task is finished.
      Parameters:
      nextTaskStartTime - the time that the next task will start
      Returns:
      true if the current task is finished and the next one has started; false if current task is not finished or there aren't any more tasks to be executed.
    • getCurrentTask

      public Optional<CloudletTask> getCurrentTask()
      Returns:
      an Optional containing the current task or Optional.empty() if there is no current task yet.
    • isFinished

      public boolean isFinished()
      Specified by:
      isFinished in interface Startable
      Overrides:
      isFinished in class CloudletAbstract
      Returns:
      true if this entity has finished execution; false otherwise
    • getLength

      public long getLength()
      Gets the execution length of this Cloudlet (in Million Instructions (MI)) that will be executed in each defined Pe.

      In case the length is a negative value, it means the Cloudlet doesn't have a defined length, this way, it keeps running until a CloudSimTag.CLOUDLET_FINISH message is sent to the DatacenterBroker.

      According to this length and the power of the VM processor (in Million Instruction Per Second - MIPS) where the cloudlet will be run, the cloudlet will take a given time to finish processing. For instance, for a cloudlet of 10000 MI running on a processor of 2000 MIPS, the cloudlet will spend 5 seconds using the processor until completed (that may be uninterrupted or not, depending on the scheduling policy).

      The length of a NetworkCloudlet is the length sum of all its CloudletExecutionTask's.

      Returns:
      the length sum of all CloudletExecutionTask's
      See Also:
    • addTask

      public NetworkCloudlet addTask(@NonNull @NonNull CloudletTask task)
      Adds a task to the task list and links the task to this NetworkCloudlet.
      Parameters:
      task - Task to be added
      Returns:
      this NetworkCloudlet instance
    • getVm

      public NetworkVm getVm()
      Returns:
      the Vm that is planned to execute the cloudlet; or Vm.NULL if the Cloudlet was not assigned to a VM yet
    • setVm

      public NetworkCloudlet setVm(Vm vm)
      Description copied from interface: Cloudlet
      Sets the id of Vm that is planned to execute the cloudlet.
      Parameters:
      vm - id of vm to run the cloudlet
      Returns:
      this Cloudlet