Changeset 1207 for DCWoRMS/branches/coolemall/src/example/energy
- Timestamp:
- 11/26/13 11:56:07 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/example/energy
- Files:
-
- 10 added
- 1 deleted
- 8 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/example/energy/BaseEnergyEstimationPlugin.java
r751 r1207 3 3 import schedframe.Parameters; 4 4 import schedframe.PluginConfiguration; 5 import schedframe.resources.computing.ComputingResource;6 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 7 6 import schedframe.resources.computing.profiles.energy.power.plugin.EnergyEstimationPlugin; 7 import schedframe.resources.devices.PhysicalResource; 8 8 import schedframe.scheduling.manager.tasks.JobRegistry; 9 9 … … 17 17 18 18 @Override 19 public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource) {19 public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 20 20 throw new RuntimeException("Not implemented."); 21 21 } 22 22 23 23 @Override 24 public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, ComputingResourceresource) {24 public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 25 25 throw new RuntimeException("Not implemented."); 26 26 } -
DCWoRMS/branches/coolemall/src/example/energy/DataCenterEnergyEstimationPlugin.java
r520 r1207 2 2 3 3 import schedframe.resources.computing.ComputingNode; 4 import schedframe.resources.computing.ComputingResource;5 4 import schedframe.resources.computing.DataCenter; 6 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 7 6 import schedframe.resources.computing.profiles.energy.power.PowerUsage; 7 import schedframe.resources.devices.PhysicalResource; 8 8 import schedframe.scheduling.manager.tasks.JobRegistry; 9 9 … … 12 12 @Override 13 13 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 14 ComputingResource resource) {14 PhysicalResource resource) { 15 15 double power = 0; 16 16 DataCenter dataCenter = (DataCenter)resource; -
DCWoRMS/branches/coolemall/src/example/energy/DefaultEnergyEstimationPlugin.java
r546 r1207 3 3 import schedframe.resources.computing.ComputingResource; 4 4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 5 import schedframe.resources.devices.PhysicalResource; 5 6 import schedframe.scheduling.manager.tasks.JobRegistry; 6 7 … … 9 10 10 11 11 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource) {12 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 12 13 double powerConsumption = 0; 13 14 try { … … 17 18 } 18 19 19 powerConsumption = powerConsumption + getChildrenPowerConsumption(resource); 20 21 for(ComputingResource child:resource.getChildren()){ 22 try { 23 //powerConsumption = powerConsumption + child.getPowerInterface().getRecentPowerUsage().getValue(); 24 } catch (Exception e) { 20 ComputingResource cr = (ComputingResource) resource; 21 powerConsumption = powerConsumption + getChildrenPowerConsumption(cr); 25 22 26 }27 }28 23 return powerConsumption; 29 24 } -
DCWoRMS/branches/coolemall/src/example/energy/NodeEnergyEstimationPlugin.java
r532 r1207 2 2 3 3 import schedframe.resources.computing.ComputingNode; 4 import schedframe.resources.computing.ComputingResource;5 4 import schedframe.resources.computing.Processor; 6 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 6 import schedframe.resources.devices.Device; 7 import schedframe.resources.devices.PhysicalResource; 7 8 import schedframe.scheduling.manager.tasks.JobRegistry; 8 9 9 public class ComputingNodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin {10 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 10 11 11 12 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 12 ComputingResource resource) {13 PhysicalResource resource) { 13 14 double powerConsumption = 0; 14 15 ComputingNode node = (ComputingNode) resource; … … 22 23 try { 23 24 powerConsumption = powerConsumption + node.getPowerInterface().getPowerConsumption(node.getPowerInterface().getPowerState()); 25 for(Device dev: node.getResourceCharacteristic().getDevices()){ 26 powerConsumption = powerConsumption + dev.getPowerInterface().getRecentPowerUsage().getValue(); 27 } 24 28 } catch (NoSuchFieldException e) { 25 29 } -
DCWoRMS/branches/coolemall/src/example/energy/ProcessorEnergyEstimationPlugin.java
r901 r1207 2 2 3 3 import schedframe.resources.ResourceStatus; 4 import schedframe.resources.computing.ComputingResource;5 4 import schedframe.resources.computing.Processor; 6 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 7 6 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 7 import schedframe.resources.devices.PhysicalResource; 8 8 import schedframe.scheduling.manager.tasks.JobRegistry; 9 9 … … 11 11 12 12 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 13 ComputingResource resource) {13 PhysicalResource resource) { 14 14 double powerConsumption; 15 15 16 Processor cpu = (Processor)resource; 16 17 if(resource.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)) -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB1EnergyEstimationPlugin.java
r913 r1207 1 1 package example.energy.coolemall; 2 2 3 import schedframe. Parameter;4 import schedframe.resources.computing. ComputingResource;3 import schedframe.resources.computing.coolemall.ComputeBox1; 4 import schedframe.resources.computing.coolemall.NodeGroup; 5 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 6 import schedframe.resources.computing.recs.ComputeBox1; 7 import schedframe.resources.computing.recs.NodeGroup; 6 import schedframe.resources.devices.PhysicalResource; 8 7 import schedframe.scheduling.manager.tasks.JobRegistry; 9 8 import example.energy.BaseEnergyEstimationPlugin; … … 12 11 13 12 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 14 ComputingResource resource) {13 PhysicalResource resource) { 15 14 double powerConsumption = 0; 16 15 ComputeBox1 computeBox1 = (ComputeBox1)resource; … … 22 21 } 23 22 } 24 25 try { 26 powerConsumption = powerConsumption + computeBox1.getPowerInterface().getPowerConsumption(computeBox1.getPowerInterface().getPowerState()); 27 } catch (NoSuchFieldException e) { 28 Parameter param = computeBox1.getResourceCharacteristic().getParameters().get("maxPower"); 29 if(param != null) 30 powerConsumption = powerConsumption + Double.valueOf(param.get(0).getContent()); 31 } 32 33 23 powerConsumption = (powerConsumption + CoolEmAllTestbedMeasurements.OTHER_DEVICES_POWER_CONSUMPTION)/CoolEmAllTestbedMeasurements.POWER_SUPPLY_EFFICIENCY; 34 24 return powerConsumption; 35 25 } -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeEnergyEstimationPlugin.java
r1146 r1207 1 1 package example.energy.coolemall; 2 2 3 import schedframe.Parameter;4 import schedframe.events.scheduling.EventReason;5 import schedframe.resources.computing.ComputingResource;6 3 import schedframe.resources.computing.Processor; 4 import schedframe.resources.computing.coolemall.Node; 7 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 8 import schedframe.resources.computing.recs.Node; 6 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 7 import schedframe.resources.devices.Device; 8 import schedframe.resources.devices.PhysicalResource; 9 9 import schedframe.scheduling.manager.tasks.JobRegistry; 10 import testbed_hpc.Node_Fan_Mapping; 10 11 import example.energy.BaseEnergyEstimationPlugin; 11 12 12 13 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 13 14 14 private static int OUT_START_ID = 0;15 private static int OUT_END_ID = 8;15 //private static int OUT_START_ID = 0; 16 //private static int OUT_END_ID = 8; 16 17 17 18 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 18 ComputingResource resource) {19 PhysicalResource resource) { 19 20 double powerConsumption = 0; 20 21 Node node = (Node) resource; … … 26 27 } 27 28 } 28 try { 29 powerConsumption = powerConsumption + node.getPowerInterface().getPowerConsumption(node.getPowerInterface().getPowerState()); 30 } catch (NoSuchFieldException e) { 31 Parameter param = node.getResourceCharacteristic().getParameters().get("maxPower"); 32 if(param != null) 33 powerConsumption = powerConsumption + Double.valueOf(param.get(0).getContent()); 34 } 29 if(node.getPowerInterface().getPowerState().equals(StandardPowerStateName.ON)){ 30 //powerConsumption = powerConsumption + CoolEmAllTestbedMeasurements.SINGLE_FAN_ON_POWER_CONSUMPTION; 31 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 32 if(device.getFullName().equals(Node_Fan_Mapping.getNode_fan().get(node.getFullName()))){ 33 if(device.getPowerInterface().getRecentPowerUsage().getValue() == -1){ 34 powerConsumption = powerConsumption + CoolEmAllTestbedMeasurements.SINGLE_FAN_ON_POWER_CONSUMPTION; 35 }else 36 powerConsumption = powerConsumption + device.getPowerInterface().getRecentPowerUsage().getValue(); 37 break; 38 } 39 } 40 } 41 35 42 36 43 return powerConsumption; 37 44 } 38 45 39 public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource) {46 /*public double estimateAirThroughput(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 40 47 41 48 double airThroughput = 0; … … 44 51 return airThroughput; 45 52 //airThroughput = resource.getAirThroughputInterface().getAirFlow(StandardAirThroughputStateName.FAN_OFF); 46 else 53 else { 47 54 airThroughput = resource.getAirThroughputInterface().getAirFlow(resource.getAirThroughputInterface().getAirThroughputState()); 55 //airThroughput = computingResource.getResourceCharacteristic().getDevices().get(0).getAirThroughputInterface().getAirFlow(resource.getAirThroughputInterface().getAirThroughputState()); 56 //airThroughput = 0.28; 57 } 48 58 } catch (NoSuchFieldException e) { 49 59 // TODO Auto-generated catch block … … 51 61 } 52 62 53 Integer resId = Integer.parseInt(resource.getName().split("_")[1]); 63 //Integer resId = Integer.parseInt(resource.getName().split("_")[1]); 64 //ComputingResource computingResource = (ComputingResource) resource; 54 65 //we estimate the air flow related to the outlets (nodes placed in the outlet row of RECS) 55 if(resId >= OUT_START_ID && resId <= OUT_END_ID){56 for(ComputingResource compResource: resource.getParent().getChildren()){57 Integer id = Integer.parseInt(compResource.getName().split("_")[1]);58 //we take into account the inlet air flow (nodes placed "behind" the given node)59 if(id - resId == 9 || id - resId == -9){60 try {61 airThroughput = airThroughput + compResource.getAirThroughputInterface().getAirFlow(compResource.getAirThroughputInterface().getAirThroughputState())/2;62 } catch (NoSuchFieldException e) {63 64 }65 }66 }67 }66 //if(resId >= OUT_START_ID && resId <= OUT_END_ID){ 67 // for(ComputingResource compResource: computingResource.getParent().getChildren()){ 68 // Integer id = Integer.parseInt(compResource.getName().split("_")[1]); 69 // //we take into account the inlet air flow (nodes placed "behind" the given node) 70 // if(id - resId == 9 || id - resId == -9){ 71 // try { 72 // airThroughput = airThroughput + compResource.getAirThroughputInterface().getAirFlow(compResource.getAirThroughputInterface().getAirThroughputState())/2; 73 // } catch (NoSuchFieldException e) { 74 // 75 // } 76 // } 77 // } 78 //} 68 79 69 80 return airThroughput; 70 } 81 }*/ 71 82 72 public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, ComputingResource resource) {83 /*public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 73 84 double tout = 0; 74 85 double tin = 21.3; … … 83 94 Integer resId = Integer.parseInt(resource.getName().split("_")[1]); 84 95 96 ComputingResource computingResource = (ComputingResource) resource; 97 85 98 //we estimate outlet temperature (related to the temperature of the nodes placed in outlet row) 86 for(ComputingResource compResource: resource.getParent().getChildren()){99 for(ComputingResource compResource: computingResource.getParent().getChildren()){ 87 100 Integer id = Integer.parseInt(compResource.getName().split("_")[1]); 88 101 //we take into account the power of nodes placed "behind" the given nodes … … 98 111 tout = tin + delta1 * (power1/(Q * C * ro)) + delta2 * (power2/(Q * C * ro));; 99 112 return tout; 100 } 113 }*/ 101 114 102 115 } -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeGroupEnergyEstimationPlugin.java
r913 r1207 1 1 package example.energy.coolemall; 2 2 3 import schedframe. Parameter;4 import schedframe.resources.computing. ComputingResource;3 import schedframe.resources.computing.coolemall.Node; 4 import schedframe.resources.computing.coolemall.NodeGroup; 5 5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 6 import schedframe.resources.computing.recs.Node; 7 import schedframe.resources.computing.recs.NodeGroup; 6 import schedframe.resources.devices.PhysicalResource; 8 7 import schedframe.scheduling.manager.tasks.JobRegistry; 9 8 import example.energy.BaseEnergyEstimationPlugin; … … 12 11 13 12 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 14 ComputingResource resource) { 13 PhysicalResource resource) { 14 15 15 double powerConsumption = 0; 16 16 NodeGroup nodeGroup = (NodeGroup)resource; 17 for(Node cn: nodeGroup.getNodes()){17 for(Node node: nodeGroup.getNodes()){ 18 18 try{ 19 powerConsumption = powerConsumption + cn.getPowerInterface().getRecentPowerUsage().getValue();19 powerConsumption = powerConsumption + node.getPowerInterface().getRecentPowerUsage().getValue(); 20 20 } catch (Exception e){ 21 22 21 } 23 }24 try {25 powerConsumption = powerConsumption + nodeGroup.getPowerInterface().getPowerConsumption(nodeGroup.getPowerInterface().getPowerState());26 } catch (NoSuchFieldException e) {27 Parameter param = nodeGroup.getResourceCharacteristic().getParameters().get("maxPower");28 if(param != null)29 powerConsumption = powerConsumption + Double.valueOf(param.get(0).getContent());30 22 } 31 23 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/ProcessorEnergyEstimationPlugin.java
r913 r1207 1 1 package example.energy.coolemall; 2 2 3 import schedframe.Parameter;3 import dcworms.schedframe.scheduling.ExecTask; 4 4 import schedframe.resources.ResourceStatus; 5 import schedframe.resources.computing.Co mputingResource;5 import schedframe.resources.computing.Core; 6 6 import schedframe.resources.computing.Processor; 7 7 import schedframe.resources.computing.profiles.energy.EnergyEvent; 8 8 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 9 import schedframe.resources.devices.PhysicalResource; 9 10 import schedframe.scheduling.manager.tasks.JobRegistry; 11 import schedframe.scheduling.manager.tasks.JobRegistryImpl; 12 import schedframe.scheduling.tasks.phases.PhaseBehaviour; 10 13 import example.energy.BaseEnergyEstimationPlugin; 11 14 … … 13 16 14 17 public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 15 ComputingResource resource) { 16 double powerConsumption = 0; 18 PhysicalResource resource) { 19 20 /*double powerConsumption = 0; 17 21 Processor cpu = (Processor)resource; 18 22 if(resource.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)) … … 38 42 } 39 43 } 44 return powerConsumption;*/ 45 double powerConsumption = 0; 46 Processor proc = (Processor)resource; 47 if(resource.getPowerInterface().getPowerState().equals(StandardPowerStateName.OFF)) 48 return 0; 49 else { 50 double processorLoad; 51 double sumCoresLoad = 0; 52 53 int nrOfThreadsOnCpu = 1; 54 55 if(proc.getResourceCharacteristic().getParameters().get("product") != null){ 56 String productName = proc.getResourceCharacteristic().getParameters().get("product").get(0).getContent(); 57 if(productName.equals("Fusion G - T40N")) 58 nrOfThreadsOnCpu = CoolEmAllTestbedMeasurements.Fusion_G_T40N_NR_OF_THREADS; 59 else if(productName.equals("Atom - D510")) 60 nrOfThreadsOnCpu = CoolEmAllTestbedMeasurements.Atom_D510_NR_OF_THREADS; 61 else if(productName.equals("Atom - N2600")) 62 nrOfThreadsOnCpu = CoolEmAllTestbedMeasurements.Atom_N2600_NR_OF_THREADS; 63 else if(productName.equals("Core i7 - 2715QE")) 64 nrOfThreadsOnCpu = CoolEmAllTestbedMeasurements.Core_i7_2715QE_NR_OF_THREADS; 65 else if(productName.equals("Core i7 - 3615QE")) 66 nrOfThreadsOnCpu = CoolEmAllTestbedMeasurements.Core_i7_3615QE_NR_OF_THREADS; 67 } 68 69 for(Core core: proc.getCores()){ 70 71 if(core.getStatus().equals(ResourceStatus.BUSY)){ 72 JobRegistry jr = new JobRegistryImpl(core.getFullName()); 73 for(ExecTask task: jr.getRunningTasks()){ 74 double cpuUsage = 100; 75 double nrOfThreadsOfApplciation = 1; 76 for(PhaseBehaviour pb: task.getCurrentResourceConsumption().getBehaviourList()){ 77 if(pb.getResouceName().equals("PM_CPU_Usage")){ 78 cpuUsage = pb.getUtilization(); 79 } 80 if(pb.getResouceName().equals("PM_Threads")){ 81 nrOfThreadsOfApplciation = pb.getUtilization(); 82 break; 83 } 84 } 85 sumCoresLoad = sumCoresLoad + cpuUsage * (nrOfThreadsOnCpu / nrOfThreadsOfApplciation); 86 } 87 } 88 } 89 processorLoad = 100 * sumCoresLoad/proc.getCores().size(); 90 double lowestLoadLevel = 100; 91 double highestLoadLevel = 0; 92 if(proc.getPowerInterface().getPState().getLoadPowerUsage().containsKey(new Double(processorLoad))){ 93 powerConsumption = proc.getPowerInterface().getPState().getLoadPowerUsage().get(new Double(processorLoad)); 94 //System.out.println("power from profile: " + powerConsumption); 95 } else { 96 for(Double load: proc.getPowerInterface().getPState().getLoadPowerUsage().keySet()){ 97 if(lowestLoadLevel > load){ 98 lowestLoadLevel = load; 99 } 100 if(highestLoadLevel < load){ 101 highestLoadLevel = load; 102 } 103 } 104 if(processorLoad == 0){ 105 try{ 106 powerConsumption = proc.getPowerInterface().getSupportedPowerStates().get(0).getPowerUsage(); 107 //System.out.println("load = 0; power = idle power usage: " + powerConsumption); 108 } catch (Exception e){ 109 powerConsumption = 0.7 * proc.getPowerInterface().getPState().getLoadPowerUsage().get(new Double(highestLoadLevel)); 110 //System.out.println("error load = 0; power = 0.7 max power: " + powerConsumption); 111 } 112 } else { 113 114 double lowerLoadLevel = lowestLoadLevel; 115 double higherLoadLevel = highestLoadLevel; 116 117 try{ 118 119 for(Double load: proc.getPowerInterface().getPState().getLoadPowerUsage().keySet()){ 120 if(processorLoad > load){ 121 lowerLoadLevel = load; 122 } 123 else if(processorLoad < load){ 124 higherLoadLevel = load; 125 break; 126 } 127 } 128 double powerBelow; 129 double powerAbove; 130 double a; 131 double b; 132 if(lowerLoadLevel != higherLoadLevel) 133 { 134 powerBelow = proc.getPowerInterface().getPState().getLoadPowerUsage().get(lowerLoadLevel); 135 powerAbove = proc.getPowerInterface().getPState().getLoadPowerUsage().get(higherLoadLevel); 136 a = (powerAbove - powerBelow)/(higherLoadLevel - lowerLoadLevel); 137 b = powerAbove - a * higherLoadLevel; 138 } else { 139 powerBelow = proc.getPowerInterface().getPState().getLoadPowerUsage().get(lowestLoadLevel); 140 powerAbove = proc.getPowerInterface().getPState().getLoadPowerUsage().get(highestLoadLevel); 141 a = (powerAbove - powerBelow)/(highestLoadLevel - lowestLoadLevel); 142 b = powerAbove - a * highestLoadLevel; 143 } 144 powerConsumption = a * processorLoad + b; 145 /*System.out.println("a" +lowestLoadLevel + ";" +highestLoadLevel); 146 System.out.println("b" +lowerLoadLevel + ";" +higherLoadLevel); 147 System.out.println("c" +powerBelow + ";" +powerAbove); 148 System.out.println(resource.getFullName() + "load: " + processorLoad + "linear power estimation " + powerConsumption);*/ 149 150 } catch (Exception e){ 151 powerConsumption = 0.7 * proc.getPowerInterface().getPState().getLoadPowerUsage().get(new Double(highestLoadLevel)); 152 //System.out.println("error; power = 0.7 max power: " + powerConsumption); 153 } 154 } 155 } 156 } 157 158 159 powerConsumption = powerConsumption - CoolEmAllTestbedMeasurements.SINGLE_FAN_ON_POWER_CONSUMPTION; 160 //System.out.println("estiamted power consumption: " + powerConsumption); 40 161 return powerConsumption; 41 162 }
Note: See TracChangeset
for help on using the changeset viewer.