Class NetworkCloudlet

All Implemented Interfaces:
Comparable<Cloudlet>, Cloudlet, ChangeableId, CustomerEntity, Delayable, Identifiable, 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 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(long length, int pesNumber)
      Creates a NetworkCloudlet with no priority and file size and output size equal to 1.
      Parameters:
      length - the length or size (in MI) of this cloudlet to be executed in a VM (check out CloudletAbstract.setLength(long))
      pesNumber - the number of PEs this Cloudlet requires
    • NetworkCloudlet

      public NetworkCloudlet(int id, long length, int pesNumber)
      Creates a NetworkCloudlet with no priority and file size and output size equal to 1.
      Parameters:
      id - the unique ID of this cloudlet
      length - the length or size (in MI) of this cloudlet to be executed in a VM (check out CloudletAbstract.setLength(long))
      pesNumber - the pes number
  • Method Details

    • getNumberOfTasks

      public double getNumberOfTasks()
    • getTasks

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

      public long getMemory()
      Gets the Cloudlet's RAM memory (in Megabytes). TODO Required, allocated, used memory? It doesn't appear to be used.
    • setMemory

      public NetworkCloudlet setMemory(long memory)
      Sets the Cloudlet's RAM memory.
      Parameters:
      memory - amount of RAM to set (in Megabytes) TODO Cloudlet has the CloudletAbstract.getUtilizationModelRam() that defines how RAM is used. This way, this attribute doesn't make sense since usage of RAM is dynamic. The attribute would be used to know what is the maximum memory the cloudlet can use, but that will be the maximum VM RAM capacity or a different value defined by a UtilizationModel.
    • 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 in order 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 finished and the next one was started, false otherwise
    • getCurrentTask

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

      public boolean isFinished()
      Description copied from interface: Cloudlet
      Checks whether this Cloudlet has finished executing or not.
      Specified by:
      isFinished in interface Cloudlet
      Overrides:
      isFinished in class CloudletAbstract
      Returns:
      true if this Cloudlet 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 in order to be 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.

      Specified by:
      getLength in interface Cloudlet
      Overrides:
      getLength in class CloudletAbstract
      Returns:
      the length sum of all CloudletExecutionTask's
      See Also:
    • addTask

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

      public NetworkVm getVm()
      Description copied from interface: Cloudlet
      Gets the Vm that is planned to execute the cloudlet.
      Specified by:
      getVm in interface Cloudlet
      Overrides:
      getVm in class CloudletAbstract
      Returns:
      the VM; or Vm.NULL if the Cloudlet was not assigned to a VM yet
    • setVm

      public Cloudlet setVm(Vm vm)
      Description copied from interface: Cloudlet
      Sets the id of Vm that is planned to execute the cloudlet.
      Specified by:
      setVm in interface Cloudlet
      Overrides:
      setVm in class CloudletAbstract
      Parameters:
      vm - the id of vm to run the cloudlet