Interface Cloudlet

    • Field Detail

      • NOT_ASSIGNED

        static final int NOT_ASSIGNED
        Value to indicate that the cloudlet was not assigned to a Datacenter yet.
        See Also:
        Constant Field Values
      • NULL

        static final Cloudlet NULL
        An attribute that implements the Null Object Design Pattern for Cloudlet objects.
    • Method Detail

      • addRequiredFile

        boolean addRequiredFile​(java.lang.String fileName)
        Adds a file to the list or required files.
        Parameters:
        fileName - the name of the required file
        Returns:
        true if the file was added (it didn't exist in the list of required files), false otherwise (it did already exist)
      • addRequiredFiles

        boolean addRequiredFiles​(java.util.List<java.lang.String> fileNames)
        Adds a list of files to the required files list. Just the files that don't exist yet in the current required list will be added.
        Parameters:
        fileNames - the list of files to be added
        Returns:
        true if at least one file was added, false if no file was added (in the case that all given files already exist in the current required list)
      • deleteRequiredFile

        boolean deleteRequiredFile​(java.lang.String filename)
        Deletes the given filename from the list.
        Parameters:
        filename - the given filename to be deleted
        Returns:
        true if the file was found and removed, false if not found
      • requiresFiles

        boolean requiresFiles()
        Checks whether this cloudlet requires any files or not.
        Returns:
        true if required, false otherwise
      • getRequiredFiles

        java.util.List<java.lang.String> getRequiredFiles()
        Gets the list of required files to be used by the cloudlet (if any). The time to transfer these files by the network is considered when placing the cloudlet inside a given VM
        Returns:
        the required files
      • getAccumulatedBwCost

        double getAccumulatedBwCost()
        The total bandwidth (bw) cost for transferring the cloudlet by the network, according to the getFileSize().
        Returns:
        the accumulated bw cost
      • getActualCpuTime

        double getActualCpuTime()
        Returns the total execution time of the Cloudlet in seconds.
        Returns:
        time in which the Cloudlet was running or NOT_ASSIGNED if it hasn't finished yet
      • getFileSize

        long getFileSize()
        Gets the input file size of this Cloudlet before execution (in bytes). This size has to be considered the program + input data sizes.
        Returns:
        the input file size of this Cloudlet (in bytes)
      • getOutputSize

        long getOutputSize()
        Gets the output file size of this Cloudlet after execution (in bytes). It is the data produced as result of cloudlet execution that needs to be transferred thought the network to simulate sending response data to the user.
        Returns:
        the Cloudlet output file size (in bytes)
      • getStatus

        Cloudlet.Status getStatus()
        Gets the execution status of this Cloudlet.
        Returns:
        the Cloudlet status
      • assignToDatacenter

        void assignToDatacenter​(Datacenter datacenter)
        Sets the parameters of the Datacenter where the Cloudlet is going to be executed. From the second time this method is called, every call makes the cloudlet to be migrated to the indicated Datacenter.

        NOTE: This method should be called only by a Datacenter entity.

        Parameters:
        datacenter - the Datacenter where the cloudlet will be executed
      • registerArrivalInDatacenter

        double registerArrivalInDatacenter()
        Register the arrival time of this Cloudlet into a Datacenter to the current simulation time and returns this time.
        Returns:
        the arrived time set or NOT_ASSIGNED if the cloudlet is not assigned to a Datacenter
      • getCostPerSec

        double getCostPerSec()
        Gets the cost/sec of running the Cloudlet in the latest Datacenter.

        Realize costs must be defined for Datacenters by accessing the DatacenterCharacteristics object from each Datacenter instance and setting the CPU cost.

        Returns:
        the cost associated with running this Cloudlet or 0.0 if was not assigned to any Datacenter yet
        See Also:
        DatacenterCharacteristics.setCostPerSecond(double)
      • getCostPerSec

        double getCostPerSec​(Datacenter datacenter)
        Gets the cost running this Cloudlet in a given Datacenter.

        Realize costs must be defined for Datacenters by accessing the DatacenterCharacteristics object from each Datacenter instance and setting the CPU cost.

        Parameters:
        datacenter - the Datacenter entity
        Returns:
        the cost associated with running this Cloudlet in the given Datacenter or 0 if the Cloudlet was not executed there not found
        See Also:
        DatacenterCharacteristics.setCostPerSecond(double)
      • getExecStartTime

        double getExecStartTime()
        Gets the latest execution start time of this Cloudlet. With new functionalities, such as CANCEL, PAUSED and RESUMED, this attribute only stores the latest execution time. Previous execution time are ignored. This time represents the simulation second when the cloudlet started.
        Returns:
        the latest execution start time
      • getFinishTime

        double getFinishTime()
        Gets the time when this Cloudlet has completed executing in the latest Datacenter. This time represents the simulation second when the cloudlet finished.
        Returns:
        the finish or completion time of this Cloudlet; or NOT_ASSIGNED if not finished yet.
      • getLastDatacenterArrivalTime

        double getLastDatacenterArrivalTime()
        Gets the arrival time of this Cloudlet from the latest Datacenter where it has executed.
        Returns:
        the arrival time or NOT_ASSIGNED if the cloudlet has never been assigned to a Datacenter
      • getArrivalTime

        double getArrivalTime​(Datacenter datacenter)
        Gets the arrival time of this Cloudlet in the given Datacenter.
        Parameters:
        datacenter - the Datacenter entity
        Returns:
        the arrival time or NOT_ASSIGNED if the cloudlet has never been assigned to a Datacenter
      • getJobId

        long getJobId()
        Gets the id of the job that this Cloudlet belongs to, if any. This field is just used for classification. If there is an supposed job that multiple Cloudlets belong to, one can set the job id for all Cloudlets of that job in order to classify them. Besides classification, this field doesn't have any effect.
        Returns:
        the job id or NOT_ASSIGNED if the Cloudlet doesn't belong to a job
      • setJobId

        void setJobId​(long jobId)
        Sets the id of the job that this Cloudlet belongs to, if any. This field is just used for classification. If there is an supposed job that multiple Cloudlets belong to, one can set the job id for all Cloudlets of that job in order to classify them. Besides classification, this field doesn't have any effect.
        Parameters:
        jobId - the job id to set
      • getPriority

        int getPriority()
        Gets the priority of this Cloudlet for scheduling inside a Vm. Each CloudletScheduler implementation can define if it will use this attribute to impose execution priorities or not. How the priority is interpreted and what is the range of values it accepts depends on the CloudletScheduler that is being used by the Vm running the Cloudlet.
        Returns:
        priority of this cloudlet
      • setPriority

        void setPriority​(int priority)
        Sets the priority of this Cloudlet for scheduling inside a Vm. Each CloudletScheduler implementation can define if it will use this attribute to impose execution priorities or not. How the priority is interpreted and what is the range of values it accepts depends on the CloudletScheduler that is being used by the Vm running the Cloudlet.
        Parameters:
        priority - priority of this Cloudlet
      • getNetServiceLevel

        int getNetServiceLevel()
        Gets the Type of Service (ToS) of IPv4 for sending Cloudlet over the network. It is the ToS this cloudlet receives in the network (applicable to selected CloudletTaskScheduler class only).
        Returns:
        the network service level
      • getNumberOfPes

        long getNumberOfPes()
        Gets the number of Processing Elements (PEs) from the VM, that is required to execute this cloudlet.
        Returns:
        number of PEs
        See Also:
        getTotalLength()
      • getUtilizationModelBw

        UtilizationModel getUtilizationModelBw()
        Gets the utilization model that defines how the cloudlet will use the VM's bandwidth (bw).
        Returns:
        the utilization model of bw
      • getUtilizationModelCpu

        UtilizationModel getUtilizationModelCpu()
        Gets the utilization model that defines how the cloudlet will use the VM's CPU.
        Returns:
        the utilization model of cpu
      • getUtilizationModelRam

        UtilizationModel getUtilizationModelRam()
        Gets the utilization model that defines how the cloudlet will use the VM's RAM.
        Returns:
        the utilization model of ram
      • getUtilizationOfCpu

        double getUtilizationOfCpu​(double time)
        Gets the utilization of CPU at a given time, that is defined in percentage (in scale from [0 to 1]) or absolute values, depending of the UtilizationModel.getUnit() defined for the getUtilizationModelCpu().
        Parameters:
        time - the time to get the utilization
        Returns:
        the utilization value
        See Also:
        getUtilizationModelCpu()
      • getUtilizationOfRam

        double getUtilizationOfRam​(double time)
        Gets the utilization of RAM at a given time, that is defined in percentage (in scale from [0 to 1]) or absolute values, depending of the UtilizationModel.getUnit() defined for the getUtilizationModelRam() ()}.
        Parameters:
        time - the time to get the utilization
        Returns:
        the utilization value
        See Also:
        ()
      • getUtilizationOfBw

        double getUtilizationOfBw​(double time)
        Gets the utilization of Bandwidth at a given time, that is defined in percentage (in scale from [0 to 1]) or absolute values, depending of the UtilizationModel.getUnit() defined for the getUtilizationModelBw() ()}.
        Parameters:
        time - the time to get the utilization
        Returns:
        the utilization value
        See Also:
        ()
      • getVm

        Vm getVm()
        Gets the id of Vm that is planned to execute the cloudlet.
        Returns:
        the VM, or NOT_ASSIGNED if the Cloudlet was not assigned to a VM yet
      • isBindToVm

        boolean isBindToVm()
        Indicates if the Cloudlet is bounded to a specific Vm, meaning that the DatacenterBroker doesn't have to select a VM for it. In this case, the Cloudlet was already bounded to a specific VM and must run on it.
        Returns:
        true if the Cloudlet is bounded to a specific VM, false otherwise
      • getWaitingTime

        double getWaitingTime()
        Gets the time the cloudlet had to wait before start executing on a resource.
        Returns:
        the waiting time when the cloudlet waited to execute; or 0 if there wasn't any waiting time or the cloudlet hasn't started to execute.
      • isFinished

        boolean isFinished()
        Checks whether this Cloudlet has finished executing or not.
        Returns:
        true if this Cloudlet has finished execution, false otherwise
      • setFileSize

        Cloudlet setFileSize​(long fileSize)
        Sets the input file size of this Cloudlet before execution (in bytes). This size has to be considered the program + input data sizes.
        Parameters:
        fileSize - the size to set (in bytes)
        Returns:
        Throws:
        java.lang.IllegalArgumentException - when the given size is lower or equal to zero
        See Also:
        setSizes(long)
      • setOutputSize

        Cloudlet setOutputSize​(long outputSize)
        Sets the output file size of this Cloudlet after execution (in bytes). It is the data produced as result of cloudlet execution that needs to be transferred thought the network to simulate sending response data to the user.
        Parameters:
        outputSize - the output size to set (in bytes)
        Returns:
        Throws:
        java.lang.IllegalArgumentException - when the given size is lower or equal to zero
        See Also:
        setSizes(long)
      • setSizes

        Cloudlet setSizes​(long size)
        Sets the input and output file sizes of this Cloudlet to the same value (in bytes).
        Parameters:
        size - the value to set (in bytes) for input and output size
        Returns:
        Throws:
        java.lang.IllegalArgumentException - when the given size is lower or equal to zero
        See Also:
        setFileSize(long), setOutputSize(long)
      • setStatus

        boolean setStatus​(Cloudlet.Status newStatus)
        Sets the status of this Cloudlet.

        WARNING: This method is just used internally by classes such as CloudletScheduler to update Cloudlet status. Calling it directly might not get the expected result. You have to use the CloudletScheduler that controls the execution of the Cloudlet to change the Cloudlets status. The method is public due to a design issue.

        Parameters:
        newStatus - the status of this Cloudlet
        Returns:
        true if the cloudlet status was changed, i.e, if the newStatus is different from the current status; false otherwise
      • setNetServiceLevel

        boolean setNetServiceLevel​(int netServiceLevel)
        Sets the Type of Service (ToS) for sending this cloudlet over a network.
        Parameters:
        netServiceLevel - the new type of service (ToS) of this cloudlet
        Returns:
        true if the netServiceLevel is valid, false otherwise.
      • setNumberOfPes

        Cloudlet setNumberOfPes​(long numberOfPes)
        Sets the number of PEs required to run this Cloudlet.
        NOTE: The Cloudlet length is computed only for 1 PE for simplicity.
        For example, consider a Cloudlet that has a length of 500 MI and requires 2 PEs. This means each PE will execute 500 MI of this Cloudlet.
        Parameters:
        numberOfPes - number of PEs
        Returns:
        Throws:
        java.lang.IllegalArgumentException - when the number of PEs is lower or equal to zero
      • setVm

        Cloudlet setVm​(Vm vm)
        Sets the id of Vm that is planned to execute the cloudlet.
        Parameters:
        vm - the id of vm to run the cloudlet
      • getLength

        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 CloudSimTags.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).

        Returns:
        the length of this Cloudlet
        See Also:
        getTotalLength(), getNumberOfPes()
      • setLength

        Cloudlet setLength​(long length)
        Sets 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 CloudSimTags.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).

        Parameters:
        length - the length (in MI) of this Cloudlet to be executed in a Vm
        Returns:
        Throws:
        java.lang.IllegalArgumentException - when the given length is lower or equal to zero
        See Also:
        getLength(), getTotalLength()
      • getTotalLength

        long getTotalLength()
        Gets the total length (across all PEs) of this Cloudlet (in MI). It considers the getLength() of the cloudlet will be executed in each Pe defined by getNumberOfPes().

        For example, setting the cloudletLength as 10000 MI and getNumberOfPes() to 4, each Pe will execute 10000 MI. Thus, the entire Cloudlet has a total length of 40000 MI.

        Returns:
        the total length of this Cloudlet (in MI)
        See Also:
        getNumberOfPes(), getLength()
      • getFinishedLengthSoFar

        long getFinishedLengthSoFar()
        Gets the length of this Cloudlet that has been executed so far from the latest Datacenter (in MI). This method is useful when trying to move this Cloudlet into different Datacenter or to cancel it.
        Returns:
        the length of a partially executed Cloudlet, or the full Cloudlet length if it is completed
      • getFinishedLengthSoFar

        long getFinishedLengthSoFar​(Datacenter datacenter)
        Gets the length of this Cloudlet that has been executed so far (in MI), according to the getLength(). This method is useful when trying to move this Cloudlet into different Datacenters or to cancel it.
        Parameters:
        datacenter - the Datacenter entity
        Returns:
        the length of a partially executed Cloudlet; the full Cloudlet length if it is completed; or 0 if the Cloudlet has never been executed in the given Datacenter
      • addFinishedLengthSoFar

        boolean addFinishedLengthSoFar​(long partialFinishedMI)
        Adds the partial length of this Cloudlet that has executed so far (in MI).
        Parameters:
        partialFinishedMI - the partial executed length of this Cloudlet (in MI) from the last time span (the last time the Cloudlet execution was updated)
        Returns:
        true if the length is valid and the cloudlet already has assigned to a Datacenter, false otherwise
        See Also:
        CloudletExecution
      • setWallClockTime

        boolean setWallClockTime​(double wallTime,
                                 double actualCpuTime)
        Sets the wall clock time the cloudlet spent executing on the current Datacenter. The wall clock time is the total time the Cloudlet resides in a Datacenter (from arrival time until departure time, that may include waiting time). This value is set by the Datacenter before departure or sending back to the original Cloudlet's owner.
        Parameters:
        wallTime - the time of this Cloudlet resides in a Datacenter (from arrival time until departure time).
        actualCpuTime - the total execution time of this Cloudlet in a Datacenter.
        Returns:
        true if the submission time is valid and the cloudlet has already being assigned to a Datacenter for execution
      • setExecStartTime

        void setExecStartTime​(double clockTime)
        Sets the latest execution start time of this Cloudlet.
        NOTE: With new functionalities, such as being able to cancel, pause or resume this Cloudlet, the execution start time only holds the latest one. Meaning all previous execution start times are ignored.
        Parameters:
        clockTime - the latest execution start time
      • addOnStartListener

        Cloudlet addOnStartListener​(EventListener<CloudletVmEventInfo> listener)
        Adds a Listener object that will be notified when the Cloudlet starts executing in some Vm.
        Parameters:
        listener - the listener to add
      • removeOnStartListener

        boolean removeOnStartListener​(EventListener<CloudletVmEventInfo> listener)
        Removes a listener from the onStartListener List.
        Parameters:
        listener - the listener to remove
        Returns:
        true if the listener was found and removed, false otherwise
      • removeOnUpdateProcessingListener

        boolean removeOnUpdateProcessingListener​(EventListener<CloudletVmEventInfo> listener)
        Removes a listener from the onUpdateCloudletProcessingListener List.
        Parameters:
        listener - the listener to remove
        Returns:
        true if the listener was found and removed, false otherwise
      • addOnFinishListener

        Cloudlet addOnFinishListener​(EventListener<CloudletVmEventInfo> listener)
        Adds a Listener object that will be notified when a cloudlet finishes its execution at a given Vm.
        Parameters:
        listener - the listener to add
        Returns:
      • notifyOnUpdateProcessingListeners

        void notifyOnUpdateProcessingListeners​(double time)
        Notifies all registered listeners about the update on Cloudlet processing.

        This method is used just internally and must not be called directly.

        Parameters:
        time - the time the event happened