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

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/example/energy/BaseEnergyEstimationPlugin.java

    r1396 r1415  
    33import schedframe.Parameters; 
    44import schedframe.PluginConfiguration; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.computing.profiles.energy.power.plugin.EnergyEstimationPlugin; 
     7import schedframe.resources.computing.profiles.energy.power.plugin.EnergyPluginConfiguration; 
    78import schedframe.resources.devices.PhysicalResource; 
    89import schedframe.scheduling.manager.tasks.JobRegistry; 
     10import schemas.StringValueWithUnit; 
    911 
    1012public abstract class BaseEnergyEstimationPlugin implements EnergyEstimationPlugin { 
    1113 
     14         EnergyPluginConfiguration plugConf; 
     15          
    1216        @Override 
    1317        public PluginConfiguration getConfiguration() { 
    14                 // TODO Auto-generated method stub 
    15                 return null; 
     18                return plugConf; 
    1619        } 
    1720         
    1821        @Override 
    19         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     22        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    2023                throw new RuntimeException("Not implemented."); 
    2124        } 
    2225 
    2326        @Override 
    24         public double estimateTemperature(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource  resource) { 
     27        public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource  resource) { 
    2528                throw new RuntimeException("Not implemented."); 
    2629        } 
    2730         
    2831        public void init(Parameters parameters) { 
    29  
     32                plugConf = new EnergyPluginConfiguration(); 
     33                try{ 
     34                        StringValueWithUnit powerCapLevel = parameters.get("powerCapLevel").get(0); 
     35                        plugConf.setPowerCapLevel(Double.valueOf(powerCapLevel.getContent()).doubleValue()); 
     36                } catch(Exception e){ 
     37                        plugConf.setPowerCapLevel(-1); 
     38                } 
     39                try{ 
     40                        StringValueWithUnit powerFloorLevel = parameters.get("powerFloorLevel").get(0); 
     41                        plugConf.setPowerFloorLevel(Double.valueOf(powerFloorLevel.getContent()).doubleValue()); 
     42                } catch(Exception e){ 
     43                        plugConf.setPowerFloorLevel(-1); 
     44                } 
    3045        } 
    3146 
  • DCWoRMS/branches/coolemall/src/example/energy/DataCenterEnergyEstimationPlugin.java

    r1258 r1415  
    33import schedframe.resources.computing.Node; 
    44import schedframe.resources.computing.DataCenter; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.computing.profiles.energy.power.PowerUsage; 
    77import schedframe.resources.devices.PhysicalResource; 
     
    1111 
    1212        @Override 
    13         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     13        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1414                        PhysicalResource resource) { 
    1515                double power = 0; 
  • DCWoRMS/branches/coolemall/src/example/energy/DefaultEnergyEstimationPlugin.java

    r1207 r1415  
    22 
    33import schedframe.resources.computing.ComputingResource; 
    4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     4import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    55import schedframe.resources.devices.PhysicalResource; 
    66import schedframe.scheduling.manager.tasks.JobRegistry; 
     
    1010 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    1313                double powerConsumption = 0; 
    1414                try { 
  • DCWoRMS/branches/coolemall/src/example/energy/NodeEnergyEstimationPlugin.java

    r1247 r1415  
    33import schedframe.resources.computing.Node; 
    44import schedframe.resources.computing.Processor; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.devices.Device; 
    77import schedframe.resources.devices.PhysicalResource; 
     
    1010public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1313                        PhysicalResource resource) { 
    1414                double powerConsumption = 0; 
  • DCWoRMS/branches/coolemall/src/example/energy/ProcessorEnergyEstimationPlugin.java

    r1207 r1415  
    33import schedframe.resources.ResourceStatus; 
    44import schedframe.resources.computing.Processor; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    77import schedframe.resources.devices.PhysicalResource; 
     
    1010public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin  { 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1313                        PhysicalResource resource) { 
    1414                double powerConsumption; 
     
    4242                         
    4343                } 
     44                if(cpu.getLoadInterface().getRecentUtilization().getValue() != 0.0){ 
     45                        powerConsumption = powerConsumption * cpu.getLoadInterface().getRecentUtilization().getValue()/100;                      
     46                } 
    4447                return powerConsumption; 
    4548        } 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB1EnergyEstimationPlugin.java

    r1396 r1415  
    1010import schedframe.resources.computing.coolemall.ComputeBox1; 
    1111import schedframe.resources.computing.coolemall.NodeGroup; 
    12 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     12import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    1313import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 
    1414import schedframe.resources.computing.profiles.energy.power.PState; 
     
    2626        double powerUpgradeLevel = -1; 
    2727         
    28         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     28        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    2929                        PhysicalResource resource) { 
    3030                 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB2EnergyEstimationPlugin.java

    r1396 r1415  
    88import schedframe.resources.computing.coolemall.ComputeBox1; 
    99import schedframe.resources.computing.coolemall.NodeGroup; 
    10 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     10import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    1111import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    1212import schedframe.resources.devices.Device; 
     
    1919public class CB2EnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 
    2020 
    21         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     21        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    2222                        PhysicalResource resource) { 
    2323                 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/CoolingDeviceEnergyEstimationPlugin.java

    r1396 r1415  
    77import schedframe.resources.computing.coolemall.ComputeBox1; 
    88import schedframe.resources.computing.coolemall.NodeGroup; 
    9 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     9import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    1010import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    1111import schedframe.resources.devices.Device; 
     
    1818public class CoolingDeviceEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1919 
    20         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     20        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    2121                double airflow = 0; 
    2222                return airflow; 
    2323        } 
    2424 
    25         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     25        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    2626                        PhysicalResource resource) { 
    2727                 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/FanEnergyEstimationPlugin.java

    r1396 r1415  
    11package example.energy.coolemall; 
    22 
    3 import schedframe.events.scheduling.EventReason; 
     3import schedframe.events.EventReason; 
    44import schedframe.resources.computing.ComputingResource; 
    55import schedframe.resources.computing.Node; 
    6 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     6import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    77import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    88import schedframe.resources.devices.Device; 
     
    1414public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1515 
    16         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     16        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1717                        PhysicalResource resource) { 
    1818                 
     
    3535        } 
    3636         
    37         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     37        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    3838                 
    3939                double airflow = 0; 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpInletEnergyEstimationPlugin.java

    r1396 r1415  
    55import schedframe.resources.computing.coolemall.ComputeBox1; 
    66import schedframe.resources.computing.coolemall.NodeGroup; 
    7 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     7import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    88import schedframe.resources.devices.Device; 
    99import schedframe.resources.devices.Fan; 
     
    1515public class FlowPumpInletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1616 
    17         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     17        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1818                        PhysicalResource resource) { 
    1919                 
     
    8686        } 
    8787         
    88         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     88        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    8989                double airflow = 0; 
    9090                double Vair_total; 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpOutletEnergyEstimationPlugin.java

    r1396 r1415  
    55import schedframe.resources.computing.coolemall.ComputeBox1; 
    66import schedframe.resources.computing.coolemall.NodeGroup; 
    7 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     7import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    88import schedframe.resources.devices.Device; 
    99import schedframe.resources.devices.Fan; 
     
    1515public class FlowPumpOutletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1616 
    17         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     17        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1818                        PhysicalResource resource) { 
    1919                 
     
    2323        } 
    2424         
    25         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     25        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    2626                double airflow = 0; 
    2727                double Vair_total; 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/HeatsinkEnergyEstimationPlugin.java

    r1247 r1415  
    33import schedframe.resources.computing.Node; 
    44import schedframe.resources.computing.Processor; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.devices.Device; 
    77import schedframe.resources.devices.PhysicalResource; 
     
    1111public class HeatsinkEnergyEstimationPlugin extends BaseEnergyEstimationPlugin  { 
    1212 
    13         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     13        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1414                        PhysicalResource resource) { 
    1515                 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeEnergyEstimationPlugin.java

    r1396 r1415  
    55import schedframe.resources.computing.Node; 
    66import schedframe.resources.computing.Processor; 
    7 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     7import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    88import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    99import schedframe.resources.devices.Device; 
     
    1515public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1616 
    17         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     17        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1818                        PhysicalResource resource) { 
    1919                double powerConsumption = 0; 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeGroupEnergyEstimationPlugin.java

    r1247 r1415  
    33import schedframe.resources.computing.Node; 
    44import schedframe.resources.computing.coolemall.NodeGroup; 
    5 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     5import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    66import schedframe.resources.devices.PhysicalResource; 
    77import schedframe.scheduling.manager.tasks.JobRegistry; 
     
    1010public class NodeGroupEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1313                        PhysicalResource resource) { 
    1414                 
  • DCWoRMS/branches/coolemall/src/example/energy/coolemall/ProcessorEnergyEstimationPlugin.java

    r1322 r1415  
    22 
    33import schedframe.resources.computing.Processor; 
    4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     4import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    55import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    66import schedframe.resources.devices.PhysicalResource; 
     
    1010public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin  { 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1313                        PhysicalResource resource) { 
    1414                 
  • DCWoRMS/branches/coolemall/src/example/energy/device/FanEnergyEstimationPlugin.java

    r1396 r1415  
    11package example.energy.device; 
    22 
    3 import schedframe.events.scheduling.EventReason; 
    4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     3import schedframe.events.EventReason; 
     4import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    55import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 
    66import schedframe.resources.devices.PhysicalResource; 
     
    1010public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 
    1111 
    12         public double estimatePowerConsumption(EnergyEvent event, JobRegistry jobRegistry, 
     12        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 
    1313                        PhysicalResource resource) { 
    1414                double powerConsumption = 0; 
     
    2424        } 
    2525 
    26         public double estimateAirflow(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     26        public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    2727                double airflow= 0; 
    2828                try { 
  • DCWoRMS/branches/coolemall/src/example/load/DefaultLoadEstimationPlugin.java

    r1396 r1415  
    22 
    33import schedframe.resources.computing.ComputingResource; 
    4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     4import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    55import schedframe.resources.devices.PhysicalResource; 
    66import schedframe.scheduling.manager.tasks.JobRegistry; 
     
    1010public class DefaultLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 
    1111 
    12         public double estimateUtlization(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     12        public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    1313 
    1414                ComputingResource computingResource = (ComputingResource) resource; 
  • DCWoRMS/branches/coolemall/src/example/load/ProcessorLoadEstimationPlugin.java

    r1396 r1415  
    22 
    33import schedframe.resources.computing.Processor; 
    4 import schedframe.resources.computing.profiles.energy.EnergyEvent; 
     4import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    55import schedframe.resources.devices.PhysicalResource; 
    66import schedframe.scheduling.manager.tasks.JobRegistry; 
    77import schedframe.scheduling.manager.tasks.JobRegistryImpl; 
    8 import schedframe.scheduling.tasks.phases.PhaseBehaviour; 
     8import schedframe.scheduling.tasks.phases.PhaseSystemLoad; 
    99import dcworms.schedframe.scheduling.ExecTask; 
    1010 
    1111public class ProcessorLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 
    1212 
    13         public double estimateUtlization(EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
     13        public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 
    1414                Processor proc = (Processor) resource; 
    1515                double sumCoresLoad = 0; 
     
    2626                        double cpuUsage = 1 / nrOfThreadsOnCpu; 
    2727 
    28                         for(PhaseBehaviour pb: task.getExecutionProfile().getCurrentResourceConsumption().getBehaviourList()){ 
     28                        for(PhaseSystemLoad pb: task.getExecutionProfile().getCurrentResourceConsumption().getSystemLoad()){ 
    2929                                if(pb.getResouceName().equals("PM_CPU_Usage")){ 
    3030                                        cpuUsage = pb.getUtilization(); 
  • 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) { 
  • DCWoRMS/branches/coolemall/src/example/timeestimation/coolemall/PhaseBasedTimeEstimationPlugin.java

    r1396 r1415  
    55 
    66import schedframe.events.scheduling.SchedulingEvent; 
     7import schedframe.resources.computing.ComputingResource; 
     8import schedframe.resources.computing.Core; 
     9import schedframe.resources.computing.Processor; 
     10import schedframe.resources.units.PEUnit; 
     11import schedframe.resources.units.ProcessingElements; 
    712import schedframe.resources.units.ResourceUnit; 
    813import schedframe.resources.units.ResourceUnitName; 
    9 import schedframe.scheduling.tasks.phases.ResourceConsumption; 
     14import schedframe.resources.units.StandardResourceUnitName; 
    1015import dcworms.schedframe.scheduling.ExecTask; 
    11 import dcworms.schedframe.scheduling.Executable; 
    1216import example.timeestimation.BaseTimeEstimationPlugin; 
    1317 
    14 public class PhaseTimeEstimationPlugin extends BaseTimeEstimationPlugin{ 
     18public class PhaseBasedTimeEstimationPlugin extends BaseTimeEstimationPlugin{ 
    1519 
    1620        /* 
     
    1822         * Requested calculation should be done based on the resources allocated for the task, 
    1923         * task description and task completion percentage. 
     24         *  
     25         * Example implementation calculate the estimation based on processing power. 
     26         * There is also a simple assumption, that processing power is a linear function 
     27         * of number of allocated units and their speed. 
    2028         */ 
    2129        public double execTimeEstimation(SchedulingEvent event, ExecTask task, 
    2230                        Map<ResourceUnitName, ResourceUnit> allocatedResources, 
    2331                        double completionPercentage) { 
     32                 
    2433 
    25                 Executable exec = (Executable) task; 
     34                //String taskFreqString = task.getExecutionProfile().getCurrentResourceConsumption().getReferenceHardware().get("cpu_maxfreq"); 
     35                //double taskFreq = Double.valueOf(taskFreqString); 
    2636 
    27                 ResourceConsumption resConsumption = exec.getExecutionProfile().getCurrentResourceConsumption(); 
     37                double speed = 0; 
     38                PEUnit peUnit = (PEUnit) allocatedResources.get(StandardResourceUnitName.PE);    
     39                 
     40                try { 
     41                        ProcessingElements pes = (ProcessingElements) peUnit; 
     42                        for (ComputingResource compResource : pes) { 
     43                                if(compResource instanceof Core) { 
     44                                        Core core = (Core) compResource; 
     45                                        speed = core.getProcessor().getPowerInterface().getPState().getFrequency(); 
     46                                        break; 
     47                                } else if (compResource instanceof Processor) { 
     48                                        Processor processor = (Processor) compResource; 
     49                                        speed = processor.getPowerInterface().getPState().getFrequency(); 
     50                                        break; 
     51                                } 
     52                        }                
     53                } catch (Exception e){ 
     54                        speed = peUnit.getSpeed();                       
     55                } 
    2856 
    29                 double execTime = (1 - completionPercentage/100) * resConsumption.getDuration(); 
     57                //speed =  taskFreq; 
     58                int cnt = peUnit.getUsedAmount(); 
    3059 
     60                double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getLenght() / (speed * cnt); 
     61 
     62                //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration() * (taskFreq / currentFrequency); 
     63                //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration(); 
     64                 
    3165                // if the result is very close to 0, but less then one millisecond then round this result to 0.001 
    3266                if (Double.compare(execTime, 0.001) < 0) { 
     
    4074 
    4175} 
     76 
     77 
Note: See TracChangeset for help on using the changeset viewer.