Index: docs/speed/bisects.md |
diff --git a/docs/speed/bisects.md b/docs/speed/bisects.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..91ced32ab022083bf119f835f9081d6380c5be94 |
--- /dev/null |
+++ b/docs/speed/bisects.md |
@@ -0,0 +1,126 @@ |
+# Bisecting Performance Regressions |
+ |
+[TOC] |
+ |
+## What are performance bisects? |
+ |
+The perf tests on chromium's continuous build are very long-running, so we |
+cannot run them on every revision. Further, separate repositories like v8 |
+and skia sometimes roll multiple performance-sensitive changes into chromium |
+at once. For these reasons, we need a tool that can bisect the root cause of |
+performance regressions over a CL range, descending into third_party |
+repositories as necessary. This is what the performance bisect bots do. |
+ |
+The team is currently working on a new version of performance biscect called |
+[pinpoint](https://docs.google.com/document/d/1FKPRNU2kbPJ15p6XHO0itCjYtfvCpGt2IHblriTX1tg/edit) |
+ |
+## Starting a perf bisect |
+ |
+Performance bisects are tightly integrated with the |
+[Chrome Performance Dashboard](https://chromeperf.appspot.com/alerts) and |
+[monorail](https://bugs.chromium.org/p/chromium/issues/list). Users kick off |
+perf bisects on the perf dashboard and view results in monorail. |
+ |
+You can kick off a perf bisect anywhere you see a performance graph on the perf |
+dashboard (except for some tests which don't bisect, because they do not run on |
+the [chromium.perf waterfall](https://build.chromium.org/p/chromium.perf/waterfall)). |
+ |
+### To get to a graph, use one of the following methods: |
+ |
+ * From a perf sheriff-filed bug, follow the link in #1 that looks like |
+ `https://chromeperf.appspot.com/group_report?bug_id=XXXXXX`. Check the |
+ boxes next to alerts in the table to display graphs. |
+ * From the [alerts page](https://chromeperf.appspot.com/alerts), check the |
+ box next to an alert and click the `Graph` button. |
+ * From the [report page](https://chromeperf.appspot.com/report), use the menu |
+ to navigate to the graph you want. |
+ |
+### To kick off a bisect from the graph: |
+ |
+ |
+ |
+ |
+ 1. Click on a data point in the graph. |
+ 2. In the tooltip that shows up, click the `BISECT` button. |
+ 3. Make sure to enter a Bug ID in the dialog that comes up. |
+ 4. Click the `START BISECT` button. |
+ |
+### What are all the boxes in the form? |
+ |
+ * **Bisect bot**: The name of the configuration in the perf lab to bisect on. |
+ This has been prefilled to match the bot that generated the graph as |
+ closely as possible. |
+ * **Metric**: The metric of the performance test to bisect. This defaults to |
+ the metric shown on the graph. It shows a list of other related metrics |
+ (for example, if average page load time increased, the drop down will show |
+ a list of individual pages which were measured). |
+ * **Story filter**: This is a flag specific to |
+ [telemetry](https://github.com/catapult-project/catapult/blob/master/telemetry/README.md). |
+ It tells telemetry to only run a specific test case, instead of running all |
+ the test cases in the suite. This dramatically reduces bisect time for |
+ large test suites. The dashboard will prefill this box based on the graph |
+ you clicked on. If you suspect that test cases in the benchmark are not |
+ independent, you can try bisecting with this box cleared. |
+ * **Bug ID**: The bug number in monorail. It's very important to fill in |
+ this field, as this is where bisect results will be posted. |
+ * **Earlier revision**: The chromium commit pos to start bisecting from. This |
+ is prefilled by the dashboard to the start of the revision range for the |
+ point you clicked on. You can set it to an earlier commit position to |
+ bisect a larger range. |
+ * **Later revision**: The chromium commit pos to bisect to. This is prefilled |
+ by the dashboard to the end of the revision range for the point you clicked |
+ on. You can set it to a later commit pos to bisect a larger range. |
+ * **Launch on staging bots**: This is an internal feature, which allows the |
+ bisect team to launch a bisect on a test configuration. You likely don't |
+ want to check this box unless instructed by the bisect team. |
+ * **Bisect mode**: use "mean" to bisect the mean value of the performance |
+ test. See below for "return_code". |
+ |
+## Bisecting test failures |
+ |
+The perf bisect bots can also be used to bisect performance test failures. |
+See details in [Triaging Data Stoppage Alerts](triaging_data_stoppage_alerts.md). |
+ |
+## Interpreting the results |
+ |
+The bisect bot will output a comment on the bug you input into the dialog when |
+bisection is complete. See the |
+[Understanding the Bisect Results](addressing_performance_regressions.md#Understanding-the-bisect-results) |
+section of the Addressing Performance Regressions doc for details on how to |
+interpret the results. |
+ |
+## Getting more debugging data |
+ |
+The bisect outputs some additional data which might be useful for really tough |
+regressions or confusing results. |
+ |
+### Traces |
+ |
+Chrome traces are generated by most bisects and uploaded to cloud storage, but |
+they're not very visible in the UI. We plan to address this in |
+[pinpoint](https://docs.google.com/document/d/1FKPRNU2kbPJ15p6XHO0itCjYtfvCpGt2IHblriTX1tg/edit), |
+but in the short term here are the steps to get the traces from a bisect: |
+ |
+ 1. The bisect comment should have a "Debug Info" link that looks like this: |
+ `https://chromeperf.appspot.com/buildbucket_job_status/8980436717323504240` |
+ Click it. |
+ 2. In the debug info, you should see a "Buildbot link" that looks like this: |
+ `https://build.chromium.org/p/tryserver.chromium.perf/builders/android_nexus7_perf_bisect/builds/4097` |
+ Click it. |
+ 3. There will be several steps on the buildbot status page named "Bisecting |
+ Revision". Each has an annotation like "Revision: chromium@474894" so you |
+ can tell which revision it ran. Pick the commit position you want the |
+ trace from (usually the one at your CL and the one immediately before). |
+ Click the arrow by "> Nested step(s) for: Bisecting revision..." on those |
+ steps. |
+ 4. In the nested steps, you'll see several steps titled "Bisecting |
+ revision.Performance Test X of Y". These are the actual perf test runs. |
+ Click the "stdout" link for one of these steps. |
+ 5. In the output, do a text search for "View generated trace files online" |
+ and you'll see a link to a trace that looks like this: |
+ `https://console.developers.google.com/m/cloudstorage/b/chrome-telemetry-output/o/trace-file-id_0-2017-05-05_05-41-49-83206.html` |
+ |
+Here are some screenshots showing what to click on: |
+ |
+ |
+ |