package experiments.simpat2014.models.article; import java.util.List; import schedframe.resources.CoolEmAllResourceType; import schedframe.resources.computing.ComputingResource; import schedframe.resources.computing.Node; import schedframe.resources.computing.Processor; import schedframe.resources.computing.Rack; import schedframe.resources.computing.coolemall.ComputeBox1; import schedframe.resources.computing.coolemall.NodeGroup; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; import schedframe.resources.computing.profiles.energy.power.PState; import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; import schedframe.resources.devices.Device; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import simulator.DataCenterWorkloadSimulator; import example.energy.BaseEnergyEstimationPlugin; import example.energy.coolemall.CoolEmAllTestbedMeasurements; import gridsim.dcworms.DCWormsTags; public class RackEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double powerConsumption = 0; Rack rack = (Rack)resource; for(ComputingResource nodeGroup: rack.getChildren()){ try{ powerConsumption = powerConsumption + nodeGroup.getPowerInterface().getRecentPowerUsage().getValue(); } catch (Exception e){ } } for(Node node: rack.getNodes()){ if(node.getProcessors().get(0).getThermalInterface().getRecentTemperature().getValue() > 90){ //powerConsumption = powerConsumption + 15; } } int nrOfPoweredOffNodes = 0; for(Node node: rack.getNodes()){ if(node.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)){ nrOfPoweredOffNodes++; } } if(nrOfPoweredOffNodes != rack.getNodes().size()){ powerConsumption = (powerConsumption + CoolEmAllTestbedMeasurements.OTHER_DEVICES_POWER_CONSUMPTION)/CoolEmAllTestbedMeasurements.POWER_SUPPLY_EFFICIENCY; } return powerConsumption; } }