Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(459)

Side by Side Diff: tools/perf/metrics/power.py

Issue 809393002: Added support for improvement_direction to relevant values, which is propogated to chartjson. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698