Ignore:
Timestamp:
09/18/14 17:37:54 (11 years ago)
Author:
wojtekp
Message:
 
Location:
DCWoRMS/branches/coolemall/src/schedframe/resources/computing
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/schedframe/resources/computing/ComputingResource.java

    r1432 r1440  
    268268                                } 
    269269                        } 
    270  
    271270                } 
    272271                 
     
    290289                                                break; 
    291290                                        } 
     291                                        case POWER_STATE_CHANGED: { 
     292                                                scheduler.sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.RESOURCE_POWER_STATE_CHANGED, src); 
     293                                                break; 
     294                                        } 
    292295                                } 
    293296 
  • DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ComputingResourcePowerInterface.java

    r1423 r1440  
    1515import schedframe.resources.computing.profiles.energy.power.PowerUsage; 
    1616import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
     17import schedframe.resources.computing.profiles.energy.power.Transition; 
     18import simulator.DataCenterWorkloadSimulator; 
    1719 
    1820public class ComputingResourcePowerInterface implements PowerInterface{ 
     
    2830        } 
    2931         
    30         public boolean setPowerState(PowerStateName state) { 
    31                 if(!supportPowerState(state)) 
     32        public boolean setPowerState(PowerStateName newState) { 
     33                if(!supportPowerState(newState)) 
    3234                        return false; 
    3335                         
    34                 if(state != currentPowerState){ 
    35                         currentPowerState = state; 
     36                if(newState != currentPowerState){ 
    3637 
    37                         for(ComputingResource child:resource.getChildren()){ 
    38                                 if(child.getPowerInterface().supportPowerState(state)){ 
    39                                         child.getPowerInterface().setPowerState(state); 
     38                        Transition t = getTransition(currentPowerState, newState); 
     39                        if(t == null){ 
     40                                currentPowerState = newState; 
     41                        } else{ 
     42                                if(t.getTime() <= 0 ){ 
     43                                        currentPowerState = newState; 
     44                                } else { 
     45                                        currentPowerState = t.getName(); 
     46                                        DataCenterWorkloadSimulator.getEventManager().sendToResource(resource.getFullName(), t.getTime(), new ResourceEvent(ResourceEventType.UPDATE_POWER_STATE, newState, resource.getFullName())); 
    4047                                } 
    4148                        } 
    4249 
    43                         if(state == StandardPowerStateName.OFF){ 
     50                        for(ComputingResource child:resource.getChildren()){ 
     51                                if(child.getPowerInterface() != null){ 
     52                                        child.getPowerInterface().setPowerState(currentPowerState); 
     53                                } 
     54                        } 
     55 
     56                        if(currentPowerState == StandardPowerStateName.OFF || currentPowerState == StandardPowerStateName.POWEROFF || currentPowerState == StandardPowerStateName.BOOT){ 
    4457                                resource.setStatus(ResourceStatus.UNAVAILABLE); 
    4558                        } 
    46                         else if(state == StandardPowerStateName.ON){ 
     59                        else if(currentPowerState == StandardPowerStateName.ON){ 
    4760                                resource.setStatus(ResourceStatus.FREE); 
    4861                        } 
     
    7487                } 
    7588                return false; 
    76                  
    7789        } 
    7890         
     
    114126        } 
    115127 
     128        protected Transition getTransition(PowerStateName from, PowerStateName to){ 
     129                List<PowerState> availablePowerStates = getSupportedPowerStates(); 
     130                Transition transition = null; 
     131                for(PowerState ps : availablePowerStates){ 
     132                        if(ps.getName().getLabel().equals(from.getLabel())){ 
     133                                List<Transition> transitions = ps.getTransitions(); 
     134                                for(Transition t: transitions){ 
     135                                        if(t.getTo().getLabel().equals(to.getLabel())){ 
     136                                                transition = t; 
     137                                                break; 
     138                                        } 
     139                                } 
     140                        } 
     141                } 
     142                return transition; 
     143        } 
    116144} 
  • DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/NodePowerInterface.java

    r1431 r1440  
    22 
    33 
    4 import java.util.List; 
    5  
    6  
    7 import schedframe.resources.ResourceStatus; 
    84import schedframe.resources.computing.ComputingResource; 
    9 import schedframe.resources.computing.Node; 
    10 import schedframe.resources.computing.profiles.energy.ResourceEvent; 
    11 import schedframe.resources.computing.profiles.energy.ResourceEventType; 
    125import schedframe.resources.computing.profiles.energy.power.PowerProfile; 
    13 import schedframe.resources.computing.profiles.energy.power.PowerState; 
    14 import schedframe.resources.computing.profiles.energy.power.PowerStateName; 
    156import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 
    16 import schedframe.resources.computing.profiles.energy.power.Transition; 
    17 import simulator.DataCenterWorkloadSimulator; 
    187 
    198public class NodePowerInterface extends ComputingResourcePowerInterface{ 
     
    2413        } 
    2514 
    26         public boolean setPowerState(PowerStateName state){ 
    27                 if(!supportPowerState(state)) 
    28                         return false; 
    29                 if(state != currentPowerState){ 
    30                         currentPowerState = state; 
    31                          
    32                         Node node = (Node) resource; 
    33                         for(ComputingResource child: node.getProcessors()){ 
    34                                 if(child.getPowerInterface() != null){ 
    35                                         child.getPowerInterface().setPowerState(state);  
    36                                 } 
    37                         } 
    38  
    39                         if(state == StandardPowerStateName.OFF || state == StandardPowerStateName.POWEROFF || state == StandardPowerStateName.BOOT){ 
    40                                 node.setStatus(ResourceStatus.UNAVAILABLE); 
    41                         } 
    42                         else if(state == StandardPowerStateName.ON ){ 
    43                                 node.setStatus(ResourceStatus.FREE); 
    44                         } 
    45          
    46                         node.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, node.getFullName())); 
    47  
    48                         //node.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, computingNode.getName())); 
    49                         //ResourceController.traceResource(new DateTime().getMillis(), resource.getFullName(), "POWER_STATE_CHANGED", state.getName());  
    50                 } 
    51                 return true; 
    52         } 
    53  
    5415        public void turnOn(){ 
    55                 /*double timePenalty = getTransitionTime(currentPowerState, StandardPowerStateName.ON); 
    56                 setPowerState(StandardPowerStateName.BOOT); 
    57                 DataCenterWorkloadSimulator.getEventManager().sendToResource(resource.getFullName(), timePenalty, new ResourceEvent(ResourceEventType.UPDATE_POWER_STATE, StandardPowerStateName.ON, resource.getFullName())); 
    58                  */              
    5916                setPowerState(StandardPowerStateName.ON); 
    6017        } 
    6118         
    6219        public void turnOff(){ 
    63                 /*double timePenalty = getTransitionTime(currentPowerState, StandardPowerStateName.OFF); 
    64                 setPowerState(StandardPowerStateName.POWEROFF); 
    65                 DataCenterWorkloadSimulator.getEventManager().sendToResource(resource.getFullName(), timePenalty, new ResourceEvent(ResourceEventType.UPDATE_POWER_STATE, StandardPowerStateName.OFF, resource.getFullName()));*/ 
    6620                setPowerState(StandardPowerStateName.OFF); 
    6721        } 
    6822 
    69         private double getTransitionTime(PowerStateName from, PowerStateName to){ 
    70                 List<PowerState> availablePowerStates = getSupportedPowerStates(); 
    71                 double time = 0; 
    72                 for(PowerState ps : availablePowerStates){ 
    73                         if(ps.getName().getLabel().equals(from.getLabel())){ 
    74                                 List<Transition> transitions = ps.getTransitions(); 
    75                                 for(Transition t: transitions){ 
    76                                         if(t.getTo().getLabel().equals(to)){ 
    77                                                 time = t.getTime(); 
    78                                         } 
    79                                 } 
    80                         } 
    81                 } 
    82                 return time; 
    83         } 
    84  
    85  
    8623} 
Note: See TracChangeset for help on using the changeset viewer.