| {namespace buck.performance} |
| |
| /***/ |
| {template .soyweb} |
| {call buck.page} |
| {param title: 'Performance Tuning' /} |
| {param content} |
| |
| <h2>Performance Tuning Your Builds</h2> |
| |
| Buck <a href="{ROOT}concept/what_makes_buck_so_fast.html">does a lot of work</a> |
| {sp} to make builds as fast as possible, and we also give developers tools to |
| figure out where the time is being spent inside of their builds. |
| |
| <h2>Super Console</h2> |
| |
| <img id="super_console_sample" |
| src="{ROOT}static/buck-build-15fps.gif" |
| alt="Chrome Tracing Sample"> |
| |
| <p> |
| |
| When running Buck in an{sp} |
| <a href="http://en.wikipedia.org/wiki/ANSI_escape_code">Ansi</a> compliant |
| terminal, Buck displays the break down of |
| what each thread is doing, updated every 100ms, in what we affectionately call |
| "SuperConsole." While a build is running, this gives developers a good idea of |
| what Buck is spending its time doing, and can often help people spot issues in |
| their builds. If you want to see what happened after the fact or to have a |
| trace you can send around your team, use Chrome Tracing. |
| |
| <h2>Chrome Tracing</h2> |
| |
| <img id="chrome_sample" |
| src="{ROOT}static/buck_chrome_sample.png" |
| alt="Chrome Tracing Sample"> |
| |
| The Chrome team has built an awesome framework for viewing performance traces |
| right inside of{sp} |
| <a href="http://www.chromium.org/developers/how-tos/trace-event-profiling-tool"> |
| Chrome</a>. You can access this by going to <code>chrome://tracing</code> in |
| your browser. Consult the trace viewer's |
| {sp}<a href="https://code.google.com/p/trace-viewer/">project page</a> for more |
| information on the trace viewer and the file format. |
| |
| <p> |
| |
| After Buck is done with each build, it will produce a Chrome Trace file that can |
| be loaded up in <code>chrome://tracing</code> in the directory |
| {sp}<code>buck-out/log/traces/</code>. Buck will save a file in the format |
| <code>build.[timestamp].trace</code>, and then create a symlink from the most |
| recent trace to <code>build.trace</code>. |
| |
| <p> |
| |
| To load up this trace, visit <code>chrome://tracing</code> inside of Chrome, and |
| hit "Load". Load the trace file of interest, and look around to see where time |
| was spent. Each row represents a different thread, and all of the steps taken |
| for a given rule are logged underneath that rule. Additionally, we log |
| information about how the rule was built and and the rule key for each artifact |
| fetch. Press <em>?</em> to get the help menu for the Chrome Trace Viewer. |
| |
| {/param} // content |
| {/call} // buck.page |
| {/template} |