1*6dbdd20aSAndroid Build Coastguard Worker# Perfetto UI 2*6dbdd20aSAndroid Build Coastguard Worker 3*6dbdd20aSAndroid Build Coastguard Worker[Perfetto UI](https://ui.perfetto.dev) enables you to view and analyze traces in 4*6dbdd20aSAndroid Build Coastguard Workerthe browser. It supports several different tracing formats, including the 5*6dbdd20aSAndroid Build Coastguard Workerperfetto proto trace format and the legacy json trace format. 6*6dbdd20aSAndroid Build Coastguard Worker 7*6dbdd20aSAndroid Build Coastguard Worker## New Features 8*6dbdd20aSAndroid Build Coastguard WorkerWhat features have come to the UI recently? See below. 9*6dbdd20aSAndroid Build Coastguard Worker 10*6dbdd20aSAndroid Build Coastguard Worker### Tabs V2 11*6dbdd20aSAndroid Build Coastguard Worker 12*6dbdd20aSAndroid Build Coastguard WorkerWe've refreshed how the tabs in the details pane at the bottom of the 13*6dbdd20aSAndroid Build Coastguard Workertimeline work. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard WorkerNOTE: Temporarily you can use the previous tab implementation via 16*6dbdd20aSAndroid Build Coastguard Workersetting the [Tabs V2 feature flag](http://ui.perfetto.dev/#!/flags) to 17*6dbdd20aSAndroid Build Coastguard Worker'Disabled'. Please file a bug with feedback on Tabs V2. 18*6dbdd20aSAndroid Build Coastguard Worker 19*6dbdd20aSAndroid Build Coastguard WorkerThe update aimed to address a few major UX concerns with the existing 20*6dbdd20aSAndroid Build Coastguard Workerimplementation while also making tabs extensible via plugins. 21*6dbdd20aSAndroid Build Coastguard Worker 22*6dbdd20aSAndroid Build Coastguard WorkerUX concerns in TabsV1: 23*6dbdd20aSAndroid Build Coastguard Worker- Tabs disappear and reappear when the user changes the selection causing surprise and confusion. 24*6dbdd20aSAndroid Build Coastguard Worker- We try to guess the right tab to get focus and this guess is often incorrect. 25*6dbdd20aSAndroid Build Coastguard Worker- 'Ephemeral tabs' (query results and SQL tables) work differently from 26*6dbdd20aSAndroid Build Coastguard Worker 'permanent tabs ('Ftrace events' and 'Android Logs'). Ephemeral tabs can be closed while permanent tabs can not. 27*6dbdd20aSAndroid Build Coastguard Worker- 'Current selection' tabs work differently to both 'ephemeral' and 'permanent' tabs and there can only be a single 'Current selection' tab 28*6dbdd20aSAndroid Build Coastguard Worker even when the current selection contains many different kinds of data. 29*6dbdd20aSAndroid Build Coastguard Worker- Ephemeral tabs are not persisted into permalinks. 30*6dbdd20aSAndroid Build Coastguard Worker 31*6dbdd20aSAndroid Build Coastguard Worker 32*6dbdd20aSAndroid Build Coastguard Worker 33*6dbdd20aSAndroid Build Coastguard WorkerTabsV2 is extensible via the [plugin mechanism](/docs/contributing/ui-plugins). 34*6dbdd20aSAndroid Build Coastguard WorkerPlugins can add new permanent and ephemeral tabs as well as new selection panels. 35*6dbdd20aSAndroid Build Coastguard Worker 36*6dbdd20aSAndroid Build Coastguard Worker### Custom visualisation with Vega and Vega-lite 37*6dbdd20aSAndroid Build Coastguard Worker 38*6dbdd20aSAndroid Build Coastguard WorkerThe `Viz` page available in the sidebar after you load the trace allows 39*6dbdd20aSAndroid Build Coastguard Workerfor custom visualisation using [Vega](https://vega.github.io/vega/) or 40*6dbdd20aSAndroid Build Coastguard Worker[Vega-lite](https://vega.github.io/vega-lite/docs/). 41*6dbdd20aSAndroid Build Coastguard Worker 42*6dbdd20aSAndroid Build Coastguard WorkerType a Vega specification into the bottom editor pane and the 43*6dbdd20aSAndroid Build Coastguard Workervisualisation will update in real time in the top pane. 44*6dbdd20aSAndroid Build Coastguard WorkerYou can put arbitrary `trace_processor` SQL queries where the URL would 45*6dbdd20aSAndroid Build Coastguard Workergo in a normal Vega visualisation. 46*6dbdd20aSAndroid Build Coastguard Worker 47*6dbdd20aSAndroid Build Coastguard Worker 48*6dbdd20aSAndroid Build Coastguard Worker 49*6dbdd20aSAndroid Build Coastguard WorkerTry the following visualisation with the Android example trace: 50*6dbdd20aSAndroid Build Coastguard Worker 51*6dbdd20aSAndroid Build Coastguard Worker```json 52*6dbdd20aSAndroid Build Coastguard Worker{ 53*6dbdd20aSAndroid Build Coastguard Worker "$schema": "https://vega.github.io/schema/vega-lite/v5.json", 54*6dbdd20aSAndroid Build Coastguard Worker "data": {"url": "select cpu, dur from sched where utid != 0"}, 55*6dbdd20aSAndroid Build Coastguard Worker "mark": "bar", 56*6dbdd20aSAndroid Build Coastguard Worker "encoding": { 57*6dbdd20aSAndroid Build Coastguard Worker "x": { 58*6dbdd20aSAndroid Build Coastguard Worker "field": "cpu" 59*6dbdd20aSAndroid Build Coastguard Worker }, 60*6dbdd20aSAndroid Build Coastguard Worker "y": {"aggregate": "sum", "field": "dur"} 61*6dbdd20aSAndroid Build Coastguard Worker } 62*6dbdd20aSAndroid Build Coastguard Worker} 63*6dbdd20aSAndroid Build Coastguard Worker``` 64*6dbdd20aSAndroid Build Coastguard Worker 65*6dbdd20aSAndroid Build Coastguard Worker### Command Palette 66*6dbdd20aSAndroid Build Coastguard WorkerTired of remembering the location of buttons in the Perfetto UI? 67*6dbdd20aSAndroid Build Coastguard WorkerCommands to the rescue! 68*6dbdd20aSAndroid Build Coastguard Worker 69*6dbdd20aSAndroid Build Coastguard Worker 70*6dbdd20aSAndroid Build Coastguard Worker 71*6dbdd20aSAndroid Build Coastguard WorkerCommands are: 72*6dbdd20aSAndroid Build Coastguard Worker- Discoverable & Searchable 73*6dbdd20aSAndroid Build Coastguard Worker- Keyboard driven 74*6dbdd20aSAndroid Build Coastguard Worker- Plugin-able 75*6dbdd20aSAndroid Build Coastguard Worker- Context sensitive 76*6dbdd20aSAndroid Build Coastguard Worker- ...with more added every day 77*6dbdd20aSAndroid Build Coastguard Worker 78*6dbdd20aSAndroid Build Coastguard WorkerAccess the command palette via `Ctrl-Shift-P` or by typing `>` in the 79*6dbdd20aSAndroid Build Coastguard Workersearch bar. 80*6dbdd20aSAndroid Build Coastguard Worker 81*6dbdd20aSAndroid Build Coastguard Worker### Changing the time format and offset 82*6dbdd20aSAndroid Build Coastguard Worker 83*6dbdd20aSAndroid Build Coastguard Worker 84*6dbdd20aSAndroid Build Coastguard Worker 85*6dbdd20aSAndroid Build Coastguard WorkerThe displayed timestamp format can be changed globally, cycling between seconds, raw nanoseconds and a new "timecode" format. 86*6dbdd20aSAndroid Build Coastguard WorkerWe also have a new `TO_TIMECODE()` function in Trace Processor to print timestamps in the timecode format. 87*6dbdd20aSAndroid Build Coastguard Worker 88*6dbdd20aSAndroid Build Coastguard Worker## UI Tips and Tricks 89*6dbdd20aSAndroid Build Coastguard Worker 90*6dbdd20aSAndroid Build Coastguard Worker### Pivot Tables 91*6dbdd20aSAndroid Build Coastguard Worker 92*6dbdd20aSAndroid Build Coastguard WorkerTo use pivot tables in the Perfetto UI, you will need to enable the 93*6dbdd20aSAndroid Build Coastguard Worker"Pivot tables" feature flag in the "Flags" tab under "Support" in the Sidebar. 94*6dbdd20aSAndroid Build Coastguard WorkerYou can pop up a pivot table over the entire trace when clicking "p" on your 95*6dbdd20aSAndroid Build Coastguard Workerkeyboard. The "Edit" button opens a pop up window to add/remove and reorder 96*6dbdd20aSAndroid Build Coastguard Workercolumns and change the default sorting of aggregations. 97*6dbdd20aSAndroid Build Coastguard Worker 98*6dbdd20aSAndroid Build Coastguard Worker 99*6dbdd20aSAndroid Build Coastguard Worker 100*6dbdd20aSAndroid Build Coastguard WorkerClicking on "Query" generates a table with the selected columns. 101*6dbdd20aSAndroid Build Coastguard WorkerTable cells with the expand icon can be expanded to show the next column values. 102*6dbdd20aSAndroid Build Coastguard WorkerThe "name (stack)" column displays top level slices that can be expanded to show 103*6dbdd20aSAndroid Build Coastguard Workertheir descendants down to the last child. 104*6dbdd20aSAndroid Build Coastguard Worker 105*6dbdd20aSAndroid Build Coastguard Worker 106*6dbdd20aSAndroid Build Coastguard Worker 107*6dbdd20aSAndroid Build Coastguard WorkerArea selection pops up a pre-filled pivot table restricted over the selected 108*6dbdd20aSAndroid Build Coastguard Workertimestamps and track ids. 109*6dbdd20aSAndroid Build Coastguard Worker 110*6dbdd20aSAndroid Build Coastguard Worker 111*6dbdd20aSAndroid Build Coastguard Worker 112*6dbdd20aSAndroid Build Coastguard Worker### Disabling metrics 113*6dbdd20aSAndroid Build Coastguard Worker 114*6dbdd20aSAndroid Build Coastguard WorkerSome metrics execute at trace load time to annotate the trace with 115*6dbdd20aSAndroid Build Coastguard Workeradditional tracks and events. You can stop these metrics from 116*6dbdd20aSAndroid Build Coastguard Workerrunning by disabling them in the 'Flags' page: 117*6dbdd20aSAndroid Build Coastguard Worker 118*6dbdd20aSAndroid Build Coastguard Worker 119*6dbdd20aSAndroid Build Coastguard Worker 120*6dbdd20aSAndroid Build Coastguard Worker 121