Changeset 1412 for DCWoRMS/branches
- Timestamp:
- 07/02/14 14:07:24 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_LoadBalancing_SP.java
r1396 r1412 1 1 package example.localplugin.coolemall.computebox2; 2 2 3 import java.util.ArrayList; 3 4 import java.util.List; 4 5 5 6 import schedframe.events.scheduling.SchedulingEvent; 7 import schedframe.resources.ResourceStatus; 8 import schedframe.resources.computing.Core; 6 9 import schedframe.resources.computing.Node; 7 10 import schedframe.scheduling.manager.resources.ClusterResourceManager; … … 43 46 if (task.getStatus() == DCWormsTags.READY) { 44 47 45 String nodeName = chooseProvider(resourceManager );48 String nodeName = chooseProvider(resourceManager, task); 46 49 if (nodeName != null) { 47 50 addToSchedulingPlan(plan, task, nodeName); … … 54 57 } 55 58 56 private String chooseProvider(ClusterResourceManager resourceManager ) {59 private String chooseProvider(ClusterResourceManager resourceManager, TaskInterface<?> task) { 57 60 List<Node> nodes = resourceManager.getNodes(); 58 int nodeIdx = findLeastLoadedResourceIdx(nodes); 59 return nodes.get(nodeIdx).getFullName(); 61 List<Node> avNodes = filterNodes(nodes, task); 62 int nodeIdx = findLeastLoadedResourceIdx(avNodes); 63 return nodeIdx != -1 ? avNodes.get(nodeIdx).getFullName() : null; 64 } 65 66 private List<Node> filterNodes(List<Node> nodes, TaskInterface<?> task){ 67 List<Node> filteredNodes = new ArrayList<Node>(); 68 int cpuRequest; 69 try { 70 cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 71 } catch (NoSuchFieldException e) { 72 cpuRequest = 0; 73 } 74 for (Node node : nodes) { 75 76 if (cpuRequest != 0) { 77 78 List<Core> cores = node.getCores(); 79 if (cores.size() < cpuRequest) { 80 if(cores.size() == 0){ 81 if(node.getProcessors().size() < cpuRequest) 82 continue; 83 } 84 } 85 86 int freeCores = 0; 87 for(Core core: cores){ 88 if(core.getStatus() == ResourceStatus.FREE) 89 freeCores++; 90 } 91 92 if(freeCores < cpuRequest) 93 continue; 94 95 filteredNodes.add(node); 96 } 97 } 98 99 return filteredNodes; 60 100 } 61 101
Note: See TracChangeset
for help on using the changeset viewer.