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/metrics/smoothness.py

Issue 809753002: Revert of telemetry: Clean up SurfaceFlinger statistics (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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/web_perf/metrics/smoothness.py
diff --git a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py
index f63fea8bed3b45ec5c6ceaab2248f226f85c7e76..6add8685692efca0d7c0b3ea797f9fed4d264a64 100644
--- a/tools/telemetry/telemetry/web_perf/metrics/smoothness.py
+++ b/tools/telemetry/telemetry/web_perf/metrics/smoothness.py
@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import logging
from telemetry.perf_tests_helper import FlattenList
from telemetry.util import statistics
from telemetry.value import list_of_scalar_values
@@ -50,13 +49,11 @@
self.VerifyNonOverlappedRecords(interaction_records)
renderer_process = renderer_thread.parent
stats = rendering_stats.RenderingStats(
- renderer_process, model.browser_process, model.surface_flinger_process,
+ renderer_process, model.browser_process,
[r.GetBounds() for r in interaction_records])
- has_surface_flinger_stats = model.surface_flinger_process is not None
- self._PopulateResultsFromStats(results, stats, has_surface_flinger_stats)
-
- def _PopulateResultsFromStats(self, results, stats,
- has_surface_flinger_stats):
+ self._PopulateResultsFromStats(results, stats)
+
+ def _PopulateResultsFromStats(self, results, stats):
page = results.current_page
values = [
self._ComputeQueueingDuration(page, stats),
@@ -69,78 +66,12 @@
stats.scroll_update_latency)
values += self._ComputeFirstGestureScrollUpdateLatency(page, stats)
values += self._ComputeFrameTimeMetric(page, stats)
- if has_surface_flinger_stats:
- values += self._ComputeSurfaceFlingerMetric(page, stats)
-
for v in values:
results.AddValue(v)
def _HasEnoughFrames(self, list_of_frame_timestamp_lists):
"""Whether we have collected at least two frames in every timestamp list."""
return all(len(s) >= 2 for s in list_of_frame_timestamp_lists)
-
- @staticmethod
- def _GetNormalizedDeltas(data, refresh_period, min_normalized_delta=None):
- deltas = [t2 - t1 for t1, t2 in zip(data, data[1:])]
- if min_normalized_delta != None:
- deltas = [d for d in deltas
- if d / refresh_period >= min_normalized_delta]
- return (deltas, [delta / refresh_period for delta in deltas])
-
- def _ComputeSurfaceFlingerMetric(self, page, stats):
- jank_count = None
- avg_surface_fps = None
- max_frame_delay = None
- frame_lengths = None
- none_value_reason = None
- if self._HasEnoughFrames(stats.frame_timestamps):
- timestamps = FlattenList(stats.frame_timestamps)
- frame_count = len(timestamps)
- milliseconds = timestamps[-1] - timestamps[0]
- min_normalized_frame_length = 0.5
-
- frame_lengths, normalized_frame_lengths = \
- self._GetNormalizedDeltas(timestamps, stats.refresh_period,
- min_normalized_frame_length)
- if len(frame_lengths) < frame_count - 1:
- logging.warning('Skipping frame lengths that are too short.')
- frame_count = len(frame_lengths) + 1
- if len(frame_lengths) == 0:
- raise Exception('No valid frames lengths found.')
- _, normalized_changes = \
- self._GetNormalizedDeltas(frame_lengths, stats.refresh_period)
- jankiness = [max(0, round(change)) for change in normalized_changes]
- pause_threshold = 20
- jank_count = sum(1 for change in jankiness
- if change > 0 and change < pause_threshold)
- avg_surface_fps = int(round((frame_count - 1) * 1000.0 / milliseconds))
- max_frame_delay = round(max(normalized_frame_lengths))
- frame_lengths = normalized_frame_lengths
- else:
- none_value_reason = NOT_ENOUGH_FRAMES_MESSAGE
-
- return (
- scalar.ScalarValue(
- page, 'avg_surface_fps', 'fps', avg_surface_fps,
- description='Average frames per second as measured by the '
- 'platform\'s SurfaceFlinger.',
- none_value_reason=none_value_reason),
- scalar.ScalarValue(
- page, 'jank_count', 'janks', jank_count,
- description='Number of changes in frame rate as measured by the '
- 'platform\'s SurfaceFlinger.',
- none_value_reason=none_value_reason),
- scalar.ScalarValue(
- page, 'max_frame_delay', 'vsyncs', max_frame_delay,
- description='Largest frame time as measured by the platform\'s '
- 'SurfaceFlinger.',
- none_value_reason=none_value_reason),
- list_of_scalar_values.ListOfScalarValues(
- page, 'frame_lengths', 'vsyncs', frame_lengths,
- description='Frame time in vsyncs as measured by the platform\'s '
- 'SurfaceFlinger.',
- none_value_reason=none_value_reason)
- )
def _ComputeLatencyMetric(self, page, stats, name, list_of_latency_lists):
"""Returns Values for the mean and discrepancy for given latency stats."""

Powered by Google App Engine
This is Rietveld 408576698