Changeset 1415 for DCWoRMS/branches/coolemall/src/example
- Timestamp:
- 07/15/14 16:26:31 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/example
- Files:
-
- 2 added
- 1 deleted
- 27 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/example/energy/BaseEnergyEstimationPlugin.java
r1396 r1415 3 3 import schedframe.Parameters; 4 4 import schedframe.PluginConfiguration; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.plugin.EnergyEstimationPlugin; 7 import schedframe.resources.computing.profiles.energy.power.plugin.EnergyPluginConfiguration; 7 8 import schedframe.resources.devices.PhysicalResource; 8 9 import schedframe.scheduling.manager.tasks.JobRegistry; 10 import schemas.StringValueWithUnit; 9 11 10 12 public abstract class BaseEnergyEstimationPlugin implements EnergyEstimationPlugin { 11 13 14 EnergyPluginConfiguration plugConf; 15 12 16 @Override 13 17 public PluginConfiguration getConfiguration() { 14 // TODO Auto-generated method stub 15 return null; 18 return plugConf; 16 19 } 17 20 18 21 @Override 19 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {22 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 20 23 throw new RuntimeException("Not implemented."); 21 24 } 22 25 23 26 @Override 24 public double estimateTemperature( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {27 public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 25 28 throw new RuntimeException("Not implemented."); 26 29 } 27 30 28 31 public void init(Parameters parameters) { 29 32 plugConf = new EnergyPluginConfiguration(); 33 try{ 34 StringValueWithUnit powerCapLevel = parameters.get("powerCapLevel").get(0); 35 plugConf.setPowerCapLevel(Double.valueOf(powerCapLevel.getContent()).doubleValue()); 36 } catch(Exception e){ 37 plugConf.setPowerCapLevel(-1); 38 } 39 try{ 40 StringValueWithUnit powerFloorLevel = parameters.get("powerFloorLevel").get(0); 41 plugConf.setPowerFloorLevel(Double.valueOf(powerFloorLevel.getContent()).doubleValue()); 42 } catch(Exception e){ 43 plugConf.setPowerFloorLevel(-1); 44 } 30 45 } 31 46 -
DCWoRMS/branches/coolemall/src/example/energy/DataCenterEnergyEstimationPlugin.java
r1258 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.DataCenter; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.PowerUsage; 7 7 import schedframe.resources.devices.PhysicalResource; … … 11 11 12 12 @Override 13 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,13 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 14 14 PhysicalResource resource) { 15 15 double power = 0; -
DCWoRMS/branches/coolemall/src/example/energy/DefaultEnergyEstimationPlugin.java
r1207 r1415 2 2 3 3 import schedframe.resources.computing.ComputingResource; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 13 13 double powerConsumption = 0; 14 14 try { -
DCWoRMS/branches/coolemall/src/example/energy/NodeEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.Device; 7 7 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption = 0; -
DCWoRMS/branches/coolemall/src/example/energy/ProcessorEnergyEstimationPlugin.java
r1207 r1415 3 3 import schedframe.resources.ResourceStatus; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 7 7 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption; … … 42 42 43 43 } 44 if(cpu.getLoadInterface().getRecentUtilization().getValue() != 0.0){ 45 powerConsumption = powerConsumption * cpu.getLoadInterface().getRecentUtilization().getValue()/100; 46 } 44 47 return powerConsumption; 45 48 } -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB1EnergyEstimationPlugin.java
r1396 r1415 10 10 import schedframe.resources.computing.coolemall.ComputeBox1; 11 11 import schedframe.resources.computing.coolemall.NodeGroup; 12 import schedframe.resources.computing.profiles.energy. EnergyEvent;12 import schedframe.resources.computing.profiles.energy.ResourceEvent; 13 13 import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 14 14 import schedframe.resources.computing.profiles.energy.power.PState; … … 26 26 double powerUpgradeLevel = -1; 27 27 28 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,28 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 29 29 PhysicalResource resource) { 30 30 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB2EnergyEstimationPlugin.java
r1396 r1415 8 8 import schedframe.resources.computing.coolemall.ComputeBox1; 9 9 import schedframe.resources.computing.coolemall.NodeGroup; 10 import schedframe.resources.computing.profiles.energy. EnergyEvent;10 import schedframe.resources.computing.profiles.energy.ResourceEvent; 11 11 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 12 12 import schedframe.resources.devices.Device; … … 19 19 public class CB2EnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 20 20 21 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,21 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 22 22 PhysicalResource resource) { 23 23 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CoolingDeviceEnergyEstimationPlugin.java
r1396 r1415 7 7 import schedframe.resources.computing.coolemall.ComputeBox1; 8 8 import schedframe.resources.computing.coolemall.NodeGroup; 9 import schedframe.resources.computing.profiles.energy. EnergyEvent;9 import schedframe.resources.computing.profiles.energy.ResourceEvent; 10 10 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 11 11 import schedframe.resources.devices.Device; … … 18 18 public class CoolingDeviceEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 19 19 20 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {20 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 21 21 double airflow = 0; 22 22 return airflow; 23 23 } 24 24 25 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,25 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 26 26 PhysicalResource resource) { 27 27 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FanEnergyEstimationPlugin.java
r1396 r1415 1 1 package example.energy.coolemall; 2 2 3 import schedframe.events. scheduling.EventReason;3 import schedframe.events.EventReason; 4 4 import schedframe.resources.computing.ComputingResource; 5 5 import schedframe.resources.computing.Node; 6 import schedframe.resources.computing.profiles.energy. EnergyEvent;6 import schedframe.resources.computing.profiles.energy.ResourceEvent; 7 7 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 8 8 import schedframe.resources.devices.Device; … … 14 14 public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 15 15 16 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,16 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 17 17 PhysicalResource resource) { 18 18 … … 35 35 } 36 36 37 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {37 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 38 38 39 39 double airflow = 0; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpInletEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.coolemall.ComputeBox1; 6 6 import schedframe.resources.computing.coolemall.NodeGroup; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.devices.Device; 9 9 import schedframe.resources.devices.Fan; … … 15 15 public class FlowPumpInletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 … … 86 86 } 87 87 88 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {88 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 89 89 double airflow = 0; 90 90 double Vair_total; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpOutletEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.coolemall.ComputeBox1; 6 6 import schedframe.resources.computing.coolemall.NodeGroup; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.devices.Device; 9 9 import schedframe.resources.devices.Fan; … … 15 15 public class FlowPumpOutletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 … … 23 23 } 24 24 25 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {25 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 26 26 double airflow = 0; 27 27 double Vair_total; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/HeatsinkEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.Device; 7 7 import schedframe.resources.devices.PhysicalResource; … … 11 11 public class HeatsinkEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 12 12 13 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,13 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 14 14 PhysicalResource resource) { 15 15 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.Node; 6 6 import schedframe.resources.computing.Processor; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 9 9 import schedframe.resources.devices.Device; … … 15 15 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 double powerConsumption = 0; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeGroupEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.coolemall.NodeGroup; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.PhysicalResource; 7 7 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 public class NodeGroupEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/ProcessorEnergyEstimationPlugin.java
r1322 r1415 2 2 3 3 import schedframe.resources.computing.Processor; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 6 6 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 -
DCWoRMS/branches/coolemall/src/example/energy/device/FanEnergyEstimationPlugin.java
r1396 r1415 1 1 package example.energy.device; 2 2 3 import schedframe.events. scheduling.EventReason;4 import schedframe.resources.computing.profiles.energy. EnergyEvent;3 import schedframe.events.EventReason; 4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 6 6 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption = 0; … … 24 24 } 25 25 26 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {26 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 27 27 double airflow= 0; 28 28 try { -
DCWoRMS/branches/coolemall/src/example/load/DefaultLoadEstimationPlugin.java
r1396 r1415 2 2 3 3 import schedframe.resources.computing.ComputingResource; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 public class DefaultLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 11 11 12 public double estimateUtlization( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {12 public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 13 13 14 14 ComputingResource computingResource = (ComputingResource) resource; -
DCWoRMS/branches/coolemall/src/example/load/ProcessorLoadEstimationPlugin.java
r1396 r1415 2 2 3 3 import schedframe.resources.computing.Processor; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; 7 7 import schedframe.scheduling.manager.tasks.JobRegistryImpl; 8 import schedframe.scheduling.tasks.phases.Phase Behaviour;8 import schedframe.scheduling.tasks.phases.PhaseSystemLoad; 9 9 import dcworms.schedframe.scheduling.ExecTask; 10 10 11 11 public class ProcessorLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 12 12 13 public double estimateUtlization( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {13 public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 14 14 Processor proc = (Processor) resource; 15 15 double sumCoresLoad = 0; … … 26 26 double cpuUsage = 1 / nrOfThreadsOnCpu; 27 27 28 for(Phase Behaviour pb: task.getExecutionProfile().getCurrentResourceConsumption().getBehaviourList()){28 for(PhaseSystemLoad pb: task.getExecutionProfile().getCurrentResourceConsumption().getSystemLoad()){ 29 29 if(pb.getResouceName().equals("PM_CPU_Usage")){ 30 30 cpuUsage = pb.getUtilization(); -
DCWoRMS/branches/coolemall/src/example/localplugin/BaseLocalSchedulingPlugin.java
r1396 r1415 6 6 import schedframe.Parameters; 7 7 import schedframe.PluginConfiguration; 8 import schedframe.events.scheduling.SchedulingEvent;9 8 import schedframe.events.scheduling.SchedulingEventType; 10 import schedframe.events.scheduling.SchedulingResponseType;11 9 import schedframe.resources.units.ResourceUnit; 12 10 import schedframe.resources.units.ResourceUnitName; 13 11 import schedframe.scheduling.TaskList; 14 12 import schedframe.scheduling.manager.resources.ResourceManager; 15 import schedframe.scheduling.manager.tasks.JobRegistry;16 13 import schedframe.scheduling.plan.impl.Allocation; 17 14 import schedframe.scheduling.plan.impl.ScheduledTask; … … 31 28 public PluginConfiguration getConfiguration() { 32 29 return plugConf; 33 }34 35 public SchedulingResponseType handleResourceAllocationViolation(SchedulingEvent event,36 TaskQueueList queues,37 JobRegistry jobRegistry,38 ResourceManager resourceManager, ModuleList modules){39 SchedulingResponseType responeEvent = null;40 switch(event.getType()){41 case TASK_REQUESTED_TIME_EXPIRED:42 responeEvent = SchedulingResponseType.KILL_TASK;43 break;44 }45 return responeEvent;46 30 } 47 31 -
DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationHighPerf_NodePowMan_Plugin.java
r1396 r1415 7 7 import java.util.Comparator; 8 8 import java.util.HashMap; 9 import java.util.HashSet; 9 10 import java.util.List; 10 11 import java.util.Map; 12 import java.util.Set; 11 13 12 14 import schedframe.events.scheduling.SchedulingEvent; 13 import schedframe.exceptions.ResourceException;14 15 import schedframe.resources.ResourceStatus; 15 16 import schedframe.resources.StandardResourceType; … … 17 18 import schedframe.resources.computing.Node; 18 19 import schedframe.resources.computing.Processor; 19 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 20 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowState; 21 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowStateName; 22 import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 20 23 import schedframe.resources.computing.profiles.energy.power.PState; 21 24 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 22 25 import schedframe.resources.devices.Device; 26 import schedframe.resources.devices.Fan; 23 27 import schedframe.resources.units.ProcessingElements; 24 28 import schedframe.resources.units.ResourceUnit; … … 55 59 // check all tasks in queue 56 60 57 List<Node> notSelectedNodes = resourceManager.getNodes();61 Set<Node> selectedNodes = new HashSet<Node>(); 58 62 59 63 for (int i = 0; i < q.size(); i++) { … … 67 71 ProcessingElements pe = (ProcessingElements) choosenResources.get(StandardResourceUnitName.PE); 68 72 Node node = (Node) pe.get(0).getParent(); 69 notSelectedNodes.remove(node);73 selectedNodes.add(node); 70 74 } 71 75 } 72 76 } 73 turnOffIdleNodes(notSelectedNodes); 77 List<Node> nodes = resourceManager.getNodes(); 78 nodes.removeAll(selectedNodes); 79 turnOffIdleNodes(nodes); 80 for(Node node: resourceManager.getNodes()){ 81 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 82 if(device.getType().equals(StandardResourceType.Fan)){ 83 Fan fan = (Fan) device; 84 adjustFanSpeed(fan, selectedNodes); 85 break; 86 } 87 } 88 } 74 89 break; 75 90 } … … 84 99 Node node; 85 100 if(availableNodes.size() == 0){ 86 try { 87 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 88 } catch (ResourceException e) { 89 // TODO Auto-generated catch block 90 e.printStackTrace(); 91 } 101 102 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 103 92 104 Collections.sort(nodes, new PerformanceComparator()); 93 105 node = turnOnFirstNode(nodes, task); … … 112 124 } 113 125 } 126 114 127 ProcessingElements result = new ProcessingElements(node.getFullName()); 115 128 result.addAll(choosenResources); … … 167 180 continue; 168 181 else { 169 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){170 if(device.getType().equals(StandardResourceType.Fan)){171 device.getAirflowInterface().setAirflowState(StandardAirflowStateName.ON);172 break;173 }174 }175 182 node.getPowerInterface().setPowerState(StandardPowerStateName.ON); 176 183 startedNode = node; … … 190 197 191 198 if(freeProcessors == node.getProcessors().size()) { 192 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){193 if(device.getType().equals(StandardResourceType.Fan)){194 device.getAirflowInterface().setAirflowState(StandardAirflowStateName.OFF);195 break;196 }197 }198 199 node.getPowerInterface().setPowerState(StandardPowerStateName.OFF); 199 200 } 200 201 201 } 202 202 } … … 249 249 } 250 250 } 251 252 private void adjustFanSpeed(Fan fan, Set<Node> selectedNodes){ 253 AirflowStateName newState; 254 double totalLoad = 0; 255 double loadLevel; 256 ComputingResource compRes = fan.getComputingResource(); 257 for(ComputingResource n: compRes.getChildren()){ 258 if(fan.getChilledResources().contains(n.getFullName())){ 259 if(selectedNodes.contains(n)){ 260 totalLoad = totalLoad + 100; 261 } else { 262 totalLoad = totalLoad + n.getLoadInterface().getRecentUtilization().getValue(); 263 } 264 } 265 } 266 loadLevel = totalLoad / compRes.getChildren().size(); 267 268 double highestLoadLevel = 0; 269 270 if(fan.getAirflowInterface().supportAirflowState(new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()))){ 271 newState = new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()); 272 } else { 273 for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 274 Double load; 275 try{ 276 load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 277 }catch (Exception e){ 278 continue; 279 } 280 if(highestLoadLevel < load){ 281 highestLoadLevel = load; 282 } 283 } 284 if(loadLevel == 0){ 285 newState = new CustomAirflowStateName("OFF"); 286 } else { 287 288 double higherLoadLevel = highestLoadLevel; 289 290 for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 291 Double load; 292 try{ 293 load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 294 }catch (Exception e){ 295 continue; 296 } 297 if(loadLevel < load){ 298 higherLoadLevel = load; 299 } 300 } 301 newState = new CustomAirflowStateName("ON_" + Double.valueOf(higherLoadLevel).intValue()); 302 } 303 } 304 fan.getAirflowInterface().setAirflowState(newState); 305 } 251 306 252 307 } -
DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationLowPower_NodePowMan_Plugin.java
r1396 r1415 11 11 12 12 import schedframe.events.scheduling.SchedulingEvent; 13 import schedframe.exceptions.ResourceException;14 13 import schedframe.resources.ResourceStatus; 15 14 import schedframe.resources.StandardResourceType; … … 83 82 Node node; 84 83 if(availableNodes.size() == 0){ 85 try { 86 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 87 } catch (ResourceException e) { 88 // TODO Auto-generated catch block 89 e.printStackTrace(); 90 } 84 85 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 86 91 87 Collections.sort(nodes, new PowerComparator()); 92 88 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationHighPerf_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new FavourableNodeComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationLowPower_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new FavourableNodeComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationHighPerf_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 95 94 Node node; 96 95 if(avNodes.size() == 0){ 97 try { 98 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 99 } catch (ResourceException e) { 100 // TODO Auto-generated catch block 101 e.printStackTrace(); 102 } 96 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 103 99 Collections.sort(nodes, new PerformanceComparator()); 104 100 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationLowPower_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new PowerComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_PowerCapping_SP.java
r1396 r1415 78 78 if (task.getStatus() == DCWormsTags.READY) { 79 79 80 try { 81 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 82 break; 83 } catch (ResourceException e) { 84 // TODO Auto-generated catch block 85 e.printStackTrace(); 86 } 80 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 81 break; 82 87 83 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 88 84 if (choosenResources != null) { -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_SP.java
r1396 r1415 8 8 9 9 import schedframe.events.scheduling.SchedulingEvent; 10 import schedframe.exceptions.ResourceException;11 10 import schedframe.resources.ResourceStatus; 12 11 import schedframe.resources.StandardResourceType; … … 61 60 if (task.getStatus() == DCWormsTags.READY) { 62 61 63 try { 64 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 65 break; 66 } catch (ResourceException e) { 67 // TODO Auto-generated catch block 68 e.printStackTrace(); 69 } 62 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 63 break; 64 70 65 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 71 66 if (choosenResources != null) { -
DCWoRMS/branches/coolemall/src/example/timeestimation/coolemall/PhaseBasedTimeEstimationPlugin.java
r1396 r1415 5 5 6 6 import schedframe.events.scheduling.SchedulingEvent; 7 import schedframe.resources.computing.ComputingResource; 8 import schedframe.resources.computing.Core; 9 import schedframe.resources.computing.Processor; 10 import schedframe.resources.units.PEUnit; 11 import schedframe.resources.units.ProcessingElements; 7 12 import schedframe.resources.units.ResourceUnit; 8 13 import schedframe.resources.units.ResourceUnitName; 9 import schedframe. scheduling.tasks.phases.ResourceConsumption;14 import schedframe.resources.units.StandardResourceUnitName; 10 15 import dcworms.schedframe.scheduling.ExecTask; 11 import dcworms.schedframe.scheduling.Executable;12 16 import example.timeestimation.BaseTimeEstimationPlugin; 13 17 14 public class Phase TimeEstimationPlugin extends BaseTimeEstimationPlugin{18 public class PhaseBasedTimeEstimationPlugin extends BaseTimeEstimationPlugin{ 15 19 16 20 /* … … 18 22 * Requested calculation should be done based on the resources allocated for the task, 19 23 * task description and task completion percentage. 24 * 25 * Example implementation calculate the estimation based on processing power. 26 * There is also a simple assumption, that processing power is a linear function 27 * of number of allocated units and their speed. 20 28 */ 21 29 public double execTimeEstimation(SchedulingEvent event, ExecTask task, 22 30 Map<ResourceUnitName, ResourceUnit> allocatedResources, 23 31 double completionPercentage) { 32 24 33 25 Executable exec = (Executable) task; 34 //String taskFreqString = task.getExecutionProfile().getCurrentResourceConsumption().getReferenceHardware().get("cpu_maxfreq"); 35 //double taskFreq = Double.valueOf(taskFreqString); 26 36 27 ResourceConsumption resConsumption = exec.getExecutionProfile().getCurrentResourceConsumption(); 37 double speed = 0; 38 PEUnit peUnit = (PEUnit) allocatedResources.get(StandardResourceUnitName.PE); 39 40 try { 41 ProcessingElements pes = (ProcessingElements) peUnit; 42 for (ComputingResource compResource : pes) { 43 if(compResource instanceof Core) { 44 Core core = (Core) compResource; 45 speed = core.getProcessor().getPowerInterface().getPState().getFrequency(); 46 break; 47 } else if (compResource instanceof Processor) { 48 Processor processor = (Processor) compResource; 49 speed = processor.getPowerInterface().getPState().getFrequency(); 50 break; 51 } 52 } 53 } catch (Exception e){ 54 speed = peUnit.getSpeed(); 55 } 28 56 29 double execTime = (1 - completionPercentage/100) * resConsumption.getDuration(); 57 //speed = taskFreq; 58 int cnt = peUnit.getUsedAmount(); 30 59 60 double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getLenght() / (speed * cnt); 61 62 //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration() * (taskFreq / currentFrequency); 63 //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration(); 64 31 65 // if the result is very close to 0, but less then one millisecond then round this result to 0.001 32 66 if (Double.compare(execTime, 0.001) < 0) { … … 40 74 41 75 } 76 77
Note: See TracChangeset
for help on using the changeset viewer.