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

Unified Diff: tools/telemetry/telemetry/web_perf/timeline_based_measurement.py

Issue 854833003: Added GPU performance metrics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Replaced gpu_times pagetest with standard timeline_based_measurement Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/web_perf/timeline_based_measurement.py
diff --git a/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py b/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py
index 03a90ad239a26c3e7f10723add0b54810d25d582..0740ef46227a39fe8cd534aa6aa49a30ff599dc1 100644
--- a/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py
+++ b/tools/telemetry/telemetry/web_perf/timeline_based_measurement.py
@@ -127,7 +127,8 @@ class Options(object):
Benchmark.CreateTimelineBasedMeasurementOptions.
"""
- def __init__(self, overhead_level=NO_OVERHEAD_LEVEL):
+ def __init__(self, overhead_level=NO_OVERHEAD_LEVEL,
+ get_metric_from_metric_type_callback=_GetMetricFromMetricType):
"""Save the overhead level.
As the amount of instrumentation increases, so does the overhead.
@@ -137,9 +138,18 @@ class Options(object):
overhead_level: one of NO_OVERHEAD_LEVEL, V8_OVERHEAD_LEVEL,
MINIMAL_OVERHEAD_LEVEL, or DEBUG_OVERHEAD_LEVEL.
The v8 overhead level is a temporary solution that may be removed.
+ metrics: Metrics class to use when measuring pages.
nednguyen 2015/01/23 23:58:13 Documentation doesn't match.
David Yen 2015/01/24 00:22:33 Done.
"""
self._overhead_level = overhead_level
+ self._get_metric_from_metric_type = get_metric_from_metric_type_callback
+ @property
+ def overhead_level(self):
+ return self._overhead_level
+
+ @property
+ def get_metric_from_metric_type_callback(self):
+ return self._get_metric_from_metric_type
class TimelineBasedMeasurement(object):
"""Collects multiple metrics based on their interaction records.
@@ -164,7 +174,7 @@ class TimelineBasedMeasurement(object):
perf.metrics.timeline_interaction_record module.
"""
def __init__(self, options):
- self._overhead_level = options._overhead_level
+ self._tbm_options = options
def WillRunUserStory(self, tracing_controller,
synthetic_delay_categories=None):
@@ -179,25 +189,35 @@ class TimelineBasedMeasurement(object):
"""
if not tracing_controller.IsChromeTracingSupported():
raise Exception('Not supported')
- assert self._overhead_level in ALL_OVERHEAD_LEVELS
- if self._overhead_level == NO_OVERHEAD_LEVEL:
- category_filter = tracing_category_filter.CreateNoOverheadFilter()
- # TODO(ernstm): Remove this overhead level when benchmark relevant v8 events
- # become available in the 'benchmark' category.
- elif self._overhead_level == V8_OVERHEAD_LEVEL:
- category_filter = tracing_category_filter.CreateNoOverheadFilter()
- category_filter.AddIncludedCategory('v8')
- elif self._overhead_level == MINIMAL_OVERHEAD_LEVEL:
- category_filter = tracing_category_filter.CreateMinimalOverheadFilter()
+
+ if isinstance(self._tbm_options.overhead_level,
+ tracing_category_filter.TracingCategoryFilter):
+ category_filter = self._tbm_options.overhead_level
else:
- category_filter = tracing_category_filter.CreateDebugOverheadFilter()
+ assert self._tbm_options.overhead_level in ALL_OVERHEAD_LEVELS
+ if self._tbm_options.overhead_level == NO_OVERHEAD_LEVEL:
+ category_filter = tracing_category_filter.CreateNoOverheadFilter()
+ # TODO(ernstm): Remove this overhead level when benchmark relevant v8
+ # events become available in the 'benchmark' category.
+ elif self._tbm_options.overhead_level == V8_OVERHEAD_LEVEL:
+ category_filter = tracing_category_filter.CreateNoOverheadFilter()
+ category_filter.AddIncludedCategory('v8')
+ elif self._tbm_options.overhead_level == MINIMAL_OVERHEAD_LEVEL:
+ category_filter = tracing_category_filter.CreateMinimalOverheadFilter()
+ else:
+ category_filter = tracing_category_filter.CreateDebugOverheadFilter()
# TODO(slamm): Move synthetic_delay_categories to the TBM options.
for delay in synthetic_delay_categories or []:
category_filter.AddSyntheticDelay(delay)
options = tracing_options.TracingOptions()
options.enable_chrome_trace = True
- options.enable_platform_display_trace = True
+ try:
+ if tracing_controller.IsDisplayTracingSupported():
nednguyen 2015/01/23 23:58:13 Why is this change? I think I removed this recentl
David Yen 2015/01/24 00:22:33 Looks like bad merge, this is fixed now.
+ options.enable_platform_display_trace = True
+ except AttributeError:
+ pass
+
tracing_controller.Start(options, category_filter)
def Measure(self, tracing_controller, results):
@@ -209,7 +229,8 @@ class TimelineBasedMeasurement(object):
for renderer_thread, interaction_records in (
threads_to_records_map.iteritems()):
meta_metrics = _TimelineBasedMetrics(
- model, renderer_thread, interaction_records, _GetMetricFromMetricType)
+ model, renderer_thread, interaction_records,
+ self._tbm_options.get_metric_from_metric_type_callback)
meta_metrics.AddResults(results)
def DidRunUserStory(self, tracing_controller):
« tools/perf/benchmarks/gpu_times.py ('K') | « tools/perf/metrics/gpu_timeline_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698