package test.thermal.recs.plugins.energy; import java.io.FileNotFoundException; import java.io.IOException; import schedframe.resources.computing.Node; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; public class RecsNodeEEP extends RecsNodeBaseEEP { public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double powerConsumption = 0; Node node = (Node) resource; try { if(jobRegistry.getRunningTasks().size() > 0) { powerConsumption = powerConsumption + getMeasuredPower(createQuery(jobRegistry.getRunningTasks().get(0))); } else { try { powerConsumption = powerConsumption + node.getPowerInterface().getPowerConsumption(node.getPowerInterface().getPowerState()); } catch (NoSuchFieldException e) { } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return powerConsumption; } public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double power1 = 0; double power2 = 0; Integer resId = Integer.parseInt(resource.getName().split("_")[1]); Node node = (Node)resource; //we estimate outlet temperature (related to the temperature of the nodes placed in outlet row) for(PhysicalResource compResource: node.getParent().getChildren()){ Integer id = Integer.parseInt(compResource.getName().split("_")[1]); //we take into account the power of nodes placed "behind" the given nodes if(id - resId == 9){ power1 = compResource.getPowerInterface().getRecentPowerUsage().getValue(); power2 = resource.getPowerInterface().getRecentPowerUsage().getValue(); }else if(id - resId == -9){ power1 = resource.getPowerInterface().getRecentPowerUsage().getValue(); power2 = compResource.getPowerInterface().getRecentPowerUsage().getValue(); } } return ThermalConstants.calculateOutletTemp(power1, power2); } }