blob: 84b24f2a753bdd6edfd875e99c2226df4867650e [file] [log] [blame] [view]
Scott Violetaedbd552023-11-21 20:27:361# Regressions to Competitive Benchmarks
2
3Speed is one of Chromes core strengths. One of the tools we use to
4measure Chromes speed is through benchmarks, and specifically the
5competitive benchmarks (Speedometer, MotionMark, JetStream). Improving and ensuring our current level of
6performance does not regress is challenging. Its all too easy for
7performance regressions to creep in. Just as with test failures, the
8longer we allow the regression to remain in the code base, the harder
9it is to fix.
10
11To ensure Chromes performance on benchmarks does not regress, we have the following
12policy: If a regression is detected, we will file a bug with relevant
13data (including links to pinpoint runs). If after one business day the
14regression has not been resolved, the patch is reverted.
15
16If you know your change impacts performance, you can reach out to the
17appropriate group to discuss the issue before landing (see table that
18follows with contacts). This can help prevent being reverted. Instructions for using
19pinpoint are at the end of this document.
20
21This policy applies to the competitive benchmarks: JetStream,
Michael Lippautz6ffcdf92023-11-30 14:39:0722MotionMark, and Speedometer. For Speedometer specifically, the policy applies
23to both, the current (as of Nov 2023) stable version 2 and the work in progress
24version 3. We expect Speedometer 3 to be fully released early 2024. At this
25time, this policy applies to bots running MacOS with Apple Silicon. Each of
26these benchmarks consists of a number of subtests. There are thresholds for
27both the test, and subtest.
Scott Violetaedbd552023-11-21 20:27:3628
29| Benchmark | Owner | Overall Threshold | Subtest Threshold |
30|-------------|------------------------|-------------------|-------------------|
31| JetStream | v8-performance-sheriff | .3% | 1% |
32| MotionMark | chrome-gpu | 1% | 2% |
33| Speedometer | v8-performance-sheriff | .3% | 1% |
34
35Pinpoint will be used to locate and validate the regression. The
36number of runs will come from statistical analysis and may
37change from time to time (currently around 128 for Speedometer).
38
39Bugs filed will generally have the following text:
40
41***note
42This patch has been identified as causing a statistically significant
43regression to the competitive benchmark <NAME HERE>. The pinpoint run
44<LINK HERE> gives high confidence this patch is responsible for the
45regression. Please treat this as you would a unit test failure and
46resolve the issue promptly. If you do not resolve the issue in 24
47hours the patch will be reverted. For help, please reach out to the
48appropriate group and/or owner.
49The recommended course of action is:
501. Revert patch.
512. If unsure why your patch caused a regression, reach out to owners.
523. Update patch.
534. Use pinpoint to verify no regressions.
545. Reland.
55Each patch is unique, so while this is the recommended course of action, it won't cover every case.
56More information on this policy can be found [here](https://chromium.googlesource.com/chromium/src/+/main/docs/benchmark_performance_regressions.md).
57***
58
59### Using pinpoint
60
61To run a pinpoint job you can either use a command line tool
62(```depot_tools/pinpoint```) or [pinpoint](https://pinpoint-dot-chromeperf.appspot.com/).
63I recommend the web ui as it's better supported. To use the web ui click the plus button in the
64bottom right. For the bot, use mac-m1_mini_2020-perf or mac-m1_mini_2020-perf-pgo. The PGO
65builder is closer to what we ship, but it will use a slightly dated pgo profile, which means
66the results may not be exactly what you see once the profile is built with your change. The
67following table suggests what to enter for the benchmark and story fields:
68
69|Benchmark | Benchmark Field | Story |
70|-------------|-----------------------------|----------------------------|
71| Jestream | Jetstream2 | Jetstream2 |
72| Speedometer | speedometer2 | Speedometer2 |
Michael Lippautz6ffcdf92023-11-30 14:39:0773| | speedometer3 | Speedometer3 |
Scott Violetaedbd552023-11-21 20:27:3674| MotionMark | rendering.desktop.notracing | motionmark_ramp_composite |
75
76The only other field you should need to fill in is the "Exp patch" field. Put your URL of your
77patch there, and click "Start".