@Override public org.cloudbus.cloudsim.CloudletScheduler getScheduler(double mips, int pes, String schedulerAlias) { return new CloudletSchedulerSpaceShared(); } },
@Override public double cloudletSubmit(Cloudlet cloudlet) { return cloudletSubmit(cloudlet, 0.0); }
@Override public int runningCloudlets() { return getCloudletExecList().size(); }
for (ResCloudlet rcl : getCloudletExecList()) { if (rcl.getCloudletId() == cloudletId) { found = true; ResCloudlet rgl = getCloudletExecList().remove(position); if (rgl.getRemainingCloudletLength() == 0) { cloudletFinish(rgl); } else { rgl.setCloudletStatus(Cloudlet.PAUSED); getCloudletPausedList().add(rgl); for (ResCloudlet rcl : getCloudletWaitingList()) { if (rcl.getCloudletId() == cloudletId) { found = true; ResCloudlet rgl = getCloudletWaitingList().remove(position); if (rgl.getRemainingCloudletLength() == 0) { cloudletFinish(rgl); } else { rgl.setCloudletStatus(Cloudlet.PAUSED); getCloudletPausedList().add(rgl);
@Override public double updateVmProcessing(double currentTime, List<Double> mipsShare) { setCurrentMipsShare(mipsShare); double timeSpam = currentTime - getPreviousTime(); // time since last update double capacity = 0.0; int cpus = 0; for (ResCloudlet rcl : getCloudletExecList()) { rcl.updateCloudletFinishedSoFar( (long) (capacity * timeSpam * rcl.getNumberOfPes() * Consts.MILLION)); if (getCloudletExecList().size() == 0 && getCloudletWaitingList().size() == 0) { setPreviousTime(currentTime); return 0.0; for (ResCloudlet rcl : getCloudletExecList()) { cloudletFinish(rcl); finished++; getCloudletExecList().removeAll(toRemove); if (!getCloudletWaitingList().isEmpty()) { for (int i = 0; i < finished; i++) { toRemove.clear(); for (ResCloudlet rcl : getCloudletWaitingList()) { if ((currentCpus - usedPes) >= rcl.getNumberOfPes()) { rcl.setCloudletStatus(Cloudlet.INEXEC); getCloudletExecList().add(rcl);
for (ResCloudlet rcl : getCloudletPausedList()) { if (rcl.getCloudletId() == cloudletId) { found = true; ResCloudlet rcl = getCloudletPausedList().remove(position); rcl.getCloudlet().setCloudletLength(size); getCloudletExecList().add(rcl); usedPes += rcl.getNumberOfPes(); for (Double mips : getCurrentMipsShare()) { capacity += mips; if (mips > 0) { rcl.getCloudlet().setCloudletLength(size); getCloudletWaitingList().add(rcl); return 0.0;
@Override public int getCloudletStatus(int cloudletId) { for (ResCloudlet rcl : getCloudletExecList()) { if (rcl.getCloudletId() == cloudletId) { return rcl.getCloudletStatus(); } } for (ResCloudlet rcl : getCloudletPausedList()) { if (rcl.getCloudletId() == cloudletId) { return rcl.getCloudletStatus(); } } for (ResCloudlet rcl : getCloudletWaitingList()) { if (rcl.getCloudletId() == cloudletId) { return rcl.getCloudletStatus(); } } return -1; }
rcl.setMachineAndPeId(0, i); getCloudletExecList().add(rcl); usedPes += cloudlet.getNumberOfPes(); } else {// no enough free PEs: go to the waiting queue ResCloudlet rcl = new ResCloudlet(cloudlet); rcl.setCloudletStatus(Cloudlet.QUEUED); getCloudletWaitingList().add(rcl); return 0.0; for (Double mips : getCurrentMipsShare()) { capacity += mips; if (mips > 0) {
@Override public boolean isFinishedCloudlets() { return getCloudletFinishedList().size() > 0; }
@Override public List<Double> getCurrentRequestedMips() { List<Double> mipsShare = new ArrayList<Double>(); if (getCurrentMipsShare() != null) { for (Double mips : getCurrentMipsShare()) { mipsShare.add(mips); } } return mipsShare; }
@Override public Cloudlet cloudletCancel(int cloudletId) { for (ResCloudlet rcl : getCloudletFinishedList()) { if (rcl.getCloudletId() == cloudletId) { getCloudletFinishedList().remove(rcl); return rcl.getCloudlet(); for (ResCloudlet rcl : getCloudletExecList()) { if (rcl.getCloudletId() == cloudletId) { getCloudletExecList().remove(rcl); if (rcl.getRemainingCloudletLength() == 0) { cloudletFinish(rcl); } else { rcl.setCloudletStatus(Cloudlet.CANCELED); for (ResCloudlet rcl : getCloudletPausedList()) { if (rcl.getCloudletId() == cloudletId) { getCloudletPausedList().remove(rcl); return rcl.getCloudlet(); for (ResCloudlet rcl : getCloudletWaitingList()) { if (rcl.getCloudletId() == cloudletId) { rcl.setCloudletStatus(Cloudlet.CANCELED); getCloudletWaitingList().remove(rcl); return rcl.getCloudlet();
@Override public Cloudlet getNextFinishedCloudlet() { if (getCloudletFinishedList().size() > 0) { return getCloudletFinishedList().remove(0).getCloudlet(); } return null; }
@Override public void cloudletFinish(ResCloudlet rcl) { rcl.setCloudletStatus(Cloudlet.SUCCESS); rcl.finalizeCloudlet(); getCloudletFinishedList().add(rcl); usedPes -= rcl.getNumberOfPes(); }
@Override public double getTotalUtilizationOfCpu(double time) { double totalUtilization = 0; for (ResCloudlet gl : getCloudletExecList()) { totalUtilization += gl.getCloudlet().getUtilizationOfCpu(time); } return totalUtilization; }
/** * Returns the first cloudlet to migrate to another VM. * * @return the first running cloudlet * @pre $none * @post $none * * @todo it doesn't check if the list is empty */ @Override public Cloudlet migrateCloudlet() { ResCloudlet rcl = getCloudletExecList().remove(0); rcl.finalizeCloudlet(); Cloudlet cl = rcl.getCloudlet(); usedPes -= cl.getNumberOfPes(); return cl; }