Chromium Code Reviews| 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 |