Commit 943d5762 authored by Mikhail Khokhlov's avatar Mikhail Khokhlov Committed by Commit Bot

Run scroll_jank_metric on android-nexus5x-perf-fyi

To collect data about scroll jank, we run this experimental TBMv3
metric on those stories from system_health benchmark that involve
scrolling.

This is a part of an effort to identify the main sources of jank in
Chrome. See the doc for more info:
https://docs.google.com/document/d/1YycxFDEUSVUHVDKX3_zsCFuo07oCWOogbI0F7n6ATyY

Bug: b/150125501
Change-Id: I5c808f72952766267bf5ae0eca637df79acd2825
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2062279
Commit-Queue: Mikhail Khokhlov <khokhlov@google.com>
Reviewed-by: default avatarCaleb Rouleau <crouleau@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745007}
parent 0a251101
......@@ -9,7 +9,8 @@
"--browser=android-chrome",
"--upload-results",
"--test-shard-map-filename=android-nexus5x-perf-fyi_map.json",
"--output-format=histograms"
"--output-format=histograms",
"--experimental-tbmv3-metrics"
],
"isolate_name": "performance_test_suite",
"merge": {
......
dproy@chromium.org
khokhlov@google.com
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from benchmarks import system_health
import page_sets
from page_sets.system_health import story_tags
from telemetry import benchmark
@benchmark.Info(emails=['khokhlov@google.com'])
class SystemHealthInfiniteScroll(system_health.MobileCommonSystemHealth):
"""A subset of system_health.common_mobile benchmark.
Contains only infinite_scroll stories.
This benchmark is used for running experimental scroll jank metrics.
TODO(b/150125501): Delete this benchmark once enough jank data have been
obtained.
"""
@classmethod
def Name(cls):
return 'system_health_infinite_scroll.common_mobile'
def CreateCoreTimelineBasedMeasurementOptions(self):
options = super(SystemHealthInfiniteScroll,
self).CreateCoreTimelineBasedMeasurementOptions()
options.SetTimelineBasedMetrics(['tbmv3:scroll_jank_metric'])
return options
def CreateStorySet(self, options):
return page_sets.SystemHealthStorySet(
platform=self.PLATFORM, tag=story_tags.INFINITE_SCROLL)
......@@ -380,9 +380,10 @@ _ANDROID_PIXEL2_WEBLAYER_BENCHMARK_CONFIGS = PerfSuite([
_GetBenchmarkConfig('system_health.memory_mobile', True),
_GetBenchmarkConfig('startup.mobile')])
_ANDROID_NEXUS5X_FYI_BENCHMARK_CONFIGS = PerfSuite([
# Running a sample benchmark to help testing out the work on
# trace_processor_shell: crbug.com/1028612
_GetBenchmarkConfig('tracing.tracing_with_background_memory_infra')])
# Running a sample benchmark to help testing out the work on
# trace_processor_shell: crbug.com/1028612
_GetBenchmarkConfig('system_health_infinite_scroll.common_mobile')
])
_ANDROID_PIXEL2_AAB_FYI_BENCHMARK_CONFIGS = PerfSuite(
[_GetBenchmarkConfig('startup.mobile')])
_ANDROID_PIXEL2_FYI_BENCHMARK_CONFIGS = PerfSuite([
......
......@@ -98,6 +98,7 @@ FYI_BUILDERS = {
'isolate': 'performance_test_suite',
'extra_args': [
'--output-format=histograms',
'--experimental-tbmv3-metrics',
],
}
],
......
{
"0": {
"benchmarks": {
"tracing.tracing_with_background_memory_infra": {
"end": 3,
"system_health_infinite_scroll.common_mobile": {
"abridged": false
}
}
},
"1": {
"benchmarks": {
"tracing.tracing_with_background_memory_infra": {
"begin": 3,
"end": 6,
"abridged": false
}
}
},
"2": {
"benchmarks": {
"tracing.tracing_with_background_memory_infra": {
"begin": 6,
"abridged": false
}
}
},
"extra_infos": {
"num_stories": 9,
"predicted_min_shard_time": 116.0,
"predicted_min_shard_index": 2,
"predicted_max_shard_time": 136.0,
"predicted_max_shard_index": 0,
"shard #0": 136.0,
"shard #1": 136.0,
"shard #2": 116.0
}
}
\ No newline at end of file
}
[
{
"duration": "16.0",
"name": "tracing.tracing_with_background_memory_infra/Facebook"
},
{
"duration": "19.0",
"name": "tracing.tracing_with_background_memory_infra/Wikipedia"
},
{
"duration": "15.0",
"name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
},
{
"duration": "14.0",
"name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
},
{
"duration": "15.0",
"name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
},
{
"duration": "18.0",
"name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
},
{
"duration": "16.0",
"name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
},
{
"duration": "18.0",
"name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
},
{
"duration": "16.0",
"name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
}
]
\ No newline at end of file
[]
\ No newline at end of file
......@@ -3,13 +3,13 @@
"description": "Counts the number of janky periods during scroll.",
"histograms": [
{
"name": "all_janks",
"name": "num_janks",
"description": "Number of all janky periods.",
"requiredCategories": ["latencyInfo"],
"unit": "count_smallerIsBetter"
},
{
"name": "big_janks",
"name": "num_big_janks",
"description": "Number of big janky periods.",
"requiredCategories": ["latencyInfo"],
"unit": "count_smallerIsBetter"
......
......@@ -19,19 +19,32 @@ class SystemHealthStorySet(story.StorySet):
See https://goo.gl/Jek2NL.
"""
def __init__(self, platform, case=None, take_memory_measurement=False):
def __init__(self,
platform,
case=None,
take_memory_measurement=False,
tag=None):
super(SystemHealthStorySet, self).__init__(
archive_data_file=('../data/system_health_%s.json' % platform),
cloud_storage_bucket=story.PARTNER_BUCKET)
assert platform in platforms.ALL_PLATFORMS
def IncludeStory(story_class):
if story_class.ABSTRACT_STORY:
return False
if platform not in story_class.SUPPORTED_PLATFORMS:
return False
if case and not story_class.NAME.startswith(case + ':'):
return False
if tag and not tag in story_class.TAGS:
return False
return True
for story_class in IterAllSystemHealthStoryClasses():
if (story_class.ABSTRACT_STORY or
platform not in story_class.SUPPORTED_PLATFORMS or
case and not story_class.NAME.startswith(case + ':')):
continue
self.AddStory(story_class(self, take_memory_measurement))
if IncludeStory(story_class):
self.AddStory(story_class(self, take_memory_measurement))
def GetAbridgedStorySetTagFilter(self):
return story_tags.HEALTH_CHECK.name
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment