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

Side by Side Diff: tools/telemetry/telemetry/web_perf/timeline_based_measurement.py

Issue 908223003: Revert of [telemetry] Add a V8GCTimes measurement and benchmarks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months 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 from collections import defaultdict 5 from collections import defaultdict
6 6
7 from telemetry.core.platform import tracing_category_filter 7 from telemetry.core.platform import tracing_category_filter
8 from telemetry.core.platform import tracing_options 8 from telemetry.core.platform import tracing_options
9 from telemetry.page import page_test 9 from telemetry.page import page_test
10 from telemetry.timeline import model as model_module 10 from telemetry.timeline import model as model_module
11 from telemetry.value import trace 11 from telemetry.value import trace
12 from telemetry.web_perf import timeline_interaction_record as tir_module 12 from telemetry.web_perf import timeline_interaction_record as tir_module
13 from telemetry.web_perf.metrics import fast_metric
13 from telemetry.web_perf.metrics import responsiveness_metric 14 from telemetry.web_perf.metrics import responsiveness_metric
14 from telemetry.web_perf.metrics import smoothness 15 from telemetry.web_perf.metrics import smoothness
15 16
16 # TimelineBasedMeasurement considers all instrumentation as producing a single 17 # TimelineBasedMeasurement considers all instrumentation as producing a single
17 # timeline. But, depending on the amount of instrumentation that is enabled, 18 # timeline. But, depending on the amount of instrumentation that is enabled,
18 # overhead increases. The user of the measurement must therefore chose between 19 # overhead increases. The user of the measurement must therefore chose between
19 # a few levels of instrumentation. 20 # a few levels of instrumentation.
20 NO_OVERHEAD_LEVEL = 'no-overhead' 21 NO_OVERHEAD_LEVEL = 'no-overhead'
22 V8_OVERHEAD_LEVEL = 'v8-overhead'
21 MINIMAL_OVERHEAD_LEVEL = 'minimal-overhead' 23 MINIMAL_OVERHEAD_LEVEL = 'minimal-overhead'
22 DEBUG_OVERHEAD_LEVEL = 'debug-overhead' 24 DEBUG_OVERHEAD_LEVEL = 'debug-overhead'
23 25
24 ALL_OVERHEAD_LEVELS = [ 26 ALL_OVERHEAD_LEVELS = [
25 NO_OVERHEAD_LEVEL, 27 NO_OVERHEAD_LEVEL,
28 V8_OVERHEAD_LEVEL,
26 MINIMAL_OVERHEAD_LEVEL, 29 MINIMAL_OVERHEAD_LEVEL,
27 DEBUG_OVERHEAD_LEVEL 30 DEBUG_OVERHEAD_LEVEL
28 ] 31 ]
29 32
30 DEFAULT_METRICS = { 33 DEFAULT_METRICS = {
34 tir_module.IS_FAST: fast_metric.FastMetric,
31 tir_module.IS_SMOOTH: smoothness.SmoothnessMetric, 35 tir_module.IS_SMOOTH: smoothness.SmoothnessMetric,
32 tir_module.IS_RESPONSIVE: responsiveness_metric.ResponsivenessMetric, 36 tir_module.IS_RESPONSIVE: responsiveness_metric.ResponsivenessMetric,
33 } 37 }
34 38
35 class InvalidInteractions(Exception): 39 class InvalidInteractions(Exception):
36 pass 40 pass
37 41
38 42
39 def _GetMetricsFromFlags(record_custom_flags): 43 def _GetMetricsFromFlags(record_custom_flags):
40 flags_set = set(record_custom_flags) 44 flags_set = set(record_custom_flags)
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 Benchmark.CreateTimelineBasedMeasurementOptions. 135 Benchmark.CreateTimelineBasedMeasurementOptions.
132 """ 136 """
133 137
134 def __init__(self, overhead_level=NO_OVERHEAD_LEVEL, 138 def __init__(self, overhead_level=NO_OVERHEAD_LEVEL,
135 get_metrics_from_flags_callback=_GetMetricsFromFlags): 139 get_metrics_from_flags_callback=_GetMetricsFromFlags):
136 """As the amount of instrumentation increases, so does the overhead. 140 """As the amount of instrumentation increases, so does the overhead.
137 The user of the measurement chooses the overhead level that is appropriate, 141 The user of the measurement chooses the overhead level that is appropriate,
138 and the tracing is filtered accordingly. 142 and the tracing is filtered accordingly.
139 143
140 overhead_level: Can either be a custom TracingCategoryFilter object or 144 overhead_level: Can either be a custom TracingCategoryFilter object or
141 one of NO_OVERHEAD_LEVEL, MINIMAL_OVERHEAD_LEVEL or 145 one of NO_OVERHEAD_LEVEL, V8_OVERHEAD_LEVEL, MINIMAL_OVERHEAD_LEVEL,
142 DEBUG_OVERHEAD_LEVEL. 146 or DEBUG_OVERHEAD_LEVEL. The v8 overhead level is a temporary solution
147 that may be removed.
143 get_metrics_from_flags_callback: Callback function which returns a 148 get_metrics_from_flags_callback: Callback function which returns a
144 a list of metrics based on timeline record flags. See the default 149 a list of metrics based on timeline record flags. See the default
145 _GetMetricsFromFlags() as an example. 150 _GetMetricsFromFlags() as an example.
146 """ 151 """
147 if (not isinstance(overhead_level, 152 if (not isinstance(overhead_level,
148 tracing_category_filter.TracingCategoryFilter) and 153 tracing_category_filter.TracingCategoryFilter) and
149 overhead_level not in ALL_OVERHEAD_LEVELS): 154 overhead_level not in ALL_OVERHEAD_LEVELS):
150 raise Exception("Overhead level must be a TracingCategoryFilter object" 155 raise Exception("Overhead level must be a TracingCategoryFilter object"
151 " or valid overhead level string." 156 " or valid overhead level string."
152 " Given overhead level: %s" % overhead_level) 157 " Given overhead level: %s" % overhead_level)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 217
213 if isinstance(self._tbm_options.overhead_level, 218 if isinstance(self._tbm_options.overhead_level,
214 tracing_category_filter.TracingCategoryFilter): 219 tracing_category_filter.TracingCategoryFilter):
215 category_filter = self._tbm_options.overhead_level 220 category_filter = self._tbm_options.overhead_level
216 else: 221 else:
217 assert self._tbm_options.overhead_level in ALL_OVERHEAD_LEVELS, ( 222 assert self._tbm_options.overhead_level in ALL_OVERHEAD_LEVELS, (
218 "Invalid TBM Overhead Level: %s" % self._tbm_options.overhead_level) 223 "Invalid TBM Overhead Level: %s" % self._tbm_options.overhead_level)
219 224
220 if self._tbm_options.overhead_level == NO_OVERHEAD_LEVEL: 225 if self._tbm_options.overhead_level == NO_OVERHEAD_LEVEL:
221 category_filter = tracing_category_filter.CreateNoOverheadFilter() 226 category_filter = tracing_category_filter.CreateNoOverheadFilter()
227 # TODO(ernstm): Remove this overhead level when benchmark relevant v8
228 # events become available in the 'benchmark' category.
229 elif self._tbm_options.overhead_level == V8_OVERHEAD_LEVEL:
230 category_filter = tracing_category_filter.CreateNoOverheadFilter()
231 category_filter.AddIncludedCategory('v8')
222 elif self._tbm_options.overhead_level == MINIMAL_OVERHEAD_LEVEL: 232 elif self._tbm_options.overhead_level == MINIMAL_OVERHEAD_LEVEL:
223 category_filter = tracing_category_filter.CreateMinimalOverheadFilter() 233 category_filter = tracing_category_filter.CreateMinimalOverheadFilter()
224 else: 234 else:
225 category_filter = tracing_category_filter.CreateDebugOverheadFilter() 235 category_filter = tracing_category_filter.CreateDebugOverheadFilter()
226 236
227 for new_category_filter in self._tbm_options.extra_category_filters: 237 for new_category_filter in self._tbm_options.extra_category_filters:
228 category_filter.AddIncludedCategory(new_category_filter) 238 category_filter.AddIncludedCategory(new_category_filter)
229 239
230 # TODO(slamm): Move synthetic_delay_categories to the TBM options. 240 # TODO(slamm): Move synthetic_delay_categories to the TBM options.
231 for delay in synthetic_delay_categories or []: 241 for delay in synthetic_delay_categories or []:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 tracing_controller, page.GetSyntheticDelayCategories()) 279 tracing_controller, page.GetSyntheticDelayCategories())
270 280
271 def ValidateAndMeasurePage(self, page, tab, results): 281 def ValidateAndMeasurePage(self, page, tab, results):
272 """Collect all possible metrics and added them to results.""" 282 """Collect all possible metrics and added them to results."""
273 tracing_controller = tab.browser.platform.tracing_controller 283 tracing_controller = tab.browser.platform.tracing_controller
274 self._measurement.Measure(tracing_controller, results) 284 self._measurement.Measure(tracing_controller, results)
275 285
276 def CleanUpAfterPage(self, page, tab): 286 def CleanUpAfterPage(self, page, tab):
277 tracing_controller = tab.browser.platform.tracing_controller 287 tracing_controller = tab.browser.platform.tracing_controller
278 self._measurement.DidRunUserStory(tracing_controller) 288 self._measurement.DidRunUserStory(tracing_controller)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698