Changeset 1207 for DCWoRMS/branches/coolemall/src/example/localplugin
- Timestamp:
- 11/26/13 11:56:07 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src/example/localplugin
- Files:
-
- 8 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/example/localplugin/FCFSBF_ClusterPlugin.java
r575 r1207 145 145 List<ComputingResource> nodes; 146 146 Properties properties = new Properties(); 147 properties.setProperty("type", StandardResourceType. ComputingNode.getName());147 properties.setProperty("type", StandardResourceType.Node.getName()); 148 148 // properties.setProperty("status", ResourceStatus.FREE.toString()); 149 149 nodes = (List<ComputingResource>) unitsManager.filterResources(properties); 150 150 151 151 //always return the same node from the list 152 return nodes.get(0).get Name();152 return nodes.get(0).getFullName(); 153 153 } 154 154 -
DCWoRMS/branches/coolemall/src/example/localplugin/FCFSBF_ConsolidationClusterPlugin.java
r574 r1207 98 98 } 99 99 } 100 ProcessingElements result = new ProcessingElements(node.get Name());100 ProcessingElements result = new ProcessingElements(node.getFullName()); 101 101 result.addAll(choosenResources); 102 102 map.put(StandardResourceUnitName.PE, result); -
DCWoRMS/branches/coolemall/src/example/localplugin/FCFSBF_FanManagementClusterPlugin.java
r778 r1207 8 8 9 9 import schedframe.events.scheduling.SchedulingEvent; 10 import schedframe.resources.StandardResourceType; 10 11 import schedframe.resources.computing.ComputingNode; 11 12 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirThroughputStateName; 12 13 import schedframe.resources.computing.profiles.energy.airthroughput.UserAirThroughputStateName; 14 import schedframe.resources.devices.Device; 13 15 import schedframe.scheduling.manager.resources.ClusterResourceManager; 14 16 import schedframe.scheduling.manager.resources.ResourceManager; … … 54 56 if (node != null) { 55 57 //if there are two or more tasks ( running on the given node then 56 if(new JobRegistryImpl(node.getName()).getRunningTasks().size() > 0) 57 node.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("FAN_ON_TURBO")); 58 else 59 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 58 if(new JobRegistryImpl(node.getFullName()).getRunningTasks().size() > 0){ 59 List<Device> devices = node.getResourceCharacteristic().getDevices(); 60 for(Device dev : devices){ 61 if(dev.getType().equals(StandardResourceType.Fan)){ 62 dev.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("FAN_ON_TURBO")); 63 } 64 } 65 } 66 else { 67 List<Device> devices = node.getResourceCharacteristic().getDevices(); 68 for(Device dev : devices){ 69 if(dev.getType().equals(StandardResourceType.Fan)){ 70 dev.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.ON); 71 } 72 } 73 } 60 74 notSelectedNodes.remove(node); 61 addToSchedulingPlan(plan, task, node.get Name());75 addToSchedulingPlan(plan, task, node.getFullName()); 62 76 } 63 77 } … … 98 112 private void adjustOtherFans(List<ComputingNode> nodes){ 99 113 for(ComputingNode node : nodes){ 114 List<Device> devices = node.getResourceCharacteristic().getDevices(); 100 115 if(node.getFreeProcessorsNumber() == node.getProcessorsNumber()){ 101 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_OFF); 102 } else if(new JobRegistryImpl(node.getName()).getRunningTasks().size() > 1) 103 node.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("FAN_ON_TURBO")); 104 else 105 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 116 for(Device dev : devices){ 117 if(dev.getType().equals(StandardResourceType.Fan)){ 118 dev.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.OFF); 119 } 120 } 121 } else if(new JobRegistryImpl(node.getFullName()).getRunningTasks().size() > 1){ 122 for(Device dev : devices){ 123 if(dev.getType().equals(StandardResourceType.Fan)){ 124 dev.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("FAN_ON_TURBO")); 125 } 126 } 127 } 128 else { 129 for(Device dev : devices){ 130 if(dev.getType().equals(StandardResourceType.Fan)){ 131 dev.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.ON); 132 } 133 } 134 } 106 135 } 107 136 } -
DCWoRMS/branches/coolemall/src/example/localplugin/FCFSBF_NodePowerManagementClusterPlugin.java
r531 r1207 90 90 } 91 91 } 92 ProcessingElements result = new ProcessingElements(nodes.get(0).get Name());92 ProcessingElements result = new ProcessingElements(nodes.get(0).getFullName()); 93 93 result.addAll(choosenResources); 94 94 map.put(StandardResourceUnitName.PE, result); -
DCWoRMS/branches/coolemall/src/example/localplugin/FCFSBF_RandomClusterPlugin.java
r574 r1207 61 61 List<ComputingNode> nodes = resourceManager.getComputingNodes(); 62 62 int nodeIdx = rand.nextInt(nodes.size()); 63 return nodes.get(nodeIdx).get Name();63 return nodes.get(nodeIdx).getFullName(); 64 64 } 65 65 -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/FCFSBF_RECS_SP.java
r1100 r1207 6 6 import schedframe.events.scheduling.SchedulingEvent; 7 7 import schedframe.exceptions.ResourceException; 8 import schedframe.resources. CoolEmAllResourceType;8 import schedframe.resources.StandardResourceType; 9 9 import schedframe.resources.computing.ComputingResource; 10 10 import schedframe.scheduling.manager.resources.ClusterResourceManager; … … 64 64 List<ComputingResource> nodes = null; 65 65 try { 66 nodes = (List<ComputingResource>) resourceManager.getResourcesOfType( CoolEmAllResourceType.Node);66 nodes = (List<ComputingResource>) resourceManager.getResourcesOfType(StandardResourceType.Node); 67 67 } catch (ResourceException e) { 68 68 // TODO Auto-generated catch block … … 70 70 } 71 71 int nodeIdx = rand.nextInt(nodes.size()); 72 return nodes.get(nodeIdx).get Name();72 return nodes.get(nodeIdx).getFullName(); 73 73 } 74 74 -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_Random_SP.java
r1099 r1207 1 1 package example.localplugin.coolemall.computebox1; 2 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 3 5 import java.util.List; 6 import java.util.Map; 4 7 import java.util.Random; 5 8 6 9 import schedframe.events.scheduling.SchedulingEvent; 7 10 import schedframe.exceptions.ResourceException; 8 import schedframe.resources.CoolEmAllResourceType; 11 import schedframe.resources.ResourceStatus; 12 import schedframe.resources.StandardResourceType; 9 13 import schedframe.resources.computing.ComputingResource; 14 import schedframe.resources.computing.Core; 15 import schedframe.resources.computing.coolemall.Node; 16 import schedframe.resources.units.ProcessingElements; 17 import schedframe.resources.units.ResourceUnit; 18 import schedframe.resources.units.ResourceUnitName; 19 import schedframe.resources.units.StandardResourceUnitName; 10 20 import schedframe.scheduling.manager.resources.ClusterResourceManager; 11 21 import schedframe.scheduling.manager.resources.ResourceManager; … … 17 27 import schedframe.scheduling.queue.TaskQueueList; 18 28 import schedframe.scheduling.tasks.TaskInterface; 29 import testbed_hpc.Node_Fan_Mapping; 19 30 import example.localplugin.BaseLocalSchedulingPlugin; 20 31 import gridsim.dcworms.DCWormsTags; … … 26 37 public CB1_FCFS_Random_SP () { 27 38 rand = new Random(47); 39 Node_Fan_Mapping.init(); 28 40 } 29 41 … … 49 61 if (task.getStatus() == DCWormsTags.READY) { 50 62 51 String nodeName = chooseRandomProvider(resourceManager);52 if ( nodeName!= null) {53 addToSchedulingPlan(plan, task, nodeName);63 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 64 if (choosenResources != null) { 65 addToSchedulingPlan(plan, task, choosenResources); 54 66 } 55 67 } … … 61 73 62 74 @SuppressWarnings("unchecked") 63 private String chooseRandomProvider(ClusterResourceManager resourceManager) { 64 List<ComputingResource> nodes = null; 75 private Map<ResourceUnitName, ResourceUnit> chooseResourcesForExecution( 76 ClusterResourceManager resourceManager, TaskInterface<?> task) { 77 78 Map<ResourceUnitName, ResourceUnit> map = new HashMap<ResourceUnitName, ResourceUnit>(); 79 80 List<Node> nodes = null; 65 81 try { 66 nodes = (List< ComputingResource>) resourceManager.getResourcesOfType(CoolEmAllResourceType.Node);82 nodes = (List<Node>) resourceManager.getResourcesOfType(StandardResourceType.Node); 67 83 } catch (ResourceException e) { 68 84 // TODO Auto-generated catch block 69 85 e.printStackTrace(); 70 86 } 71 int nodeIdx = rand.nextInt(nodes.size()); 72 return nodes.get(nodeIdx).getName(); 87 List<Node> avNodes = filterNodes(nodes, task); 88 if(avNodes.size() == 0) 89 return null; 90 Node node = randomNode(avNodes); 91 int cpuRequest; 92 try { 93 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 94 } catch (NoSuchFieldException e) { 95 cpuRequest = 0; 96 } 97 98 if (cpuRequest != 0) { 99 100 List<ComputingResource> choosenResources = new ArrayList<ComputingResource>(); 101 102 List<Core> cores = node.getCores(); 103 for (int i = 0; i < cores.size() && cpuRequest > 0; i++) { 104 if (cores.get(i).getStatus() == ResourceStatus.FREE) { 105 choosenResources.add(cores.get(i)); 106 cpuRequest--; 107 } 108 } 109 if (cpuRequest > 0) { 110 return null; 111 } 112 //choosenResources.add(node.getProcessors().get(0)); 113 ProcessingElements pe = new ProcessingElements(); 114 pe.addAll(choosenResources); 115 map.put(StandardResourceUnitName.PE, pe); 116 return map; 117 } 118 return null; 119 } 120 121 private List<Node> filterNodes(List<Node> nodes, TaskInterface<?> task){ 122 List<Node> filteredNodes = new ArrayList<Node>(); 123 int cpuRequest; 124 try { 125 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 126 } catch (NoSuchFieldException e) { 127 cpuRequest = 0; 128 } 129 for (Node node : nodes) { 130 131 if (cpuRequest != 0) { 132 133 List<Core> cores = node.getCores(); 134 if (cores.size() < cpuRequest) { 135 if(cores.size() == 0){ 136 if(node.getProcessors().size() < cpuRequest) 137 continue; 138 } 139 } 140 141 int freeCores = 0; 142 for(Core core: cores){ 143 if(core.getStatus() == ResourceStatus.FREE) 144 freeCores++; 145 } 146 147 if(freeCores < cpuRequest) 148 continue; 149 150 filteredNodes.add(node); 151 } 152 } 153 154 return filteredNodes; 155 } 156 157 private Node randomNode(List<Node> nodes){ 158 return nodes.get(rand.nextInt(nodes.size())); 73 159 } 74 160 -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/recs/RECS_FCFS_Consolidation_SP.java
r1102 r1207 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 11 import schedframe.exceptions.ResourceException; 12 import schedframe.resources.CoolEmAllResourceType;13 12 import schedframe.resources.ResourceStatus; 13 import schedframe.resources.StandardResourceType; 14 14 import schedframe.resources.computing.ComputingResource; 15 15 import schedframe.resources.computing.Processor; 16 import schedframe.resources.computing.coolemall.Node; 16 17 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 17 import schedframe.resources.computing.recs.Node;18 18 import schedframe.resources.units.Memory; 19 19 import schedframe.resources.units.ProcessingElements; … … 55 55 List<Node> nodes; 56 56 try { 57 nodes = (List<Node>) resourceManager.getResourcesOfType( CoolEmAllResourceType.Node);57 nodes = (List<Node>) resourceManager.getResourcesOfType(StandardResourceType.Node); 58 58 } catch (ResourceException e) { 59 59 break; … … 140 140 } 141 141 } 142 ProcessingElements result = new ProcessingElements(node.get Name());142 ProcessingElements result = new ProcessingElements(node.getFullName()); 143 143 result.addAll(choosenResources); 144 144 map.put(StandardResourceUnitName.PE, result); … … 183 183 private void turnOffIdleNodes(List<Node> nodes){ 184 184 for(Node node : nodes){ 185 JobRegistry jr = new JobRegistryImpl(node.get Name());185 JobRegistry jr = new JobRegistryImpl(node.getFullName()); 186 186 if(jr.getRunningTasks().size() == 0) 187 187 node.getPowerInterface().setPowerState(StandardPowerStateName.OFF); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/recs/RECS_FCFS_LB_SP.java
r1102 r1207 5 5 import schedframe.events.scheduling.SchedulingEvent; 6 6 import schedframe.exceptions.ResourceException; 7 import schedframe.resources. CoolEmAllResourceType;7 import schedframe.resources.StandardResourceType; 8 8 import schedframe.resources.computing.ComputingResource; 9 import schedframe.resources.computing. recs.Node;9 import schedframe.resources.computing.coolemall.Node; 10 10 import schedframe.scheduling.manager.resources.ClusterResourceManager; 11 11 import schedframe.scheduling.manager.resources.ResourceManager; … … 62 62 List<ComputingResource> nodes = null; 63 63 try { 64 nodes = (List<ComputingResource>) resourceManager.getResourcesOfType( CoolEmAllResourceType.Node);64 nodes = (List<ComputingResource>) resourceManager.getResourcesOfType(StandardResourceType.Node); 65 65 } catch (ResourceException e) { 66 66 // TODO Auto-generated catch block … … 68 68 } 69 69 int nodeIdx = findLeastLoadedResourceIdx(nodes); 70 return nodes.get(nodeIdx).get Name();70 return nodes.get(nodeIdx).getFullName(); 71 71 } 72 72 … … 77 77 for(int i = 0; i < nodes.size(); i++){ 78 78 Node node = (Node) nodes.get(i); 79 JobRegistry jr = new JobRegistryImpl(node.get Name());79 JobRegistry jr = new JobRegistryImpl(node.getFullName()); 80 80 int totalLoad = jr.getRunningTasks().size(); 81 81 if(totalLoad < minLoad){ -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/recs/RECS_FCFS_Random_SP.java
r1103 r1207 2 2 3 3 import java.util.ArrayList; 4 import java.util.HashMap; 4 5 import java.util.List; 6 import java.util.Map; 5 7 import java.util.Random; 6 8 7 9 import schedframe.events.scheduling.SchedulingEvent; 8 10 import schedframe.exceptions.ResourceException; 9 import schedframe.resources.CoolEmAllResourceType; 11 import schedframe.resources.ResourceStatus; 12 import schedframe.resources.StandardResourceType; 10 13 import schedframe.resources.computing.ComputingNode; 11 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirThroughputStateName; 14 import schedframe.resources.computing.ComputingResource; 15 import schedframe.resources.computing.Core; 16 import schedframe.resources.computing.profiles.energy.airthroughput.UserAirThroughputStateName; 17 import schedframe.resources.devices.Device; 18 import schedframe.resources.units.ProcessingElements; 19 import schedframe.resources.units.ResourceUnit; 20 import schedframe.resources.units.ResourceUnitName; 21 import schedframe.resources.units.StandardResourceUnitName; 12 22 import schedframe.scheduling.manager.resources.ClusterResourceManager; 13 23 import schedframe.scheduling.manager.resources.ResourceManager; … … 19 29 import schedframe.scheduling.queue.TaskQueueList; 20 30 import schedframe.scheduling.tasks.TaskInterface; 31 import testbed_hpc.Node_Fan_Mapping; 21 32 import example.localplugin.BaseLocalSchedulingPlugin; 22 33 import gridsim.dcworms.DCWormsTags; … … 28 39 public RECS_FCFS_Random_SP () { 29 40 rand = new Random(47); 41 Node_Fan_Mapping.init(); 30 42 } 31 43 … … 47 59 List<ComputingNode> notSelectedNodes = null; 48 60 try { 49 notSelectedNodes = (List<ComputingNode>) resourceManager.getResourcesOfType( CoolEmAllResourceType.Node);61 notSelectedNodes = (List<ComputingNode>) resourceManager.getResourcesOfType(StandardResourceType.Node); 50 62 } catch (ResourceException e) { 51 63 // TODO Auto-generated catch block … … 57 69 // if status of the tasks in READY 58 70 if (task.getStatus() == DCWormsTags.READY) { 59 ComputingNode node = chooseRandomProvider(resourceManager); 71 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 72 if (choosenResources != null) { 73 addToSchedulingPlan(plan, task, choosenResources); 74 } 75 /*ComputingNode node = chooseRandomProvider(resourceManager); 60 76 if (node != null) { 61 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON);77 //node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 62 78 notSelectedNodes.remove(node); 63 79 addToSchedulingPlan(plan, task, node.getName()); 64 } 80 }*/ 65 81 } 66 82 } … … 75 91 List<ComputingNode> nodes = null; 76 92 try { 77 nodes = (List<ComputingNode>) resourceManager.getResourcesOfType( CoolEmAllResourceType.Node);93 nodes = (List<ComputingNode>) resourceManager.getResourcesOfType(StandardResourceType.Node); 78 94 } catch (ResourceException e) { 79 95 // TODO Auto-generated catch block … … 94 110 return filteredNodes; 95 111 } 112 113 private Map<ResourceUnitName, ResourceUnit> chooseResourcesForExecution( 114 ClusterResourceManager resourceManager, TaskInterface<?> task) { 115 116 Map<ResourceUnitName, ResourceUnit> map = new HashMap<ResourceUnitName, ResourceUnit>(); 117 118 List<ComputingNode> nodes = null; 119 try { 120 nodes = (List<ComputingNode>) resourceManager.getResourcesOfType(StandardResourceType.Node); 121 } catch (ResourceException e1) { 122 // TODO Auto-generated catch block 123 e1.printStackTrace(); 124 } 125 List<ComputingNode> avNodes = filterNodes(nodes, task); 126 if(avNodes.size() == 0) 127 return null; 128 ComputingNode node = randomNode(avNodes); 129 130 int cpuRequest; 131 try { 132 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 133 } catch (NoSuchFieldException e) { 134 cpuRequest = 0; 135 } 136 137 if (cpuRequest != 0) { 138 139 List<Core> cores = node.getProcessors().get(0).getCores(); 140 141 List<ComputingResource> choosenResources = new ArrayList<ComputingResource>(); 142 for (int i = 0; i < cores.size(); i++) { 143 if (cores.get(i).getStatus() == ResourceStatus.FREE) { 144 //choosenResources.add(cores.get(i)); 145 cpuRequest--; 146 } 147 } 148 if (cpuRequest > 0) { 149 return null; 150 } 151 choosenResources.add(node.getProcessors().get(0)); 152 ProcessingElements pe = new ProcessingElements(); 153 pe.addAll(choosenResources); 154 map.put(StandardResourceUnitName.PE, pe); 155 return map; 156 } 157 return null; 158 } 159 160 private List<ComputingNode> filterNodes(List<ComputingNode> nodes, TaskInterface<?> task){ 161 List<ComputingNode> filteredNodes = new ArrayList<ComputingNode>(); 162 for (ComputingNode node : nodes) { 163 int cpuRequest; 164 try { 165 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 166 } catch (NoSuchFieldException e) { 167 cpuRequest = 0; 168 } 169 170 if (cpuRequest != 0) { 171 172 List<Core> cores = node.getProcessors().get(0).getCores(); 173 if (cores.size() < cpuRequest) { 174 if(cores.size() == 0){ 175 if(node.getProcessors().size() < cpuRequest) 176 continue; 177 } 178 } 179 180 int freeCores = 0; 181 for(Core core: cores){ 182 if(core.getStatus() == ResourceStatus.FREE) 183 freeCores++; 184 } 185 186 if(freeCores != cores.size()) 187 continue; 188 189 filteredNodes.add(node); 190 } 191 } 192 193 return filteredNodes; 194 } 195 196 private ComputingNode randomNode(List<ComputingNode> nodes){ 197 return nodes.get(rand.nextInt(nodes.size())); 198 } 199 96 200 private void adjustOtherFans(List<ComputingNode> nodes) { 97 201 for (ComputingNode node : nodes) { 202 98 203 if (node.getProcessors().size() == node.getFreeProcessorsNumber()) { 99 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_OFF); 204 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 205 if(device.getFullName().equals(Node_Fan_Mapping.getNode_fan().get(node.getFullName()))){ 206 device.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("Off")); 207 break; 208 } 209 } 210 100 211 } else { 101 node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 212 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 213 if(device.getFullName().equals(Node_Fan_Mapping.getNode_fan().get(node.getFullName()))){ 214 device.getAirThroughputInterface().setAirThroughputState(new UserAirThroughputStateName("On")); 215 break; 216 } 217 } 102 218 } 103 219 }
Note: See TracChangeset
for help on using the changeset viewer.