package experiments.simpat2014.models.article; import schedframe.resources.StandardResourceType; import schedframe.resources.computing.Node; import schedframe.resources.computing.coolemall.NodeGroup; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.devices.Device; import schedframe.resources.devices.Fan; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import example.energy.BaseEnergyEstimationPlugin; public class NodeGroupEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double powerConsumption = 0; NodeGroup nodeGroup = (NodeGroup)resource; for(Node node: nodeGroup.getNodes()){ try{ powerConsumption = powerConsumption + node.getPowerInterface().getRecentPowerUsage().getValue(); powerConsumption = powerConsumption + node.getProcessors().get(0).getResourceCharacteristic().getDevices().get(0).getPowerInterface().getRecentPowerUsage().getValue(); } catch (Exception e){ } } for(Device device: nodeGroup.getResourceCharacteristic().getDevices()){ if(device.getType().equals(StandardResourceType.Fan)){ Fan fan = (Fan) device; powerConsumption = powerConsumption + fan.getPowerInterface().getRecentPowerUsage().getValue(); } } return powerConsumption; } }