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

Legend:

Unmodified
Added
Removed
  • DCWoRMS/trunk/src/simulator/stats/implementation/DCWormsStatistics.java

    r794 r821  
    6565import schedframe.resources.computing.profiles.energy.airthroughput.AirFlowValue; 
    6666import schedframe.resources.computing.profiles.energy.power.PowerUsage; 
     67import schedframe.resources.computing.profiles.energy.thermal.TemperatureValue; 
    6768import schedframe.resources.units.PEUnit; 
    6869import schedframe.resources.units.ProcessingElements; 
     
    109110        protected static final String ENERGYUSAGE_STATISTICS_OUTPUT_FILE_NAME = "EnergyUsage.txt"; 
    110111        protected static final String AIRFLOW_STATISTICS_OUTPUT_FILE_NAME = "AirThroughput.txt"; 
     112        protected static final String TEMPERATURE_STATISTICS_OUTPUT_FILE_NAME = "Temperature.txt"; 
    111113 
    112114        protected static final String DIAGRAMS_FILE_NAME_PREFIX = "Chart_"; 
     
    141143        protected Map<ResourceType, List<XYDataset>> resourcePowerUsageDiagrams; 
    142144        protected Map<ResourceType, List<XYDataset>> resourceAirFlowDiagrams; 
     145        protected Map<ResourceType, List<XYDataset>> resourceTemperatureDiagrams; 
    143146        protected Map<ResourceType, List<XYDataset>> resourceLoadDiagrams; 
    144147         
     
    250253                        if(ArrayUtils.contains(configuration.resForAirFlowChart, resourceName)) 
    251254                                cStats.add(Stats.chartAirFlow); 
     255                        cStats.add(Stats.textTemperature); 
     256                        if(ArrayUtils.contains(configuration.resForTemperatureChart, resourceName)) 
     257                                cStats.add(Stats.chartTemperature); 
    252258                        type_stats.put(resourceName, cStats); 
    253259                }                
     
    259265                resourcePowerUsageDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 
    260266                resourceAirFlowDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 
     267                resourceTemperatureDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 
    261268                 
    262269                ganttDiagramTimetable = new Timetable(new FixedMillisecond( 
     
    292299                        airFlowStatsFile = null; 
    293300                } 
     301                 
     302                PrintStream temperatureStatsFile = null; 
     303                try { 
     304                        File file = new File(outputFolderName + STATS_FILE_NAME_PREFIX 
     305                                        + simulationIdentifier + "_" 
     306                                        + TEMPERATURE_STATISTICS_OUTPUT_FILE_NAME); 
     307                        temperatureStatsFile = new PrintStream(new FileOutputStream(file)); 
     308                } catch (IOException e) { 
     309                        temperatureStatsFile = null; 
     310                } 
    294311 
    295312                basicResStats = gatherPEStats(jr.getExecutableTasks()); 
     
    316333                                        ResourcePowerStats energyUsage = null; 
    317334                                        ResourceAirFlowStats airFlow = null; 
     335                                        ResourceTemperatureStats temperature = null; 
    318336                                        if(type_stats.get(resourceName).contains(Stats.textLoad)){ 
    319337                                                resourceUsage = gatherResourceLoadStats(resource, basicResStats); 
     
    404422                                                } 
    405423                                        } 
     424                                         
     425                                        if(type_stats.get(resourceName).contains(Stats.textTemperature)){ 
     426                                                temperature = gatherResourceTemperatureStats(resource); 
     427                                                temperature.setMeanValue(calculateMeanValue(temperature)); 
     428                                                temperature.setSumValue(temperature.getMeanValue() * (endSimulationTime - startSimulationTime) / (3600 * MILLI_SEC)); 
     429                                                 
     430                                                EnergyExtension een = (EnergyExtension)(resource.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION)); 
     431                                                if(resourceController.getComputingResources().contains(resource)) { 
     432                                                        if( een != null /*&& een.getPp() != null*/ ){ 
     433                                                                accStats.meanTemperature.add(temperature.getSumValue()); 
     434                                                        } 
     435 
     436                                                } else if( een != null && een.getThermalProfile() != null ){ 
     437                                                        ComputingResource parent = resource.getParent(); 
     438                                                        een = (EnergyExtension)(parent.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION)); 
     439                                                        boolean top = true; 
     440                                                        while(parent != null){ 
     441                                                                if(een != null &&  een.getThermalProfile() != null) { 
     442                                                                        top = false; 
     443                                                                        break; 
     444                                                                } 
     445                                                                parent = parent.getParent(); 
     446                                                        } 
     447                                                        if(top == true){ 
     448                                                                accStats.meanTemperature.add(temperature.getSumValue()); 
     449                                                        } 
     450                                                } 
     451                                                if (temperatureStatsFile != null) { 
     452                                                        Object txt = temperature.serialize(serializer); 
     453                                                        temperatureStatsFile.println(txt); 
     454                                                } 
     455                                        } 
     456                                        if(type_stats.get(resourceName).contains(Stats.chartTemperature)){ 
     457 
     458                                                if (configuration.creatediagrams_restemperature) { 
     459                                                        createResourceTemperatureDiagramData(temperature); 
     460                                                } 
     461                                        } 
    406462                                } 
    407463                        } 
     
    411467                createAccumulatedResourceSimulationStatistic(); 
    412468                 
     469                if (temperatureStatsFile != null) { 
     470                        temperatureStatsFile.close(); 
     471                } 
    413472                if (airFlowStatsFile != null) { 
    414473                        airFlowStatsFile.close(); 
     
    635694        } 
    636695         
     696        private ResourceTemperatureStats gatherResourceTemperatureStats(ComputingResource resource) { 
     697 
     698                ResourceTemperatureStats resTemperature = new ResourceTemperatureStats(resource.getName(), resource.getType(), "resourceTemperatureStats"); 
     699                Map<Long, Double> temperature = resTemperature.getHistory(); 
     700                 
     701                ExtensionList extensionList = resource.getExtensionList(); 
     702                if(extensionList != null){ 
     703                        for (Extension extension : extensionList) { 
     704                                if (extension.getType() == ExtensionType.ENERGY_EXTENSION) { 
     705                                        EnergyExtension ee = (EnergyExtension)extension; 
     706                                        if(ee.getThermalProfile() == null) 
     707                                                break; 
     708 
     709                                        List<TemperatureValue> temperatureHistory = ee.getThermalProfile().getTemperatureHistory(); 
     710                                        if(temperatureHistory.size() == 0) 
     711                                                break; 
     712                                        long endSimulationTime = DateTimeUtilsExt.currentTimeMillis(); 
     713                                        temperatureHistory.add(new TemperatureValue(endSimulationTime, ee.getThermalProfile().getTemperatureHistory().get(ee.getThermalProfile().getTemperatureHistory().size()-1).getValue())); 
     714                                        for(TemperatureValue af: temperatureHistory){ 
     715                                                temperature.put(af.getTimestamp(), af.getValue()); 
     716                                        } 
     717                                } 
     718                        } 
     719                } 
     720                return resTemperature; 
     721        } 
     722         
    637723        private void createResourceLoadDiagram(ResourceUsageStats resLoadStats) { 
    638724 
     
    667753                } else { 
    668754                        energyDiagramData.add(dataset); 
     755                } 
     756        } 
     757         
     758        private void createResourceTemperatureDiagramData(ResourceDynamicStats temperatureStats) { 
     759                 
     760                XYDataset dataset = createResourceChartDataSet(temperatureStats, 
     761                                startSimulationTime, endSimulationTime); 
     762                 
     763                List<XYDataset> temperatureDiagramData = resourceTemperatureDiagrams.get(temperatureStats.getResourceType()); 
     764                if(temperatureDiagramData == null){ 
     765                        temperatureDiagramData = new ArrayList<XYDataset>(); 
     766                        temperatureDiagramData.add(dataset); 
     767                        resourceTemperatureDiagrams.put(temperatureStats.getResourceType(), temperatureDiagramData); 
     768                } else { 
     769                        temperatureDiagramData.add(dataset); 
    669770                } 
    670771        } 
     
    770871                                                subtitle, axisName); 
    771872                                if (!saveXYPlotChart(resourceAirFlowDiagram, fileName + "AirThroughput - "+resType.getName())) 
     873                                        return false; 
     874                        } 
     875                } 
     876                 
     877                chartName = "Temperature diagram for " 
     878                        + DataCenterWorkloadSimulator.SIMULATOR_NAME; 
     879                JFreeChart resourceTemperatureDiagram = null; 
     880                if (configuration.creatediagrams_restemperature) { 
     881                        String axisName = "TEMPERATURE [C]"; 
     882                        for(ResourceType resType: resourceTemperatureDiagrams.keySet()){ 
     883                                resourceTemperatureDiagram = getResourceDynamicDiagram(resourceTemperatureDiagrams.get(resType), simulationTime, chartName, 
     884                                                subtitle, axisName); 
     885                                if (!saveXYPlotChart(resourceTemperatureDiagram, fileName + "Temperature - "+resType.getName())) 
    772886                                        return false; 
    773887                        } 
     
    13221436                        Integer o1int; 
    13231437                        Integer o2int; 
    1324  
     1438                        String o1string; 
     1439                        String o2string; 
     1440                        o1string = o1.substring(0, o1.indexOf("_")); 
     1441                        o2string = o2.substring(0, o2.indexOf("_")); 
    13251442                        o1int = Integer.parseInt(o1.substring(o1.indexOf("_")+1)); 
    13261443                        o2int = Integer.parseInt(o2.substring(o2.indexOf("_")+1)); 
    1327                         return o1int.compareTo(o2int); 
     1444                        if(o1string.compareTo(o2string) != 0) 
     1445                                return o1string.compareTo(o2string); 
     1446                        else 
     1447                                return o1int.compareTo(o2int); 
    13281448                } 
    13291449        } 
     
    14011521        chartEnergy, 
    14021522        textAirFlow, 
    1403         chartAirFlow; 
     1523        chartAirFlow, 
     1524        textTemperature, 
     1525        chartTemperature; 
    14041526} 
Note: See TracChangeset for help on using the changeset viewer.