Chromium Code Reviews| Index: tools/perf/metrics/timeline.py |
| diff --git a/tools/perf/metrics/timeline.py b/tools/perf/metrics/timeline.py |
| index 3442cab15b01b00604f22a2541f4df74825a0c7f..90033d188768bd6ad88692ca7f68c85146114782 100644 |
| --- a/tools/perf/metrics/timeline.py |
| +++ b/tools/perf/metrics/timeline.py |
| @@ -11,6 +11,17 @@ from telemetry.page import page_measurement |
| TRACING_MODE = 'tracing-mode' |
| TIMELINE_MODE = 'timeline-mode' |
| +# All tracing categories not disabled-by-default |
| +DEFAULT_TRACE_CATEGORIES = None |
| + |
| +# Categories for absolute minimum overhead tracing. This contains no |
| +# sub-traces of thread tasks, so it's only useful for capturing the |
| +# cpu-time spent on threads (as well as needed benchmark traces) |
| +# "disabled-by-default-topall," |
|
ernstm
2014/02/19 22:18:16
In the comment: disabled-by-default-topall -> disa
|
| +MINIMAL_TRACE_CATEGORIES = ("disabled-by-default-poll_cpu," |
| + "benchmark," |
| + "webkit.console," |
| + "trace_event_overhead") |
| class MissingFramesError(page_measurement.MeasurementFailure): |
| def __init__(self): |
| @@ -24,6 +35,7 @@ class TimelineMetric(Metric): |
| """ |
| super(TimelineMetric, self).__init__() |
| assert mode in (TRACING_MODE, TIMELINE_MODE) |
| + self.trace_categories = DEFAULT_TRACE_CATEGORIES |
| self._mode = mode |
| self._model = None |
| self._renderer_process = None |
| @@ -39,7 +51,7 @@ class TimelineMetric(Metric): |
| if self._mode == TRACING_MODE: |
| if not tab.browser.supports_tracing: |
| raise Exception('Not supported') |
| - tab.browser.StartTracing() |
| + tab.browser.StartTracing(self.trace_categories) |
| else: |
| assert self._mode == TIMELINE_MODE |
| tab.StartTimelineRecording() |
| @@ -281,8 +293,29 @@ class ResultsForThread(object): |
| class ThreadTimesTimelineMetric(TimelineMetric): |
| def __init__(self): |
| super(ThreadTimesTimelineMetric, self).__init__(TRACING_MODE) |
| - self.results_to_report = AllThreads |
| - self.details_to_report = NoThreads |
| + # Minimal traces, for minimum noise in CPU-time measurements. |
| + self.trace_categories = MINIMAL_TRACE_CATEGORIES |
| + self._results_to_report = AllThreads |
| + self._details_to_report = NoThreads |
| + |
| + @property |
| + def results_to_report(self): |
| + return self._results_to_report |
| + |
| + @results_to_report.setter |
| + def results_to_report(self, results_to_report): |
| + self._results_to_report = results_to_report |
| + |
| + @property |
| + def details_to_report(self): |
| + return self._details_to_report |
| + |
| + @details_to_report.setter |
| + def details_to_report(self, details_to_report): |
| + self._details_to_report = details_to_report |
| + # We need the other traces in order to have any details to report. |
| + if not details_to_report == NoThreads: |
| + self.trace_categories = DEFAULT_TRACE_CATEGORIES |
| def CountSlices(self, slices, substring): |
| count = 0 |
| @@ -322,9 +355,9 @@ class ThreadTimesTimelineMetric(TimelineMetric): |
| # Report the desired results and details. |
| for thread_results in thread_category_results.values(): |
| - if thread_results.name in self.results_to_report: |
| + if thread_results.name in self._results_to_report: |
| thread_results.AddResults(num_frames, results) |
| # TOOD(nduca): When generic results objects are done, this special case |
| # can be replaced with a generic UI feature. |
| - if thread_results.name in self.details_to_report: |
| + if thread_results.name in self._details_to_report: |
| thread_results.AddDetailedResults(num_frames, results) |