Ignore:
Timestamp:
10/31/12 13:52:06 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/trunk/build/classes/example/localplugin/FCFSClusterLocalPlugin.java

    r477 r539  
    11package example.localplugin; 
    22 
    3 import gridsim.Gridlet; 
     3import gridsim.dcworms.DCWormsTags; 
    44 
    55import java.util.ArrayList; 
     
    3131import schedframe.scheduling.tasks.WorkloadUnit; 
    3232 
    33 public class FCFSClusterLocalPlugin extends BaseLocalPlugin { 
     33public class FCFSClusterLocalPlugin extends BaseLocalSchedulingPlugin { 
    3434 
    3535        public SchedulingPlanInterface<?> schedule(SchedulingEvent event, TaskQueueList queues, JobRegistry jobRegistry, 
     
    4949 
    5050                        for (int i = 0; i < q.size(); i++) { 
    51                                 WorkloadUnit<?> job = q.get(i); 
     51                                WorkloadUnit job = q.get(i); 
    5252                                TaskInterface<?> task = (TaskInterface<?>) job; 
    5353                                // if status of the tasks in READY 
    54                                 if (task.getStatus() == Gridlet.READY) { 
     54                                if (task.getStatus() == DCWormsTags.READY) { 
    5555                                         
    5656                                        /****************3 ways to schedule task****************/ 
    5757                                         
    5858                                        /****************1. Choosing particular resources to perform execution****************/ 
    59                                         Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution2(resourceManager, task); 
     59                                        Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 
    6060                                        if (choosenResources != null) { 
    6161                                                addToSchedulingPlan(plan, task, choosenResources); 
     
    8080 
    8181        private Map<ResourceUnitName, ResourceUnit> chooseResourcesForExecution( 
    82                         ClusterResourceManager resourceManager, TaskInterface<?> task) { 
    83  
    84                 Map<ResourceUnitName, ResourceUnit> map = new HashMap<ResourceUnitName, ResourceUnit>(); 
    85  
    86                 int cpuRequest; 
    87                 try { 
    88                         cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 
    89                 } catch (NoSuchFieldException e) { 
    90                         cpuRequest = 1; 
    91                 } 
    92  
    93                 if (cpuRequest != 0) { 
    94                         List<ComputingResource> choosenResources = null; 
    95                         List<Processor> processors = null; 
    96                         processors = resourceManager.getProcessors(); 
    97                         if (processors.size() < cpuRequest) { 
    98                                 // log.warn("Task requires more cpus than is availiable in this resource."); 
    99                                 return null; 
    100                         } 
    101  
    102                         choosenResources = new ArrayList<ComputingResource>(); 
    103  
    104                         for (int i = 0; i < processors.size() && cpuRequest > 0; i++) { 
    105                                 if (processors.get(i).getStatus() == ResourceStatus.FREE) { 
    106                                         choosenResources.add(processors.get(i)); 
    107                                         cpuRequest--; 
    108                                 } 
    109                         } 
    110                         if (cpuRequest > 0) { 
    111                                 // log.info("Task " + task.getJobId() + "_" + task.getId() + 
    112                                 // " requires more cpus than is availiable in this moment."); 
    113                                 return null; 
    114                         } 
    115  
    116                         ProcessingElements result = new ProcessingElements(processors.get(0).getParent().getName()); 
    117                         result.addAll(choosenResources); 
    118                         map.put(StandardResourceUnitName.PE, result); 
    119  
    120                 } 
    121                 int memoryRequest; 
    122                 try { 
    123                         memoryRequest = Double.valueOf(task.getMemoryRequest()).intValue(); 
    124                 } catch (NoSuchFieldException e) { 
    125                         memoryRequest = 0; 
    126                 } 
    127                 if (memoryRequest != 0) { 
    128                         List<ComputingNode> nodes = resourceManager.getComputingNodes(); 
    129  
    130                         Memory memory = null; 
    131                         for (ComputingNode node : nodes) { 
    132                                 try{ 
    133                                         if (node.getFreeMemory() >= memoryRequest) {             
    134                                                 memory = new Memory(node.getMemory(), memoryRequest, memoryRequest); 
    135                                         }                
    136                                 } catch(NoSuchFieldException e){ 
    137                                         memory = null; 
    138                                 } 
    139                         } 
    140                         if(memory != null) 
    141                                 map.put(StandardResourceUnitName.MEMORY, memory); 
    142                         else return null; 
    143                 } 
    144  
    145                 return map; 
    146         } 
    147  
    148  
    149         private Map<ResourceUnitName, ResourceUnit> chooseResourcesForExecution2( 
    15082                        ClusterResourceManager resourceManager, TaskInterface<?> task) { 
    15183 
     
    178110                                } 
    179111 
    180                                 ProcessingElements result = new ProcessingElements(processors.get(0).getParent().getName()); 
     112                                ProcessingElements result = new ProcessingElements(); 
    181113                                result.addAll(choosenResources); 
    182114                                map.put(StandardResourceUnitName.PE, result); 
     
    204136                                                return map; 
    205137                                        } 
    206                                 } 
     138                                } else return map; 
    207139                        } 
    208140                } 
     
    221153        } 
    222154 
    223         public String getName() { 
    224                 return getClass().getName(); 
    225         } 
    226  
    227155} 
Note: See TracChangeset for help on using the changeset viewer.