package test.fips.models.i7; import schedframe.resources.computing.Processor; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import schedframe.scheduling.tasks.phases.PhaseSystemLoad; import dcworms.schedframe.scheduling.ExecTask; import example.energy.BaseEnergyEstimationPlugin; public class CpuEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { /*double powerConsumption = 0; Processor cpu = (Processor)resource; powerConsumption = Pidle + (Pfull- Pidle) * cpu.getLoadInterface().getRecentUtilization().getValue()/100; return powerConsumption;*/ double load = 0; double powerConsumption = 0; Processor proc = (Processor)resource; if(resource.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)) return 0; else { load = proc.getLoadInterface().getRecentUtilization().getValue(); if(load == 0){ powerConsumption = 18; } for(ExecTask task: jobRegistry.getRunningTasks()){ double usage = 0; //double energy = Double.valueOf(task.getExecutionProfile().getCurrentExecutionPhase().getReferenceHardware().get("Total_Running_Energy")); //double idle_energy = Double.valueOf(task.getExecutionProfile().getCurrentExecutionPhase().getReferenceHardware().get("Total_Idle_Energy")); double av_power = Double.valueOf(task.getExecutionProfile().getCurrentExecutionPhase().getReferenceHardware().get("Average_Power")); powerConsumption = powerConsumption + av_power; for(PhaseSystemLoad pb: task.getExecutionProfile().getCurrentExecutionPhase().getSystemLoad()){ if(pb.getResouceName().equals("Usage")){ usage = pb.getUtilization(); break; } if(pb.getResouceName().equals("PM_Running_Energy")){ //energy = pb.getUtilization(); break; } } } } return powerConsumption; } }