package test.fips.models.fpga; import dcworms.schedframe.scheduling.ExecTask; import schedframe.resources.computing.Processor; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.computing.profiles.energy.power.CustomPowerStateName; 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 example.energy.BaseEnergyEstimationPlugin; public class FPGAEnergyEstimationPlugin 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 = 7; } 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; } }