Changeset 1051 for DCWoRMS


Ignore:
Timestamp:
05/27/13 14:27:46 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

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

    r916 r1051  
    11package example.localplugin.coolemall.recs; 
    22 
     3import java.util.ArrayList; 
    34import java.util.List; 
    45import java.util.Random; 
     
    78import schedframe.exceptions.ResourceException; 
    89import schedframe.resources.UserResourceType; 
    9 import schedframe.resources.computing.ComputingResource; 
     10import schedframe.resources.computing.ComputingNode; 
     11import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirThroughputStateName; 
    1012import schedframe.scheduling.manager.resources.ClusterResourceManager; 
    1113import schedframe.scheduling.manager.resources.ResourceManager; 
     
    4345                        TaskQueue q = queues.get(0); 
    4446                         
     47                        List<ComputingNode> notSelectedNodes = null; 
     48                        try { 
     49                                notSelectedNodes = (List<ComputingNode>) resourceManager.getResourcesOfType(new UserResourceType("Node")); 
     50                        } catch (ResourceException e) { 
     51                                // TODO Auto-generated catch block 
     52                                e.printStackTrace(); 
     53                        } 
    4554                        // check all tasks in queue 
    4655                        for (int i = 0; i < q.size(); i++) { 
     
    4857                                // if status of the tasks in READY 
    4958                                if (task.getStatus() == DCWormsTags.READY) { 
    50  
    51                                         String nodeName = chooseRandomProvider(resourceManager); 
    52                                         if (nodeName != null) { 
    53                                                 addToSchedulingPlan(plan, task, nodeName); 
     59                                        ComputingNode node = chooseRandomProvider(resourceManager); 
     60                                        if (node != null) { 
     61                                                node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 
     62                                                notSelectedNodes.remove(node); 
     63                                                addToSchedulingPlan(plan, task, node.getName()); 
    5464                                        } 
    5565                                } 
    5666                        } 
     67                        adjustOtherFans(notSelectedNodes); 
    5768                        break; 
    5869                } 
     
    6172 
    6273        @SuppressWarnings("unchecked") 
    63         private String chooseRandomProvider(ClusterResourceManager resourceManager) { 
    64                 List<ComputingResource> nodes = null; 
     74        private ComputingNode chooseRandomProvider(ClusterResourceManager resourceManager) { 
     75                List<ComputingNode> nodes = null; 
    6576                try { 
    66                         nodes = (List<ComputingResource>) resourceManager.getResourcesOfType(new UserResourceType("Node")); 
     77                        nodes = (List<ComputingNode>) resourceManager.getResourcesOfType(new UserResourceType("Node")); 
    6778                } catch (ResourceException e) { 
    6879                        // TODO Auto-generated catch block 
    6980                        e.printStackTrace(); 
    7081                } 
     82                nodes = filterNodes(nodes); 
    7183                int nodeIdx = rand.nextInt(nodes.size()); 
    72                 return nodes.get(nodeIdx).getName(); 
     84                return nodes.get(nodeIdx); 
    7385        } 
    7486 
     87        private List<ComputingNode> filterNodes(List<ComputingNode> nodes){ 
     88                List<ComputingNode> filteredNodes = new ArrayList<ComputingNode>(); 
     89                for (ComputingNode node : nodes) { 
     90                        if(node.getFreeProcessors().size() > 0) 
     91                                filteredNodes.add(node); 
     92                } 
     93                 
     94                return filteredNodes; 
     95        } 
     96        private void adjustOtherFans(List<ComputingNode> nodes) { 
     97                for (ComputingNode node : nodes) { 
     98                        if (node.getProcessors().size() == node.getFreeProcessorsNumber()) { 
     99                                node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_OFF); 
     100                        } else { 
     101                                node.getAirThroughputInterface().setAirThroughputState(StandardAirThroughputStateName.FAN_ON); 
     102                        } 
     103                } 
     104        } 
    75105} 
    76106 
Note: See TracChangeset for help on using the changeset viewer.