Changeset 143 for xssim/trunk/src


Ignore:
Timestamp:
03/15/12 16:06:56 (13 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • xssim/trunk/src/example/localplugin/FCFSCPUFreqScalingClusterLocalPlugin.java

    r104 r143  
    1515import schedframe.scheduling.events.SchedulingEvent; 
    1616import schedframe.scheduling.events.TaskFinishedEvent; 
     17import schedframe.scheduling.events.TaskRequestedTimeExpiredEvent; 
    1718import schedframe.scheduling.plugin.grid.ModuleList; 
    1819import schedframe.scheduling.utils.ResourceParameterName; 
     
    3334public class FCFSCPUFreqScalingClusterLocalPlugin extends BaseLocalPlugin { 
    3435 
     36        List<CPU> allocatedCPUs; 
    3537        public FCFSCPUFreqScalingClusterLocalPlugin () { 
     38                allocatedCPUs = new ArrayList<CPU>(); 
    3639        } 
    3740 
     
    7982                        for(ComputingResource res : pes){ 
    8083                                processors.add((CPU) res); 
     84                                allocatedCPUs.add((CPU) res); 
    8185                        } 
    8286                        adjustFrequency(ResourceStatus.FREE, processors); 
     
    8488                         
    8589                case TASK_REQUESTED_TIME_EXPIRED: 
     90                        TaskRequestedTimeExpiredEvent timExpEvent = (TaskRequestedTimeExpiredEvent) event; 
     91                         subTask = jobRegistry.getSubmittedTask(timExpEvent.getJobId(), timExpEvent.getTaskId()); 
     92                        usedResourcesList = subTask.getUsedResources(); 
     93                        pes = (ProcessingElements)usedResourcesList.get(usedResourcesList.size() - 1).getResourceUnits().get(ResourceParameterName.PROCESSINGELEMENTS); 
     94                        processors =  new ArrayList<CPU>(); 
     95                        for(ComputingResource res : pes){ 
     96                                allocatedCPUs.remove((CPU) res); 
     97                        } 
    8698                        // check all tasks in queue 
    8799                        for (int i = 0; i < q.size(); i++) { 
     
    94106                                        if (choosenResources  != null) { 
    95107                                                addToSchedulingPlan(plan, task, choosenResources); 
    96                                                  pes = (ProcessingElements)choosenResources.get(ResourceParameterName.PROCESSINGELEMENTS); 
     108                                                pes = (ProcessingElements)choosenResources.get(ResourceParameterName.PROCESSINGELEMENTS); 
    97109                                                processors =  new ArrayList<CPU>(); 
    98110                                                for(ComputingResource res : pes){ 
    99111                                                        processors.add((CPU) res); 
    100112                                                } 
    101                                                 adjustFrequency(ResourceStatus.BUSY,processors); 
     113                                                adjustFrequency(ResourceStatus.BUSY, processors); 
    102114                                        }  
    103115                                } 
     
    123135                        List<ComputingResource> choosenResources = null; 
    124136                        List<CPU> processors = resourceManager.getProcessors(); 
     137                        processors.removeAll(allocatedCPUs); 
    125138                        if (processors.size() < cpuRequest) { 
    126139                                // log.warn("Task requires more cpus than is availiable in this resource."); 
     
    142155                        } 
    143156 
    144                         ProcessingElements result = new ProcessingElements(processors.get(0).getParent().getParent().getName()); 
     157                        ProcessingElements result = new ProcessingElements(); 
    145158                        result.addAll(choosenResources); 
    146159                        map.put(ResourceParameterName.PROCESSINGELEMENTS, result); 
     
    153166                case BUSY: 
    154167                        for(CPU cpu: processors){ 
    155                                 cpu.getPowerInterface().setPState(PStateType.P0); 
     168                                if(cpu.getPowerInterface().getSupportedPStates().containsKey(PStateType.P0)) 
     169                                        cpu.getPowerInterface().setPState(PStateType.P0); 
    156170                        } 
    157171                        break; 
    158172                case FREE: 
    159173                        for(CPU cpu: processors){ 
    160                                 cpu.getPowerInterface().setPState(PStateType.P3); 
     174                                if(cpu.getPowerInterface().getSupportedPStates().containsKey(PStateType.P3)) 
     175                                        cpu.getPowerInterface().setPState(PStateType.P3); 
    161176                        } 
    162177                        break; 
Note: See TracChangeset for help on using the changeset viewer.