cloudsim-plus-master/cloudsim-plus-master/cloudsim-plus/src/main/java/org/cloudbus/cloudsim/schedulers/cloudlet/CloudletSchedulerAbstract.java
private long cloudletExecutedInstructionsForElapsedTime(final CloudletExecutionInfo cl, final double currentTime) {
        /* The time the Cloudlet spent executing in fact, since the last time Cloudlet update was
         * called by the scheduler. If it is zero, indicates that the Cloudlet didn't use
         * the CPU in this time span, because it is waiting for its required files
         * to be acquired from the Datacenter storage.
         */
        final double actualProcessingTime = (hasCloudletFileTransferTimePassed(cl, currentTime) ? timeSpan(cl, currentTime) : 0);
        final double cloudletUsedMips =
            getAbsoluteCloudletResourceUtilization(cl.getCloudlet().getUtilizationModelCpu(),
                currentTime, getAvailableMipsByPe());
        return (long) (cloudletUsedMips * actualProcessingTime * Conversion.MILLION);
    }
/**
     * Computes the length of a given cloudlet, in number
     * of Instructions (I), which has been executed since the last time cloudlet
     * processing was updated.
     *
     * <p>
     * This method considers the delay for actually starting the Cloudlet
     * execution due to the time to transfer
     * {@link Cloudlet#getRequiredFiles() required Cloudlet files} from the
     * Datacenter storage (such as a SAN) to the Vm running the Cloudlet.</p>
     *
     * <p>
     * During this transfer time, the method will always return 0 to indicate
     * that the Cloudlet was not processed in fact, it is just waiting the
     * required files to be acquired. The required time to transfer the files is
     * stored in the {@link CloudletExecutionInfo#getFileTransferTime()}
     * attribute and is set when the Cloudlet is submitted to the scheduler.</p>
     *
     * @param cl the Cloudlet to compute the executed length
     * @param currentTime current simulation time
     * @return the executed length, in number of Instructions (I), since the last time cloudlet was processed.
     * @TODO @author manoelcampos This method is being called 2 times more than
     * required. Despite it is not causing any apparent issue, it has to be
     * investigated. For instance, for simulation time 2, with 2 cloudlets, the
     * method is being called 4 times instead of just 2 (1 for each cloudlet for
     * that time).
     * @see #updateCloudletsProcessing(double)
     */
Computes the length of a given cloudlet, in number
of Instructions (I), which has been executed since the last time cloudlet
processing was updated.


This method considers the delay for actually starting the Cloudlet
execution due to the time to transfer
Cloudlet#getRequiredFiles() required Cloudlet files from the
Datacenter storage (such as a SAN) to the Vm running the Cloudlet.


During this transfer time, the method will always return 0 to indicate
that the Cloudlet was not processed in fact, it is just waiting the
required files to be acquired. The required time to transfer the files is
stored in the  CloudletExecutionInfo#getFileTransferTime()
attribute and is set when the Cloudlet is submitted to the scheduler.

@param cl the Cloudlet to compute the executed length
@param currentTime current simulation time
@return the executed length, in number of Instructions (I), since the last time cloudlet was processed.
@TODO @author manoelcampos This method is being called 2 times more than
required. Despite it is not causing any apparent issue, it has to be
investigated. For instance, for simulation time 2, with 2 cloudlets, the
method is being called 4 times instead of just 2 (1 for each cloudlet for
that time).
Computes the length of a given cloudlet in number of Instructions ( I ) which has been executed since the last time cloudlet processing was updated . This method considers the delay for actually starting the Cloudlet execution due to the time to transfer Cloudlet#getRequiredFiles () required Cloudlet files from the Datacenter storage ( such as a SAN ) to the Vm running the Cloudlet . During this transfer time the method will always return 0 to indicate that the Cloudlet was not processed in fact it is just waiting the required files to be acquired . The required time to transfer the files is stored in the CloudletExecutionInfo#getFileTransferTime () attribute and is set when the Cloudlet is submitted to the scheduler . @param cl the Cloudlet to compute the executed length @param currentTime current simulation time @return the executed length in number of Instructions ( I ) since the last time cloudlet was processed . @TODO @author manoelcampos This method is being called 2 times more than required . Despite it is not causing any apparent issue it has to be investigated . For instance for simulation time 2 with 2 cloudlets the method is being called 4 times instead of just 2 ( 1 for each cloudlet for that time ) .
private long cloudletExecutedInstructionsForElapsedTime(final CloudletExecutionInfo cl, final double currentTime) {
        /* The time the Cloudlet spent executing in fact, since the last time Cloudlet update was
         * called by the scheduler. If it is zero, indicates that the Cloudlet didn't use
         * the CPU in this time span, because it is waiting for its required files
         * to be acquired from the Datacenter storage.
         */
        final double actualProcessingTime = (hasCloudletFileTransferTimePassed(cl, currentTime) ? timeSpan(cl, currentTime) : 0);
        final double cloudletUsedMips =
            getAbsoluteCloudletResourceUtilization(cl.getCloudlet().getUtilizationModelCpu(),
                currentTime, getAvailableMipsByPe());
        return (long) (cloudletUsedMips * actualProcessingTime * Conversion.MILLION);
    }
private long cloudletExecutedInstructionsForElapsedTime ( final CloudletExecutionInfo cl , final double currentTime ) { /* The time the Cloudlet spent executing in fact, since the last time Cloudlet update was
         * called by the scheduler. If it is zero, indicates that the Cloudlet didn't use
         * the CPU in this time span, because it is waiting for its required files
         * to be acquired from the Datacenter storage.
         */ final double actualProcessingTime = ( hasCloudletFileTransferTimePassed ( cl , currentTime ) ? timeSpan ( cl , currentTime ) : 0 ) ; final double cloudletUsedMips = getAbsoluteCloudletResourceUtilization ( cl . getCloudlet ( ) . getUtilizationModelCpu ( ) , currentTime , getAvailableMipsByPe ( ) ) ; return ( long ) ( cloudletUsedMips * actualProcessingTime * Conversion . MILLION ) ; }
Computes the length of a given cloudlet, in number
 of Instructions (I), which has been executed since the last time cloudlet
 processing was updated.
Computes the length of a given cloudlet in number of Instructions ( I ) which has been executed since the last time cloudlet processing was updated .