Changeset 1415 for DCWoRMS/branches/coolemall/src/example/localplugin
- Timestamp:
- 07/15/14 16:26:31 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/example/localplugin
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
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) {
Note: See TracChangeset
for help on using the changeset viewer.