Ignore:
Timestamp:
02/04/13 04:16:13 (12 years ago)
Author:
wojtekp
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/trunk/src/schedframe/resources/computing/profiles/energy/EnergyExtension.java

    r769 r820  
    1717import schedframe.resources.computing.profiles.energy.power.PowerProfile; 
    1818import schedframe.resources.computing.profiles.energy.power.ui.PowerInterface; 
     19import schedframe.resources.computing.profiles.energy.thermal.ThermalInterfaceFactory; 
     20import schedframe.resources.computing.profiles.energy.thermal.ThermalProfile; 
     21import schedframe.resources.computing.profiles.energy.thermal.ui.ThermalInterface; 
    1922import schedframe.scheduling.manager.tasks.JobRegistryImpl; 
    2023 
     
    2932        protected AirThroughputProfile airFlowProfile; 
    3033         
     34        protected ThermalInterface thermalInterface; 
     35        protected ThermalProfile thermalProfile; 
     36         
    3137        protected ComputingResource computingResource; 
    3238 
    33         public EnergyExtension(PowerInterface powerInterface, PowerProfile pp) { 
    34                 this.powerInterface = powerInterface; 
    35                 this.powerProfile = pp; 
    36         } 
    3739 
    38         public EnergyExtension(PowerInterface powerInterface, PowerProfile powerProfile, 
    39                         AirThroughputInterface airFlowInterface, AirThroughputProfile airFlowProfile) { 
    40                 super(); 
    41                 this.powerInterface = powerInterface; 
     40        public EnergyExtension(ComputingResource computingResource, PowerInterface powerInterface, PowerProfile powerProfile) { 
    4241                this.powerProfile = powerProfile; 
    43                 this.airFlowInterface = airFlowInterface; 
    44                 this.airFlowProfile = airFlowProfile; 
     42                this.powerInterface = PowerInterfaceFactory.createPowerInterface(computingResource, powerProfile); 
    4543        } 
    4644         
     
    5351                this.airFlowProfile = airFlowProfile; 
    5452                this.airFlowInterface = AirThroughputInterfaceFactory.createAirThroughputInterface(computingResource, airFlowProfile); 
     53        } 
     54         
     55        public EnergyExtension(ComputingResource computingResource, PowerProfile powerProfile, 
     56                        AirThroughputProfile airFlowProfile, ThermalProfile thermalProfile) { 
     57                super(); 
     58                this.computingResource = computingResource; 
     59                this.powerProfile = powerProfile; 
     60                this.powerInterface = PowerInterfaceFactory.createPowerInterface(computingResource, powerProfile); 
     61                this.airFlowProfile = airFlowProfile; 
     62                this.airFlowInterface = AirThroughputInterfaceFactory.createAirThroughputInterface(computingResource, airFlowProfile); 
     63                this.thermalProfile = thermalProfile; 
     64                this.thermalInterface = ThermalInterfaceFactory.createThermalInterface(computingResource, thermalProfile); 
    5565        } 
    5666 
     
    6777                else if(event.getType().getName().equals(EnergyEventType.TASK_FINISHED.getName())) 
    6878                        return true; 
    69                  
    70                 if(airFlowProfile == null) 
    71                         return false;    
     79                else if(event.getType().getName().equals(EnergyEventType.RESOURCE_UTILIZATION_CHANGED.getName())) 
     80                        return true; 
     81         
    7282                if(event.getType().getName().equals(EnergyEventType.AIRFLOW_STATE_CHANGED.getName())) 
    7383                        return true; 
     
    7787 
    7888        public void handleEvent(Event event) { 
     89                 
    7990                EnergyEvent enEvent = (EnergyEvent)event; 
    8091                double power = 0; 
    81                 switch (enEvent.getType()) { 
    82                  
    83                 case POWER_STATE_CHANGED: 
    84                         power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    85                         /*if(computingResource instanceof ComputingNode){ 
    86                                 ComputingNode node = (ComputingNode)computingResource; 
    87                                 if(event.getData() instanceof PowerState){ 
    88                                         PowerState newState = (PowerState)event.getData(); 
    89                                         if(newState == PowerState.ON) { 
    90                                                 addToPowerUsageHistory(power+node.getPowerInterface().START_COST); 
    91                                                 addToPowerUsageHistory(DateTimeUtils.currentTimeMillis()+node.getPowerInterface().START_TIME, power); 
    92                                         }else if(newState == PowerState.OFF){ 
    93                                                 addToPowerUsageHistory(power+node.getPowerInterface().SHUTDOWN_COST); 
    94                                                 addToPowerUsageHistory(DateTimeUtils.currentTimeMillis()+node.getPowerInterface().SHUTDOWN_TIME, power); 
     92                double temperature = 0; 
     93                try{ 
     94                        switch (enEvent.getType()) { 
     95                         
     96                        case POWER_STATE_CHANGED: 
     97                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     98                                /*if(computingResource instanceof ComputingNode){ 
     99                                        ComputingNode node = (ComputingNode)computingResource; 
     100                                        if(event.getData() instanceof PowerState){ 
     101                                                PowerState newState = (PowerState)event.getData(); 
     102                                                if(newState == PowerState.ON) { 
     103                                                        addToPowerUsageHistory(power+node.getPowerInterface().START_COST); 
     104                                                        addToPowerUsageHistory(DateTimeUtils.currentTimeMillis() + node.getPowerInterface().START_TIME, power); 
     105                                                }else if(newState == PowerState.OFF){ 
     106                                                        addToPowerUsageHistory(power+node.getPowerInterface().SHUTDOWN_COST); 
     107                                                        addToPowerUsageHistory(DateTimeUtils.currentTimeMillis() + node.getPowerInterface().SHUTDOWN_TIME, power); 
     108                                                } 
    95109                                        } 
    96110                                } 
     111                                else*/ powerProfile.addToPowerUsageHistory(power); 
     112                                break; 
     113                                 
     114                        case FREQUENCY_CHANGED: 
     115                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     116                                powerProfile.addToPowerUsageHistory(power); 
     117                                temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     118                                thermalProfile.addToTemperatureHistory(temperature); 
     119                                break; 
     120                                 
     121                        case TASK_STARTED: 
     122                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     123                                powerProfile.addToPowerUsageHistory(power); 
     124                                temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     125                                thermalProfile.addToTemperatureHistory(temperature); 
     126                                break; 
     127         
     128                        case TASK_FINISHED: 
     129                                //System.out.println(this.resource.getName() + " - ENERGY EXTENSION: TASK FINISHED"); 
     130                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     131                                //System.out.println(this.resource.getName() + " - ESTIMATED ENERGY:" + power); 
     132                                powerProfile.addToPowerUsageHistory(power); 
     133                                temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     134                                thermalProfile.addToTemperatureHistory(temperature); 
     135                                break; 
     136                                 
     137                        case RESOURCE_UTILIZATION_CHANGED: 
     138                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     139                                powerProfile.addToPowerUsageHistory(power); 
     140                                temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     141                                thermalProfile.addToTemperatureHistory(temperature); 
     142                                break; 
     143                                 
     144                        case AIRFLOW_STATE_CHANGED: 
     145                                double airFlow = powerProfile.getEnergyEstimationPlugin().estimateAirThroughput(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     146                                airFlowProfile.addToPowerUsageHistory(airFlow); 
     147                                power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     148                                powerProfile.addToPowerUsageHistory(power); 
     149                                temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
     150                                thermalProfile.addToTemperatureHistory(temperature); 
     151                                break; 
    97152                        } 
    98                         else*/ powerProfile.addToPowerUsageHistory(power); 
    99                         break; 
     153                }catch(Exception e){ 
    100154                         
    101                 case FREQUENCY_CHANGED: 
    102                         power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    103                         powerProfile.addToPowerUsageHistory(power); 
    104                         break; 
    105                          
    106                 case TASK_STARTED: 
    107                         power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    108                         powerProfile.addToPowerUsageHistory(power); 
    109                         break; 
    110  
    111                 case TASK_FINISHED: 
    112                         //System.out.println(this.resource.getName() + " - ENERGY EXTENSION: TASK FINISHED"); 
    113                         power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    114                         //System.out.println(this.resource.getName() + " - ESTIMATED ENERGY:" + power); 
    115                         powerProfile.addToPowerUsageHistory(power); 
    116                         break; 
    117                 case AIRFLOW_STATE_CHANGED: 
    118                         System.out.println("=====" + computingResource.getName()); 
    119                         double airFlow = powerProfile.getEnergyEstimationPlugin().estimateAirThroughput(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    120                         airFlowProfile.addToPowerUsageHistory(airFlow); 
    121                         power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(enEvent, new JobRegistryImpl(computingResource.getName()), computingResource); 
    122                         powerProfile.addToPowerUsageHistory(power); 
    123                         break; 
    124155                } 
    125156        } 
     
    156187                return airFlowProfile; 
    157188        } 
     189         
     190        public ThermalProfile getThermalProfile() { 
     191                return thermalProfile; 
     192        } 
     193 
     194        public ThermalInterface getThermalInterface() { 
     195                return thermalInterface; 
     196        } 
    158197 
    159198} 
Note: See TracChangeset for help on using the changeset viewer.