package example.energy.recs; import example.energy.BaseEnergyEstimationPlugin; import schedframe.resources.ResourceStatus; import schedframe.resources.computing.ComputingResource; import schedframe.resources.computing.Processor; import schedframe.resources.computing.profiles.energy.EnergyEvent; import schedframe.resources.computing.profiles.energy.EnergyEventType; import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; import schedframe.scheduling.manager.tasks.JobRegistry; public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource) { double powerConsumption; Processor cpu = (Processor)resource; if(resource.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)) powerConsumption = 0; else { try { if(resource.getStatus() == ResourceStatus.BUSY) powerConsumption = 60; //powerConsumption = cpu.getPowerInterface().getPowerConsumption(cpu.getPowerInterface().getPState()); else { powerConsumption = 10; //powerConsumption = cpu.getPowerInterface().getPowerConsumption(StandardPowerStateName.ON); } } catch (Exception e) { try { powerConsumption = cpu.getPowerInterface().getPowerConsumption(StandardPowerStateName.ON); } catch (NoSuchFieldException e1) { powerConsumption = 10; } } } if(event.getType() == EnergyEventType.RESOURCE_UTILIZATION_CHANGED) powerConsumption = powerConsumption/2; return powerConsumption; } }