package org.cloudbus.cloudsim.examples.container; import org.cloudbus.cloudsim.UtilizationModelPlanetLabInMemory; import org.cloudbus.cloudsim.examples.power.Constants; import java.io.IOException; /** * Created by sareh on 5/08/15. */ public class UtilizationModelPlanetLabInMemoryExtended extends UtilizationModelPlanetLabInMemory { public UtilizationModelPlanetLabInMemoryExtended(String inputPath, double schedulingInterval) throws NumberFormatException, IOException { super(inputPath, schedulingInterval); } public UtilizationModelPlanetLabInMemoryExtended(String inputPath, double schedulingInterval, int dataSamples) throws NumberFormatException, IOException { super(inputPath, schedulingInterval, dataSamples); } /* * (non-Javadoc) * @see cloudsim.power.UtilizationModel#getUtilization(double) */ @Override public double getUtilization(double inputTime) { double utilization; if (inputTime > Constants.SIMULATION_LIMIT || inputTime == Constants.SIMULATION_LIMIT) { utilization = calUtilization(inputTime % Constants.SIMULATION_LIMIT); } else { utilization = calUtilization(inputTime); } return utilization; } public double calUtilization(double time) { // Log.print(time); double[] data = super.getData(); if (time % getSchedulingInterval() == 0) { return data[(int) time / (int) getSchedulingInterval()]; } int time1 = (int) Math.floor(time / getSchedulingInterval()); int time2 = (int) Math.ceil(time / getSchedulingInterval()); double utilization1 = data[time1]; double utilization2 = data[time2]; double delta = (utilization2 - utilization1) / ((time2 - time1) * getSchedulingInterval()); double utilization = utilization1 + delta * (time - time1 * getSchedulingInterval()); return utilization; } }