Ignore:
Timestamp:
07/15/14 16:26:31 (11 years ago)
Author:
wojtekp
Message:
 
Location:
DCWoRMS/branches/coolemall/src/example/localplugin
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/example/localplugin/BaseLocalSchedulingPlugin.java

    r1396 r1415  
    66import schedframe.Parameters; 
    77import schedframe.PluginConfiguration; 
    8 import schedframe.events.scheduling.SchedulingEvent; 
    98import schedframe.events.scheduling.SchedulingEventType; 
    10 import schedframe.events.scheduling.SchedulingResponseType; 
    119import schedframe.resources.units.ResourceUnit; 
    1210import schedframe.resources.units.ResourceUnitName; 
    1311import schedframe.scheduling.TaskList; 
    1412import schedframe.scheduling.manager.resources.ResourceManager; 
    15 import schedframe.scheduling.manager.tasks.JobRegistry; 
    1613import schedframe.scheduling.plan.impl.Allocation; 
    1714import schedframe.scheduling.plan.impl.ScheduledTask; 
     
    3128        public PluginConfiguration getConfiguration() { 
    3229                return plugConf; 
    33         } 
    34          
    35         public SchedulingResponseType handleResourceAllocationViolation(SchedulingEvent event, 
    36                         TaskQueueList queues,  
    37                         JobRegistry jobRegistry,  
    38                                         ResourceManager resourceManager, ModuleList modules){ 
    39                 SchedulingResponseType responeEvent = null; 
    40                 switch(event.getType()){ 
    41                         case TASK_REQUESTED_TIME_EXPIRED:  
    42                                 responeEvent = SchedulingResponseType.KILL_TASK; 
    43                                 break; 
    44                 } 
    45                 return responeEvent; 
    4630        } 
    4731         
  • DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationHighPerf_NodePowMan_Plugin.java

    r1396 r1415  
    77import java.util.Comparator; 
    88import java.util.HashMap; 
     9import java.util.HashSet; 
    910import java.util.List; 
    1011import java.util.Map; 
     12import java.util.Set; 
    1113 
    1214import schedframe.events.scheduling.SchedulingEvent; 
    13 import schedframe.exceptions.ResourceException; 
    1415import schedframe.resources.ResourceStatus; 
    1516import schedframe.resources.StandardResourceType; 
     
    1718import schedframe.resources.computing.Node; 
    1819import schedframe.resources.computing.Processor; 
    19 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 
     20import schedframe.resources.computing.profiles.energy.airthroughput.AirflowState; 
     21import schedframe.resources.computing.profiles.energy.airthroughput.AirflowStateName; 
     22import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 
    2023import schedframe.resources.computing.profiles.energy.power.PState; 
    2124import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    2225import schedframe.resources.devices.Device; 
     26import schedframe.resources.devices.Fan; 
    2327import schedframe.resources.units.ProcessingElements; 
    2428import schedframe.resources.units.ResourceUnit; 
     
    5559                        // check all tasks in queue 
    5660 
    57                         List<Node> notSelectedNodes = resourceManager.getNodes(); 
     61                        Set<Node> selectedNodes = new HashSet<Node>(); 
    5862                         
    5963                        for (int i = 0; i < q.size(); i++) { 
     
    6771                                                ProcessingElements pe = (ProcessingElements) choosenResources.get(StandardResourceUnitName.PE); 
    6872                                                Node node = (Node) pe.get(0).getParent(); 
    69                                                 notSelectedNodes.remove(node); 
     73                                                selectedNodes.add(node); 
    7074                                        }  
    7175                                } 
    7276                        } 
    73                         turnOffIdleNodes(notSelectedNodes); 
     77                        List<Node> nodes = resourceManager.getNodes(); 
     78                        nodes.removeAll(selectedNodes); 
     79                        turnOffIdleNodes(nodes); 
     80                        for(Node node: resourceManager.getNodes()){ 
     81                                for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 
     82                                        if(device.getType().equals(StandardResourceType.Fan)){ 
     83                                                Fan fan = (Fan) device; 
     84                                                adjustFanSpeed(fan, selectedNodes); 
     85                                                break; 
     86                                        } 
     87                                } 
     88                        } 
    7489                        break; 
    7590                } 
     
    8499                Node node; 
    85100                if(availableNodes.size() == 0){ 
    86                         try { 
    87                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    88                         } catch (ResourceException e) { 
    89                                 // TODO Auto-generated catch block 
    90                                 e.printStackTrace(); 
    91                         } 
     101 
     102                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     103 
    92104                        Collections.sort(nodes, new PerformanceComparator()); 
    93105                        node = turnOnFirstNode(nodes, task); 
     
    112124                        } 
    113125                } 
     126 
    114127                ProcessingElements result = new ProcessingElements(node.getFullName()); 
    115128                result.addAll(choosenResources); 
     
    167180                                        continue; 
    168181                                else { 
    169                                         for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 
    170                                                 if(device.getType().equals(StandardResourceType.Fan)){ 
    171                                                         device.getAirflowInterface().setAirflowState(StandardAirflowStateName.ON); 
    172                                                         break; 
    173                                                 } 
    174                                         } 
    175182                                        node.getPowerInterface().setPowerState(StandardPowerStateName.ON); 
    176183                                        startedNode = node; 
     
    190197                         
    191198                        if(freeProcessors == node.getProcessors().size()) { 
    192                                 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 
    193                                         if(device.getType().equals(StandardResourceType.Fan)){ 
    194                                                 device.getAirflowInterface().setAirflowState(StandardAirflowStateName.OFF); 
    195                                                 break; 
    196                                         } 
    197                                 } 
    198199                                node.getPowerInterface().setPowerState(StandardPowerStateName.OFF); 
    199200                        } 
    200  
    201201                } 
    202202        } 
     
    249249            } 
    250250        } 
     251         
     252        private void adjustFanSpeed(Fan fan, Set<Node> selectedNodes){ 
     253                AirflowStateName newState; 
     254                double totalLoad = 0; 
     255                double loadLevel; 
     256                ComputingResource compRes = fan.getComputingResource(); 
     257                for(ComputingResource n: compRes.getChildren()){ 
     258                        if(fan.getChilledResources().contains(n.getFullName())){ 
     259                                if(selectedNodes.contains(n)){ 
     260                                        totalLoad = totalLoad + 100; 
     261                                } else { 
     262                                        totalLoad = totalLoad + n.getLoadInterface().getRecentUtilization().getValue(); 
     263                                }        
     264                        } 
     265                } 
     266                loadLevel = totalLoad / compRes.getChildren().size(); 
     267                 
     268                double highestLoadLevel = 0; 
     269 
     270                if(fan.getAirflowInterface().supportAirflowState(new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()))){ 
     271                        newState = new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()); 
     272                } else { 
     273                        for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 
     274                                Double load; 
     275                                try{ 
     276                                        load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 
     277                                }catch (Exception e){ 
     278                                        continue; 
     279                                } 
     280                                if(highestLoadLevel < load){ 
     281                                        highestLoadLevel = load; 
     282                                } 
     283                        } 
     284                        if(loadLevel == 0){ 
     285                                newState = new CustomAirflowStateName("OFF"); 
     286                        } else { 
     287 
     288                                double higherLoadLevel = highestLoadLevel; 
     289 
     290                                for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 
     291                                        Double load; 
     292                                        try{ 
     293                                                load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 
     294                                        }catch (Exception e){ 
     295                                                continue; 
     296                                        } 
     297                                        if(loadLevel < load){ 
     298                                                higherLoadLevel = load; 
     299                                        } 
     300                                } 
     301                                newState = new CustomAirflowStateName("ON_" + Double.valueOf(higherLoadLevel).intValue()); 
     302                        } 
     303                } 
     304                fan.getAirflowInterface().setAirflowState(newState); 
     305        } 
    251306 
    252307} 
  • DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationLowPower_NodePowMan_Plugin.java

    r1396 r1415  
    1111 
    1212import schedframe.events.scheduling.SchedulingEvent; 
    13 import schedframe.exceptions.ResourceException; 
    1413import schedframe.resources.ResourceStatus; 
    1514import schedframe.resources.StandardResourceType; 
     
    8382                Node node; 
    8483                if(availableNodes.size() == 0){ 
    85                         try { 
    86                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    87                         } catch (ResourceException e) { 
    88                                 // TODO Auto-generated catch block 
    89                                 e.printStackTrace(); 
    90                         } 
     84                         
     85                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     86 
    9187                        Collections.sort(nodes, new PowerComparator()); 
    9288                        node = turnOnFirstNode(nodes, task); 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationHighPerf_NodePowMan_SP.java

    r1396 r1415  
    99 
    1010import schedframe.events.scheduling.SchedulingEvent; 
    11 import schedframe.exceptions.ResourceException; 
    1211import schedframe.resources.ResourceStatus; 
    1312import schedframe.resources.StandardResourceType; 
     
    9493                Node node; 
    9594                if(avNodes.size() == 0){ 
    96                         try { 
    97                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    98                         } catch (ResourceException e) { 
    99                                 // TODO Auto-generated catch block 
    100                                 e.printStackTrace(); 
    101                         } 
     95 
     96                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     97 
    10298                        Collections.sort(nodes, new FavourableNodeComparator()); 
    10399                        node = turnOnFirstNode(nodes, task); 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationLowPower_NodePowMan_SP.java

    r1396 r1415  
    99 
    1010import schedframe.events.scheduling.SchedulingEvent; 
    11 import schedframe.exceptions.ResourceException; 
    1211import schedframe.resources.ResourceStatus; 
    1312import schedframe.resources.StandardResourceType; 
     
    9493                Node node; 
    9594                if(avNodes.size() == 0){ 
    96                         try { 
    97                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    98                         } catch (ResourceException e) { 
    99                                 // TODO Auto-generated catch block 
    100                                 e.printStackTrace(); 
    101                         } 
     95 
     96                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     97 
    10298                        Collections.sort(nodes, new FavourableNodeComparator()); 
    10399                        node = turnOnFirstNode(nodes, task); 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationHighPerf_NodePowMan_SP.java

    r1396 r1415  
    99 
    1010import schedframe.events.scheduling.SchedulingEvent; 
    11 import schedframe.exceptions.ResourceException; 
    1211import schedframe.resources.ResourceStatus; 
    1312import schedframe.resources.StandardResourceType; 
     
    9594                Node node; 
    9695                if(avNodes.size() == 0){ 
    97                         try { 
    98                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    99                         } catch (ResourceException e) { 
    100                                 // TODO Auto-generated catch block 
    101                                 e.printStackTrace(); 
    102                         } 
     96                         
     97                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     98 
    10399                        Collections.sort(nodes, new PerformanceComparator()); 
    104100                        node = turnOnFirstNode(nodes, task); 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationLowPower_NodePowMan_SP.java

    r1396 r1415  
    99 
    1010import schedframe.events.scheduling.SchedulingEvent; 
    11 import schedframe.exceptions.ResourceException; 
    1211import schedframe.resources.ResourceStatus; 
    1312import schedframe.resources.StandardResourceType; 
     
    9493                Node node; 
    9594                if(avNodes.size() == 0){ 
    96                         try { 
    97                                 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
    98                         } catch (ResourceException e) { 
    99                                 // TODO Auto-generated catch block 
    100                                 e.printStackTrace(); 
    101                         } 
     95 
     96                        nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 
     97 
    10298                        Collections.sort(nodes, new PowerComparator()); 
    10399                        node = turnOnFirstNode(nodes, task); 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_PowerCapping_SP.java

    r1396 r1415  
    7878                                if (task.getStatus() == DCWormsTags.READY) { 
    7979 
    80                                         try { 
    81                                                 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 
    82                                                         break; 
    83                                         } catch (ResourceException e) { 
    84                                                 // TODO Auto-generated catch block 
    85                                                 e.printStackTrace(); 
    86                                         } 
     80                                        if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 
     81                                                break; 
     82 
    8783                                        Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 
    8884                                        if (choosenResources != null) { 
  • DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_SP.java

    r1396 r1415  
    88 
    99import schedframe.events.scheduling.SchedulingEvent; 
    10 import schedframe.exceptions.ResourceException; 
    1110import schedframe.resources.ResourceStatus; 
    1211import schedframe.resources.StandardResourceType; 
     
    6160                                if (task.getStatus() == DCWormsTags.READY) { 
    6261 
    63                                         try { 
    64                                                 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 
    65                                                         break; 
    66                                         } catch (ResourceException e) { 
    67                                                 // TODO Auto-generated catch block 
    68                                                 e.printStackTrace(); 
    69                                         } 
     62                                        if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 
     63                                                break; 
     64 
    7065                                        Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 
    7166                                        if (choosenResources != null) { 
Note: See TracChangeset for help on using the changeset viewer.