Changeset 1207 for DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power
- Timestamp:
- 11/26/13 11:56:07 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power
- Files:
-
- 1 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/PState.java
r1119 r1207 1 1 package schedframe.resources.computing.profiles.energy.power; 2 3 import java.util.Map; 4 import java.util.TreeMap; 2 5 3 6 public class PState { … … 9 12 protected double powerUsageMin; 10 13 protected double powerUsageMax; 11 14 //protected List<LoadPowerUsage> loadPowerUsageList; 15 protected Map<Double, Double> loadPowerUsage; 16 12 17 /*public PState(PStateType name, double frequency, double voltage, double power) { 13 18 super(); … … 38 43 return powerUsageMax; 39 44 } 40 45 /*public List<LoadPowerUsage> getLoadPowerUsageList() { 46 return loadPowerUsageList; 47 }*/ 48 public Map<Double, Double> getLoadPowerUsage() { 49 if(loadPowerUsage == null) { 50 return new TreeMap<Double, Double>(); 51 } 52 return loadPowerUsage; 53 } 54 41 55 public static class Builder { 42 56 … … 47 61 protected double powerUsageMin; 48 62 protected double powerUsageMax; 63 //protected List<LoadPowerUsage> loadPowerUsageList = new ArrayList<LoadPowerUsage>(); 64 protected Map<Double, Double> loadPowerUsage = new TreeMap<Double, Double>(); 49 65 50 66 public Builder name(String name){this.name = name; return this; } … … 54 70 public Builder powerUsageMin(double rate){this.powerUsageMin = rate; return this; } 55 71 public Builder powerUsageMax(double rate){this.powerUsageMax = rate; return this; } 72 //public Builder loadPowerUsage(LoadPowerUsage lpu){this.loadPowerUsageList.add(lpu); return this; } 73 public Builder loadPowerUsage(double load, double power){this.loadPowerUsage.put(load, power); return this; } 56 74 57 75 public PState build() { … … 67 85 this.powerUsageMin = builder.powerUsageMin; 68 86 this.powerUsageMax = builder.powerUsageMax; 87 //this.loadPowerUsageList = builder.loadPowerUsageList; 88 this.loadPowerUsage = builder.loadPowerUsage; 69 89 } 90 91 70 92 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/PowerInterfaceFactory.java
r1104 r1207 1 1 package schedframe.resources.computing.profiles.energy.power; 2 2 3 import schedframe.resources.CoolEmAllResourceType;4 3 import schedframe.resources.StandardResourceType; 5 4 import schedframe.resources.computing.ComputingResource; 6 5 import schedframe.resources.computing.profiles.energy.power.ui.PowerInterface; 6 import schedframe.resources.devices.PhysicalResource; 7 import schedframe.resources.devices.PhysicalResourcePowerInterface; 7 8 8 9 public class PowerInterfaceFactory { 9 10 10 11 12 //new113 /*public static PowerInterface createPowerProfile(ResourceType resourceType, List<PowerState> powerStates, List<PState> pStates, String eepn){14 15 PowerInterface powerProfile;16 17 switch(resourceType){18 case DataCenter: powerProfile = new DataCenterPowerInterfaceNew(eepn, powerStates); break;19 case ComputingNode: powerProfile = new ComputingNodePowerInterfaceNew(eepn, powerStates); break;20 case Processor: powerProfile = new CPUPowerInterfaceNew(eepn, powerStates, pStates); break;21 default:22 throw new IllegalArgumentException("ResourceType " + resourceType + " is not supported.");23 }24 25 return powerProfile;26 }*/27 11 28 public static PowerInterface createPowerInterface( ComputingResource resource, PowerProfile pp){12 public static PowerInterface createPowerInterface(PhysicalResource resource, PowerProfile pp){ 29 13 if(pp == null) 30 14 return null; 31 15 PowerInterface powerInterface; 32 16 33 17 if(resource.getType().getName().equals(StandardResourceType.DataCenter.getName())) 34 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.DataCenterPowerInterface( resource, pp);35 else if (resource.getType().getName().equals(StandardResourceType. ComputingNode.getName()))36 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ComputingNodePowerInterface( resource, pp);18 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.DataCenterPowerInterface((ComputingResource)resource, pp); 19 else if (resource.getType().getName().equals(StandardResourceType.Node.getName())) 20 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ComputingNodePowerInterface((ComputingResource)resource, pp); 37 21 else if (resource.getType().getName().equals(StandardResourceType.Processor.getName())) 38 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ProcessorPowerInterface(resource, pp); 39 else if (resource.getType().getName().equals(CoolEmAllResourceType.Node.getName())) 40 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ComputingNodePowerInterface(resource, pp); 22 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ProcessorPowerInterface((ComputingResource)resource, pp); 23 else if (resource.getType().getName().equals(StandardResourceType.CRAH.getName())) 24 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 25 else if (resource.getType().getName().equals(StandardResourceType.Fan.getName())) 26 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 27 else if (resource.getType().getName().equals(StandardResourceType.Inlet.getName())) 28 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 29 else if (resource.getType().getName().equals(StandardResourceType.Outlet.getName())) 30 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 31 else if (resource.getType().getName().equals(StandardResourceType.CoolingDevice.getName())) 32 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 33 else if (resource.getType().getName().equals(StandardResourceType.Heatsink.getName())) 34 powerInterface = new PhysicalResourcePowerInterface(resource, pp); 41 35 else 42 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ComputingResourcePowerInterface( resource, pp);36 powerInterface = new schedframe.resources.computing.profiles.energy.power.ui.ComputingResourcePowerInterface((ComputingResource)resource, pp); 43 37 44 38 /*switch(resource.getType()){ -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/PowerProfile.java
r1167 r1207 24 24 public PowerProfile(EnergyEstimationPlugin energyEstimationPlugin, List<PowerState> powerStates) { 25 25 this.energyEstimationPlugin = energyEstimationPlugin; 26 this.supportedPowerStates = powerStates; 26 27 this.powerUsage = new ArrayList<PowerUsage>(); 27 this.supportedPowerStates = powerStates;28 initDefaultPowerStates(); 28 29 } 29 30 30 public PowerProfile(EnergyEstimationPlugin energyEstimationPlugin, List<PowerState> powerStates, 31 public PowerProfile(EnergyEstimationPlugin energyEstimationPlugin, List<PowerState> powerStates, List<PState> pStates) { 31 32 this.energyEstimationPlugin = energyEstimationPlugin; 32 33 this.supportedPowerStates = powerStates; … … 37 38 supportedPStates.put(pState.getName(), pState); 38 39 } 40 initDefaultPowerStates(); 39 41 } 40 42 … … 60 62 } 61 63 62 public List<PowerState> getSupportedPowerStates() throws NoSuchFieldException{64 public List<PowerState> getSupportedPowerStates() { 63 65 if(supportedPowerStates == null) 64 throw new NoSuchFieldException("Supported power states are not defined.");66 return new ArrayList<PowerState>(); 65 67 return supportedPowerStates; 66 68 } … … 111 113 } 112 114 113 115 protected void initDefaultPowerStates(){ 116 boolean supportsON = false; 117 boolean supportsOFF = false; 118 if(supportedPowerStates == null){ 119 supportedPowerStates = new ArrayList<PowerState>(); 120 } 121 for(PowerState ps: supportedPowerStates){ 122 if(ps.getName().equals(StandardPowerStateName.ON)){ 123 supportsON = true; 124 } else if (ps.getName().equals(StandardPowerStateName.OFF)){ 125 supportsOFF = true; 126 } 127 } 128 129 if(!supportsON){ 130 supportedPowerStates.add(new PowerState(StandardPowerStateName.ON, -1, new ArrayList<Transition>())); 131 } 132 if(!supportsOFF){ 133 supportedPowerStates.add(new PowerState(StandardPowerStateName.OFF, -1, new ArrayList<Transition>())); 134 } 135 } 114 136 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/plugin/EnergyEstimationPlugin.java
r477 r1207 2 2 3 3 import schedframe.Plugin; 4 import schedframe.resources.computing.ComputingResource;5 4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; 7 7 8 8 public interface EnergyEstimationPlugin extends Plugin { 9 9 10 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource);10 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource); 11 11 12 public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource);12 public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource); 13 13 14 public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource);14 public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource); 15 15 16 16 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ComputingNodePowerInterface.java
r1166 r1207 1 1 package schedframe.resources.computing.profiles.energy.power.ui; 2 2 3 4 5 import org.joda.time.DateTime; 6 7 import schedframe.SimulatedEnvironment; 3 8 import schedframe.resources.ResourceStatus; 4 9 import schedframe.resources.computing.ComputingNode; … … 38 43 39 44 if(!pePowerStateChangeStatus){ 40 computingNode.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, computingNode.get Name()));45 computingNode.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, computingNode.getFullName())); 41 46 } 42 47 … … 48 53 } 49 54 //computingNode.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, computingNode.getName())); 55 //ResourceController.traceResource(new DateTime().getMillis(), resource.getFullName(), "POWER_STATE_CHANGED", state.getName()); 50 56 return true; 51 57 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ComputingResourcePowerInterface.java
r579 r1207 4 4 import java.util.List; 5 5 6 import org.joda.time.DateTime; 6 7 import org.joda.time.DateTimeUtils; 7 8 8 9 import schedframe.Parameters; 10 import schedframe.SimulatedEnvironment; 9 11 import schedframe.resources.ResourceStatus; 10 12 import schedframe.resources.computing.ComputingResource; … … 46 48 } 47 49 //notifications from all levels 48 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.get Name()));50 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName())); 49 51 50 52 //notification from last level 51 53 //if (resource.getChildren() == null) resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource)); 52 54 55 //ResourceController.traceResource(new DateTime().getMillis(), resource.getFullName(), "POWER_STATE_CHANGED", state.getName()); 53 56 return true; 54 57 } … … 70 73 71 74 public boolean supportPowerState(PowerStateName state) { 72 try { 73 for(PowerState powerState: powerProfile.getSupportedPowerStates()){ 74 if(powerState.getName().equals(state)){ 75 return true; 76 } 75 for(PowerState powerState: powerProfile.getSupportedPowerStates()){ 76 if(powerState.getName().equals(state)){ 77 return true; 77 78 } 78 } catch (NoSuchFieldException e) {79 return false;80 79 } 81 80 return false; -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/DataCenterPowerInterface.java
r495 r1207 1 1 package schedframe.resources.computing.profiles.energy.power.ui; 2 2 3 import org.joda.time.DateTime; 4 5 import schedframe.SimulatedEnvironment; 3 6 import schedframe.resources.computing.ComputingResource; 4 7 import schedframe.resources.computing.DataCenter; … … 23 26 child.getPowerInterface().setPowerState(state); 24 27 } 25 28 //ResourceController.traceResource(new DateTime().getMillis(), resource.getFullName(), "POWER_STATE_CHANGED", state.getName()); 26 29 return true; 27 30 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java
r782 r1207 4 4 import java.util.Map; 5 5 6 import org.joda.time.DateTime; 7 8 import schedframe.SimulatedEnvironment; 6 9 import schedframe.resources.ResourceStatus; 7 10 import schedframe.resources.computing.ComputingResource; … … 16 19 17 20 protected PState currentPState; 18 19 21 20 22 public ProcessorPowerInterface(ComputingResource resource, PowerProfile pp){ … … 34 36 resource.setStatus(ResourceStatus.FREE); 35 37 } 36 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.get Name()));38 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName())); 37 39 } 38 40 … … 68 70 //speed.setAmount(Double.valueOf(currentPState.getFrequency()).intValue()); 69 71 //new ResourceEventCommand(resource).execute(EnergyEventType.FREQUENCY_CHANGED); 70 resource.handleEvent(new EnergyEvent(EnergyEventType.FREQUENCY_CHANGED, resource.get Name()));72 resource.handleEvent(new EnergyEvent(EnergyEventType.FREQUENCY_CHANGED, resource.getFullName())); 71 73 //resource.getScheduler().sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE, resource.getName()); 74 75 //ResourceController.traceResource(new DateTime().getMillis(), resource.getFullName(), "PSTATE_CHANGED", pStateName); 72 76 return true; 73 77 }
Note: See TracChangeset
for help on using the changeset viewer.