package example.energy; import gssim.schedframe.scheduling.ExecTaskInterface; import java.util.List; import java.util.Properties; import schedframe.resources.PowerState; import test.rewolucja.energy.EnergyEvent; import test.rewolucja.resources.ResourceStatus; import test.rewolucja.resources.physical.base.ComputingResource; import test.rewolucja.resources.physical.implementation.Processor; import test.rewolucja.scheduling.JobRegistryInterface; public class CPUEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { @Override public double estimatePowerConsumption(EnergyEvent event, JobRegistryInterface jobRegistry, ComputingResource resource) { Processor cpu = (Processor)resource; if(resource.getPowerInterface().getPowerState() == PowerState.OFF) return 0; double factor = 1.3; if(resource.getStatus() == ResourceStatus.BUSY) { List tasks = jobRegistry.getRunningTasks(); int type = Integer.parseInt( tasks.get(0).getJobId()); switch( type % 4) { case 0: factor = 1.1; break; case 1: factor = 1.2; break; case 2: factor = 1.3; break; case 3: factor = 1.4; break; } return cpu.getPowerInterface().getPState().getPower() * factor; } else return cpu.getPowerInterface().getPState().getPower(); } public String getName() { return getClass().getName(); } public void init(Properties properties) { // TODO Auto-generated method stub } }