Cloudslab / cloudsim

CloudSim: A Framework For Modeling And Simulation Of Cloud Computing Infrastructures And Services
http://www.cloudbus.org/cloudsim/
810 stars 492 forks source link

Datacenter doubles expected file transfer time #110

Open wildd0g opened 6 years ago

wildd0g commented 6 years ago

Datacenter adds the file transfer time to the estimated estimatedFinishTime when sending a cloudlet to a vm's scheduler .

            double estimatedFinishTime = scheduler.cloudletSubmit(cl, fileTransferTime);

            // if this cloudlet is in the exec queue
            if (estimatedFinishTime > 0.0 && !Double.isInfinite(estimatedFinishTime)) {
                estimatedFinishTime += fileTransferTime;
                send(getId(), estimatedFinishTime, CloudSimTags.VM_DATACENTER_EVENT);

However, a proper cloudlet scheduler is already expected to incorporate the extra cloudlet calculation cost of the file transfer and subsequently returns an estimatedFinishTime based on this new total calculation cost which already includes the file transfer time. (taken from the default CloudletSchedulerTimeShared)

    public double cloudletSubmit(Cloudlet cloudlet, double fileTransferTime) {
        ...
        // use the current capacity to estimate the extra amount of
        // time to file transferring. It must be added to the cloudlet length
        double extraSize = getCapacity(getCurrentMipsShare()) * fileTransferTime;
        long length = (long) (cloudlet.getCloudletLength() + extraSize);
        cloudlet.setCloudletLength(length);

        return cloudlet.getCloudletLength() / getCapacity(getCurrentMipsShare());
    }

Having the Datacenter add the calculation time again thus results in an inacurate time for the next datacenter event.