Changeset 821 for DCWoRMS/trunk/src/simulator/stats/implementation
- Timestamp:
- 02/04/13 04:16:55 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/trunk/src/simulator/stats/implementation/DCWormsStatistics.java
r794 r821 65 65 import schedframe.resources.computing.profiles.energy.airthroughput.AirFlowValue; 66 66 import schedframe.resources.computing.profiles.energy.power.PowerUsage; 67 import schedframe.resources.computing.profiles.energy.thermal.TemperatureValue; 67 68 import schedframe.resources.units.PEUnit; 68 69 import schedframe.resources.units.ProcessingElements; … … 109 110 protected static final String ENERGYUSAGE_STATISTICS_OUTPUT_FILE_NAME = "EnergyUsage.txt"; 110 111 protected static final String AIRFLOW_STATISTICS_OUTPUT_FILE_NAME = "AirThroughput.txt"; 112 protected static final String TEMPERATURE_STATISTICS_OUTPUT_FILE_NAME = "Temperature.txt"; 111 113 112 114 protected static final String DIAGRAMS_FILE_NAME_PREFIX = "Chart_"; … … 141 143 protected Map<ResourceType, List<XYDataset>> resourcePowerUsageDiagrams; 142 144 protected Map<ResourceType, List<XYDataset>> resourceAirFlowDiagrams; 145 protected Map<ResourceType, List<XYDataset>> resourceTemperatureDiagrams; 143 146 protected Map<ResourceType, List<XYDataset>> resourceLoadDiagrams; 144 147 … … 250 253 if(ArrayUtils.contains(configuration.resForAirFlowChart, resourceName)) 251 254 cStats.add(Stats.chartAirFlow); 255 cStats.add(Stats.textTemperature); 256 if(ArrayUtils.contains(configuration.resForTemperatureChart, resourceName)) 257 cStats.add(Stats.chartTemperature); 252 258 type_stats.put(resourceName, cStats); 253 259 } … … 259 265 resourcePowerUsageDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 260 266 resourceAirFlowDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 267 resourceTemperatureDiagrams = new HashMap<ResourceType, List<XYDataset>>(); 261 268 262 269 ganttDiagramTimetable = new Timetable(new FixedMillisecond( … … 292 299 airFlowStatsFile = null; 293 300 } 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 } 294 311 295 312 basicResStats = gatherPEStats(jr.getExecutableTasks()); … … 316 333 ResourcePowerStats energyUsage = null; 317 334 ResourceAirFlowStats airFlow = null; 335 ResourceTemperatureStats temperature = null; 318 336 if(type_stats.get(resourceName).contains(Stats.textLoad)){ 319 337 resourceUsage = gatherResourceLoadStats(resource, basicResStats); … … 404 422 } 405 423 } 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 } 406 462 } 407 463 } … … 411 467 createAccumulatedResourceSimulationStatistic(); 412 468 469 if (temperatureStatsFile != null) { 470 temperatureStatsFile.close(); 471 } 413 472 if (airFlowStatsFile != null) { 414 473 airFlowStatsFile.close(); … … 635 694 } 636 695 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 637 723 private void createResourceLoadDiagram(ResourceUsageStats resLoadStats) { 638 724 … … 667 753 } else { 668 754 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); 669 770 } 670 771 } … … 770 871 subtitle, axisName); 771 872 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())) 772 886 return false; 773 887 } … … 1322 1436 Integer o1int; 1323 1437 Integer o2int; 1324 1438 String o1string; 1439 String o2string; 1440 o1string = o1.substring(0, o1.indexOf("_")); 1441 o2string = o2.substring(0, o2.indexOf("_")); 1325 1442 o1int = Integer.parseInt(o1.substring(o1.indexOf("_")+1)); 1326 1443 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); 1328 1448 } 1329 1449 } … … 1401 1521 chartEnergy, 1402 1522 textAirFlow, 1403 chartAirFlow; 1523 chartAirFlow, 1524 textTemperature, 1525 chartTemperature; 1404 1526 }
Note: See TracChangeset
for help on using the changeset viewer.