| OLD | NEW | 
|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be | 
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. | 
| 4 | 4 | 
| 5 import time | 5 import time | 
| 6 | 6 | 
| 7 from metrics import Metric | 7 from metrics import Metric | 
| 8 from telemetry.core.platform import process_statistic_timeline_data | 8 from telemetry.core.platform import process_statistic_timeline_data | 
| 9 from telemetry.value import scalar | 9 from telemetry.value import scalar | 
| 10 | 10 | 
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 105     if (PowerMetric._quiescent_power_draw_mwh and | 105     if (PowerMetric._quiescent_power_draw_mwh and | 
| 106         application_energy_consumption_mwh is None and | 106         application_energy_consumption_mwh is None and | 
| 107         total_energy_consumption_mwh is not None): | 107         total_energy_consumption_mwh is not None): | 
| 108       application_energy_consumption_mwh = max( | 108       application_energy_consumption_mwh = max( | 
| 109           total_energy_consumption_mwh - PowerMetric._quiescent_power_draw_mwh, | 109           total_energy_consumption_mwh - PowerMetric._quiescent_power_draw_mwh, | 
| 110           0) | 110           0) | 
| 111 | 111 | 
| 112     if total_energy_consumption_mwh is not None: | 112     if total_energy_consumption_mwh is not None: | 
| 113       results.AddValue(scalar.ScalarValue( | 113       results.AddValue(scalar.ScalarValue( | 
| 114           results.current_page, 'energy_consumption_mwh', 'mWh', | 114           results.current_page, 'energy_consumption_mwh', 'mWh', | 
| 115           total_energy_consumption_mwh)) | 115           total_energy_consumption_mwh, higher_is_better=False)) | 
| 116 | 116 | 
| 117     if application_energy_consumption_mwh is not None: | 117     if application_energy_consumption_mwh is not None: | 
| 118       results.AddValue(scalar.ScalarValue( | 118       results.AddValue(scalar.ScalarValue( | 
| 119           results.current_page, 'application_energy_consumption_mwh', 'mWh', | 119           results.current_page, 'application_energy_consumption_mwh', 'mWh', | 
| 120           application_energy_consumption_mwh)) | 120           application_energy_consumption_mwh, higher_is_better=False)) | 
| 121 | 121 | 
| 122     component_utilization = self._results.get('component_utilization', {}) | 122     component_utilization = self._results.get('component_utilization', {}) | 
| 123     # GPU Frequency. | 123     # GPU Frequency. | 
| 124     gpu_power = component_utilization.get('gpu', {}) | 124     gpu_power = component_utilization.get('gpu', {}) | 
| 125     gpu_freq_hz = gpu_power.get('average_frequency_hz') | 125     gpu_freq_hz = gpu_power.get('average_frequency_hz') | 
| 126     if gpu_freq_hz is not None: | 126     if gpu_freq_hz is not None: | 
| 127       results.AddValue(scalar.ScalarValue( | 127       results.AddValue(scalar.ScalarValue( | 
| 128           results.current_page, 'gpu_average_frequency_hz', 'hz', gpu_freq_hz, | 128           results.current_page, 'gpu_average_frequency_hz', 'hz', gpu_freq_hz, | 
| 129           important=False)) | 129           important=False, higher_is_better=False)) | 
| 130 | 130 | 
| 131     # Add idle wakeup numbers for all processes. | 131     # Add idle wakeup numbers for all processes. | 
| 132     for (process_type, stats) in self._results.get('cpu_stats', {}).items(): | 132     for (process_type, stats) in self._results.get('cpu_stats', {}).items(): | 
| 133       trace_name_for_process = 'idle_wakeups_%s' % (process_type.lower()) | 133       trace_name_for_process = 'idle_wakeups_%s' % (process_type.lower()) | 
| 134       results.AddValue(scalar.ScalarValue( | 134       results.AddValue(scalar.ScalarValue( | 
| 135           results.current_page, trace_name_for_process, 'count', stats, | 135           results.current_page, trace_name_for_process, 'count', stats, | 
| 136           important=False)) | 136           important=False, higher_is_better=False)) | 
| 137 | 137 | 
| 138     # Add temperature measurements. | 138     # Add temperature measurements. | 
| 139     whole_package_utilization = component_utilization.get('whole_package', {}) | 139     whole_package_utilization = component_utilization.get('whole_package', {}) | 
| 140     board_temperature_c = whole_package_utilization.get('average_temperature_c') | 140     board_temperature_c = whole_package_utilization.get('average_temperature_c') | 
| 141     if board_temperature_c is not None: | 141     if board_temperature_c is not None: | 
| 142       results.AddValue(scalar.ScalarValue( | 142       results.AddValue(scalar.ScalarValue( | 
| 143           results.current_page, 'board_temperature', 'celsius', | 143           results.current_page, 'board_temperature', 'celsius', | 
| 144           board_temperature_c, important=False)) | 144           board_temperature_c, important=False, higher_is_better=False)) | 
| 145 | 145 | 
| 146     # Add CPU frequency measurements. | 146     # Add CPU frequency measurements. | 
| 147     frequency_hz = whole_package_utilization.get('frequency_percent') | 147     frequency_hz = whole_package_utilization.get('frequency_percent') | 
| 148     if frequency_hz is not None: | 148     if frequency_hz is not None: | 
| 149       frequency_sum = 0.0 | 149       frequency_sum = 0.0 | 
| 150       for freq, percent in frequency_hz.iteritems(): | 150       for freq, percent in frequency_hz.iteritems(): | 
| 151         frequency_sum += freq * (percent / 100.0) | 151         frequency_sum += freq * (percent / 100.0) | 
| 152       results.AddValue(scalar.ScalarValue( | 152       results.AddValue(scalar.ScalarValue( | 
| 153           results.current_page, 'cpu_average_frequency_hz', 'Hz', | 153           results.current_page, 'cpu_average_frequency_hz', 'Hz', | 
| 154           frequency_sum, important=False)) | 154           frequency_sum, important=False, higher_is_better=False)) | 
| 155 | 155 | 
| 156     # Add CPU c-state residency measurements. | 156     # Add CPU c-state residency measurements. | 
| 157     cstate_percent = whole_package_utilization.get('cstate_residency_percent') | 157     cstate_percent = whole_package_utilization.get('cstate_residency_percent') | 
| 158     if cstate_percent is not None: | 158     if cstate_percent is not None: | 
| 159       for state, percent in cstate_percent.iteritems(): | 159       for state, percent in cstate_percent.iteritems(): | 
| 160         results.AddValue(scalar.ScalarValue( | 160         results.AddValue(scalar.ScalarValue( | 
| 161             results.current_page, 'cpu_cstate_%s_residency_percent' % state, | 161             results.current_page, 'cpu_cstate_%s_residency_percent' % state, | 
| 162             '%', percent, important=False)) | 162             '%', percent, important=False, higher_is_better=False)) | 
| 163 | 163 | 
| 164     self._results = None | 164     self._results = None | 
| 165 | 165 | 
| 166 def _SubtractCpuStats(cpu_stats, start_cpu_stats): | 166 def _SubtractCpuStats(cpu_stats, start_cpu_stats): | 
| 167   """Computes number of idle wakeups that occurred over measurement period. | 167   """Computes number of idle wakeups that occurred over measurement period. | 
| 168 | 168 | 
| 169   Each of the two cpu_stats arguments is a dict as returned by the | 169   Each of the two cpu_stats arguments is a dict as returned by the | 
| 170   Browser.cpu_stats call. | 170   Browser.cpu_stats call. | 
| 171 | 171 | 
| 172   Returns: | 172   Returns: | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 186       continue | 186       continue | 
| 187 | 187 | 
| 188     assert isinstance(cpu_stats[process_type]['IdleWakeupCount'], | 188     assert isinstance(cpu_stats[process_type]['IdleWakeupCount'], | 
| 189         process_statistic_timeline_data.IdleWakeupTimelineData) | 189         process_statistic_timeline_data.IdleWakeupTimelineData) | 
| 190     idle_wakeup_delta = (cpu_stats[process_type]['IdleWakeupCount'] - | 190     idle_wakeup_delta = (cpu_stats[process_type]['IdleWakeupCount'] - | 
| 191                         start_cpu_stats[process_type]['IdleWakeupCount']) | 191                         start_cpu_stats[process_type]['IdleWakeupCount']) | 
| 192     cpu_delta[process_type] = idle_wakeup_delta.total_sum() | 192     cpu_delta[process_type] = idle_wakeup_delta.total_sum() | 
| 193     total = total + cpu_delta[process_type] | 193     total = total + cpu_delta[process_type] | 
| 194   cpu_delta['Total'] = total | 194   cpu_delta['Total'] = total | 
| 195   return cpu_delta | 195   return cpu_delta | 
| OLD | NEW | 
|---|