Changeset 269 for xssim/branches/tpiontek/src/example/localplugin/FCFSConsolidationClusterLocalPlugin.java
- Timestamp:
- 04/13/12 09:49:40 (13 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
xssim/branches/tpiontek/src/example/localplugin/FCFSConsolidationClusterLocalPlugin.java
r192 r269 6 6 import java.util.Collections; 7 7 import java.util.Comparator; 8 import java.util.HashMap;9 8 import java.util.List; 10 import java.util.Map;11 9 import java.util.Properties; 12 10 13 import schedframe.resources.units.Memory; 14 import schedframe.resources.units.ResourceUnit; 11 import schedframe.resources.PowerState; 15 12 import schedframe.scheduling.TaskInterface; 16 13 import schedframe.scheduling.events.SchedulingEvent; 17 14 import schedframe.scheduling.plugin.grid.ModuleList; 18 import schedframe.scheduling.utils.ResourceParameterName;19 15 import test.rewolucja.GSSIMJobInterface; 20 import test.rewolucja.resources.ProcessingElements;21 import test.rewolucja.resources.ResourceStatus;22 16 import test.rewolucja.resources.manager.implementation.ClusterResourceManager; 23 17 import test.rewolucja.resources.manager.interfaces.ResourceManagerInterface; 24 import test.rewolucja.resources.physical.base.ComputingResource;25 18 import test.rewolucja.resources.physical.implementation.ComputingNode; 26 19 import test.rewolucja.scheduling.JobRegistryInterface; … … 31 24 32 25 public class FCFSConsolidationClusterLocalPlugin extends BaseLocalPlugin { 26 27 private int scenario = 1; 33 28 34 29 public FCFSConsolidationClusterLocalPlugin () { … … 56 51 if (task.getStatus() == Gridlet.READY) { 57 52 58 Map<ResourceParameterName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 59 if (choosenResources != null) { 60 addToSchedulingPlan(plan, task, choosenResources); 53 ComputingNode node = chooseResourcesForExecution(resourceManager, PowerState.ON, task); 54 if (node != null) { 55 System.out.println("Uruchamiam na zasobie: " + node.getName()); 56 addToSchedulingPlan(plan, task, node.getName()); 61 57 } 58 else 59 { 60 node = chooseResourcesForExecution(resourceManager, PowerState.OFF, task); 61 62 if( node != null) 63 { 64 System.out.println("Wlaczam wezel: " + node.getName()); 65 node.getPowerInterface().setPowerState( PowerState.ON); 66 i--; 67 } 68 } 62 69 } 63 70 } 71 72 switch( scenario) 73 { 74 case 0: break; 75 case 1: 76 List<ComputingNode> nodes = resourceManager.getComputingNodes(); 77 for( ComputingNode node : nodes) 78 if( node.getFreeProcessors().size() == node.getProcessorsNumber()) 79 { 80 node.getPowerInterface().setPowerState( PowerState.OFF); 81 } 82 break; 83 } 84 64 85 65 86 break; … … 68 89 } 69 90 70 private HashMap<ResourceParameterName, ResourceUnit> chooseResourcesForExecution(ClusterResourceManager resourceManager, TaskInterface<?> task) {91 private ComputingNode chooseResourcesForExecution(ClusterResourceManager resourceManager, PowerState status, TaskInterface<?> task) { 71 92 72 93 List<ComputingNode> nodes = resourceManager.getComputingNodes(); 73 nodes = findSuitableNodes(task, nodes); 94 nodes = findSuitableNodes(task, status, nodes); 95 74 96 Collections.sort(nodes, new Comparator<ComputingNode>(){ 75 97 public int compare(ComputingNode node1, ComputingNode node2){ … … 77 99 } 78 100 }); 101 79 102 if(nodes.size() > 0) 80 { 81 ComputingNode node = nodes.get(0); 82 HashMap<ResourceParameterName, ResourceUnit> map = new HashMap<ResourceParameterName, ResourceUnit>(); 83 List<ComputingResource> choosenResources = new ArrayList<ComputingResource>(); 84 int cpuRequest; 85 try { 86 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 87 } catch (NoSuchFieldException e) { 88 cpuRequest = 1; 89 } 90 for (int i = 0; i < node.getProcessors().size() && cpuRequest > 0; i++) { 91 if (node.getProcessors().get(i).getStatus() == ResourceStatus.FREE) { 92 choosenResources.add(node.getProcessors().get(i)); 93 cpuRequest--; 94 } 95 } 96 ProcessingElements result = new ProcessingElements(node.getName()); 97 result.addAll(choosenResources); 98 map.put(ResourceParameterName.PROCESSINGELEMENTS, result); 99 100 int memoryRequest; 101 try { 102 memoryRequest = Double.valueOf(task.getMemoryRequest()).intValue(); 103 } catch (NoSuchFieldException e) { 104 memoryRequest = 0; 105 } 106 if (memoryRequest != 0) { 107 Memory memory = new Memory(node.getMemoryUnit(), memoryRequest, memoryRequest); 108 map.put(ResourceParameterName.MEMORY, memory); 109 } 110 return map; 111 } else 112 return null; 103 return nodes.get(0); 104 105 return null; 113 106 } 114 107 115 private List<ComputingNode> findSuitableNodes(TaskInterface<?> task, List<ComputingNode> nodes){108 private List<ComputingNode> findSuitableNodes(TaskInterface<?> task, PowerState status, List<ComputingNode> nodes){ 116 109 int cpuRequest; 117 110 try { … … 120 113 cpuRequest = 1; 121 114 } 122 int memoryRequest; 123 try { 124 memoryRequest = Double.valueOf(task.getMemoryRequest()).intValue(); 125 } catch (NoSuchFieldException e) { 126 memoryRequest = 0; 115 116 List<ComputingNode> suitableNodes = new ArrayList<ComputingNode>(); 117 for(ComputingNode node: nodes) 118 { 119 switch( status) 120 { 121 case ON: 122 if(node.getFreeProcessorsNumber() >= cpuRequest) 123 suitableNodes.add(node); 124 break; 125 case OFF: 126 if( node.getProcessorsNumber() >= cpuRequest) 127 suitableNodes.add(node); 128 break; 129 } 127 130 } 128 List<ComputingNode> suitableNodes = new ArrayList<ComputingNode>(); 129 for(ComputingNode node: nodes){ 130 if(node.getFreeProcessorsNumber() >= cpuRequest && node.getFreeMemory() >= memoryRequest){ 131 suitableNodes.add(node); 132 } 133 } 131 134 132 return suitableNodes; 135 133 }
Note: See TracChangeset
for help on using the changeset viewer.