OLD | NEW |
---|---|
(Empty) | |
1 # Bisecting Performance Regressions | |
2 | |
3 ## What are performance bisects? | |
4 | |
5 The perf tests on chromium's continuous build are very long-running, so we | |
6 cannot run them on every revision. Further, separate repositories like v8 | |
7 and skia sometimes roll multiple performance-sensitive changes into chromium | |
8 at once. For these reasons, we need a tool that can bisect the root cause of | |
9 performance regressions over a CL range, descending into third_party | |
10 repositories as necessary. This is what the performance bisect bots do. | |
11 | |
12 The team is currently working on a new version of performance biscect called | |
13 [pinpoint](https://docs.google.com/document/d/1FKPRNU2kbPJ15p6XHO0itCjYtfvCpGt2I HblriTX1tg/edit) | |
14 | |
15 ## Starting a perf bisect | |
16 | |
17 Performance bisects are tightly integrated with the | |
18 [Chrome Performance Dashboard](https://chromeperf.appspot.com/alerts) and | |
19 [monorail](https://bugs.chromium.org/p/chromium/issues/list). Users kick off | |
20 perf bisects on the perf dashboard and view results in monorail. | |
21 | |
22 You can kick off a perf bisect anywhere you see a performance graph on the perf | |
23 dashboard (except for some tests which don't bisect, because they do not run on | |
24 the [chromium.perf waterfall](https://build.chromium.org/p/chromium.perf/waterfa ll)). | |
25 | |
26 ### To get to a graph, use one of the following methods: | |
27 | |
28 * From a perf sheriff-filed bug, follow the link in #1 that looks like | |
29 `https://chromeperf.appspot.com/group_report?bug_id=XXXXXX`. Check the | |
30 boxes next to alerts in the table to display graphs. | |
31 * From the [alerts page](https://chromeperf.appspot.com/alerts), check the | |
32 box next to an alert and click the `Graph` button. | |
33 * From the [report page](https://chromeperf.appspot.com/report), use the menu | |
34 to navigate to the graph you want. | |
35 | |
36 ### To kick off a bisect from the graph: | |
37 | |
38  | |
39  | |
40 | |
41 1. Click on a data point in the graph. | |
42 2. In the tooltip that shows up, click the `BISECT` button. | |
43 3. Make sure to enter a Bug ID in the dialog that comes up. | |
44 4. Click the `START BISECT` button. | |
45 | |
46 ### What are all the boxes in the form? | |
47 | |
48 * **Bisect bot**: The name of the configuration in the perf lab to bisect on. | |
49 This has been prefilled to match the bot that generated the graph as | |
50 closely as possible. | |
51 * **Metric**: The metric of the performance test to bisect. This defaults to | |
52 the metric shown on the graph. It shows a list of other related metrics | |
53 (for example, if average page load time increased, the drop down will show | |
54 a list of individual pages which were measured). | |
55 * **Story filter**: This is a flag specific to | |
56 [telemetry](https://github.com/catapult-project/catapult/blob/master/telemet ry/README.md). | |
57 It tells telemetry to only run a specific test case, instead of running all | |
58 the test cases in the suite. This dramatically reduces bisect time for | |
59 large test suites. The dashboard will prefill this box based on the graph | |
60 you clicked on. If you suspect that test cases in the benchmark are not | |
61 independent, you can try bisecting with this box cleared. | |
62 * **Bug ID**: The bug number in monorail. It's very important to fill in | |
63 this field, as this is where bisect results will be posted. | |
64 * **Earlier revision**: The chromium commit pos to start bisecting from. This | |
65 is prefilled by the dashboard to the start of the revision range for the | |
66 point you clicked on. You can set it to an earlier commit position to | |
67 bisect a larger range. | |
68 * **Later revision**: The chromium commit pos to bisect to. This is prefilled | |
69 by the dashboard to the end of the revision range for the point you clicked | |
70 on. You can set it to a later commit pos to bisect a larger range. | |
71 * **Launch on staging bots**: This is an internal feature, which allows the | |
72 bisect team to launch a bisect on a test configuration. You likely don't | |
73 want to check this box unless instructed by the bisect team. | |
74 * **Bisect mode**: use "mean" to bisect the mean value of the performance | |
75 test. See below for "return_code". | |
76 | |
77 ## Bisecting test failures | |
78 | |
79 The perf bisect bots can also be used to bisect performance test failures. | |
80 See details in [Triaging Data Stoppage Alerts](triaging_data_stoppage_alerts.md) . | |
81 | |
82 ## Interpreting the results | |
83 | |
84 The bisect bot will output a comment on the bug you input into the dialog when | |
85 bisection is complete. See the | |
86 [Understanding the Bisect Results](addressing_performance_regressions.md#Underst anding-the-bisect-results) | |
87 section of the Addressing Performance Regressions doc for details on how to | |
88 interpret the results. | |
89 | |
90 ## Getting more debugging data | |
sullivan
2017/06/17 00:48:39
Simon, as a follow up could you add docs on how to
| |
91 | |
92 The bisect outputs some additional data which might be useful for really tough | |
93 regressions or confusing results. | |
94 | |
95 ### Traces | |
96 | |
97 Chrome traces are generated by most bisects and uploaded to cloud storage, but | |
98 they're not very visible in the UI. We plan to address this in | |
99 [pinpoint](https://docs.google.com/document/d/1FKPRNU2kbPJ15p6XHO0itCjYtfvCpGt2I HblriTX1tg/edit), | |
100 but in the short term here are the steps to get the traces from a bisect: | |
101 | |
102 1. The bisect comment should have a "Debug Info" link that looks like this: | |
103 `https://chromeperf.appspot.com/buildbucket_job_status/8980436717323504240` | |
104 Click it. | |
105 2. In the debug info, you should see a "Buildbot link" that looks like this: | |
106 `https://build.chromium.org/p/tryserver.chromium.perf/builders/android_nexu s7_perf_bisect/builds/4097` | |
107 Click it. | |
108 3. There will be several steps on the buildbot status page named "Bisecting | |
109 Revision". Each has an annotation like "Revision: chromium@474894" so you | |
110 can tell which revision it ran. Pick the commit position you want the | |
111 trace from (usually the one at your CL and the one immediately before). | |
112 Click the arrow by "> Nested step(s) for: Bisecting revision..." on those | |
113 steps. | |
114 4. In the nested steps, you'll see several steps titled "Bisecting | |
115 revision.Performance Test X of Y". These are the actual perf test runs. | |
116 Click the "stdout" link for one of these steps. | |
117 5. In the output, do a text search for "View generated trace files online" | |
118 and you'll see a link to a trace that looks like this: | |
119 `https://console.developers.google.com/m/cloudstorage/b/chrome-telemetry-ou tput/o/trace-file-id_0-2017-05-05_05-41-49-83206.html` | |
120 | |
121 Here are some screenshots showing what to click on: | |
122 | |
123  | |
124  | |
OLD | NEW |