Changeset 269 for xssim/branches/tpiontek/src/example/localplugin/FCFSPreferedRandomClusterLocalPlugin.java
- Timestamp:
- 04/13/12 09:49:40 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
xssim/branches/tpiontek/src/example/localplugin/FCFSPreferedRandomClusterLocalPlugin.java
r258 r269 2 2 3 3 import gridsim.Gridlet; 4 import gridsim.gssim.ResourceHistoryItem; 5 import gridsim.gssim.SubmittedTask; 4 6 5 7 import java.util.ArrayList; … … 11 13 import schedframe.scheduling.TaskInterface; 12 14 import schedframe.scheduling.events.SchedulingEvent; 15 import schedframe.scheduling.events.TaskFinishedEvent; 13 16 import schedframe.scheduling.plugin.grid.ModuleList; 17 import schedframe.scheduling.utils.ResourceParameterName; 14 18 import test.rewolucja.GSSIMJobInterface; 15 19 import test.rewolucja.energy.profile.PStateType; 20 import test.rewolucja.resources.ProcessingElements; 16 21 import test.rewolucja.resources.ResourceStatus; 17 22 import test.rewolucja.resources.ResourceType; 18 23 import test.rewolucja.resources.manager.implementation.ClusterResourceManager; 19 24 import test.rewolucja.resources.manager.interfaces.ResourceManagerInterface; 25 import test.rewolucja.resources.physical.base.ComputingResource; 20 26 import test.rewolucja.resources.physical.implementation.ComputingNode; 21 27 import test.rewolucja.resources.physical.implementation.Processor; 22 28 import test.rewolucja.scheduling.JobRegistryInterface; 29 import test.rewolucja.scheduling.UsedResourceList; 23 30 import test.rewolucja.scheduling.plan.SchedulingPlanInterfaceNew; 24 31 import test.rewolucja.scheduling.plan.SchedulingPlanNew; … … 31 38 private boolean init = true; 32 39 33 int scenario = 2;40 int scenario = 3; 34 41 String prefered = null; 35 42 … … 59 66 // Different actions for different events are possible. 60 67 switch (event.getType()) { 68 case TASK_FINISHED: 69 if( scenario == 2) 70 { 71 TaskFinishedEvent finEvent = (TaskFinishedEvent) event; 72 SubmittedTask subTask = jobRegistry.getSubmittedTask(finEvent.getJobId(), finEvent.getTaskId()); 73 UsedResourceList<ResourceHistoryItem> usedResourcesList = subTask.getUsedResources(); 74 ProcessingElements pes = (ProcessingElements)usedResourcesList.getLast().getResourceUnits().get(ResourceParameterName.PROCESSINGELEMENTS); 75 76 for( ComputingResource cr : pes) 77 { 78 ((Processor)cr).getPowerInterface().setPowerState( PowerState.OFF); 79 } 80 } 81 61 82 case START_TASK_EXECUTION: 62 case TASK_FINISHED:63 83 // our tasks are placed only in first queue (see 64 84 // BaseLocalPlugin.placeJobsInQueues() method) … … 76 96 if (node != null) { 77 97 List<Processor> cpus = chooseProcessorsForExecution(node, ResourceStatus.FREE, task); 98 99 int type = Integer.parseInt( task.getJobId()) % 4; 100 String model = cpus.get(0).getComputingNode().getCategory().getName(); 101 //System.out.println(type + " -> " + model); 102 78 103 addToSchedulingPlan(plan, task, cpus); 79 104 } … … 91 116 for( Processor cpu: cpus) 92 117 cpu.getPowerInterface().setPowerState( PowerState.ON); 93 } 118 119 i--; 120 } 94 121 break; 95 122 } … … 163 190 private ComputingNode chooseRandomProvider(ClusterResourceManager resourceManager, ResourceStatus status, TaskInterface<?> task) { 164 191 192 String preferedNode = null; 193 165 194 int cpuRequest = getCpuRequest(task); 166 195 167 196 List<ComputingNode> nodes = null; 168 197 169 String prefered = null; 170 171 nodes = findSuitableNodes(prefered, cpuRequest, status, resourceManager.getComputingNodes()); 172 if( nodes.size() > 0) 198 switch( scenario) 199 { 200 case 3: 201 int type = Integer.parseInt( task.getJobId()) % 4; 202 switch( type) 203 { 204 case 0: preferedNode = "B"; break; 205 default: preferedNode = "A"; break; 206 } 207 break; 208 default: 209 preferedNode = prefered; 210 break; 211 212 } 213 214 nodes = findSuitableNodes(preferedNode, cpuRequest, status, resourceManager.getComputingNodes()); 215 switch( nodes.size()) 216 { 217 case 0: break; 218 case 1: return nodes.get(0); 219 default: 220 int nodeIdx = rand.nextInt(nodes.size()); 221 ComputingNode node = nodes.get(nodeIdx); 222 return node; 223 } 224 225 226 if( preferedNode != null) 173 227 { 174 int nodeIdx = rand.nextInt(nodes.size()); 175 ComputingNode node = nodes.get(nodeIdx); 176 177 return node; 178 } 179 else 180 { 181 System.out.println("NO resources: " + prefered); 182 } 183 184 if( prefered != null) 185 { 186 nodes = findSuitableNodes( getUnprefered(), cpuRequest, status, resourceManager.getComputingNodes()); 187 if( nodes.size() > 0) 188 { 189 int nodeIdx = rand.nextInt(nodes.size()); 190 ComputingNode node = nodes.get(nodeIdx); 191 192 return node; 228 nodes = findSuitableNodes( getUnprefered(preferedNode), cpuRequest, status, resourceManager.getComputingNodes()); 229 switch( nodes.size()) 230 { 231 case 0: break; 232 case 1: return nodes.get(0); 233 default: 234 int nodeIdx = rand.nextInt(nodes.size()); 235 ComputingNode node = nodes.get(nodeIdx); 236 return node; 193 237 } 194 238 } … … 215 259 } 216 260 217 private String getUnprefered( )261 private String getUnprefered( String preferedNode) 218 262 { 219 if( prefered .equals("A"))263 if( preferedNode.equals("A")) 220 264 return "B"; 221 265 222 if( prefered .equals("B"))266 if( preferedNode.equals("B")) 223 267 return "A"; 224 268
Note: See TracChangeset
for help on using the changeset viewer.