xref: /aosp_15_r20/external/perfetto/docs/reference/perfetto-cli.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# PERFETTO(1)
2*6dbdd20aSAndroid Build Coastguard Worker
3*6dbdd20aSAndroid Build Coastguard Worker## NAME
4*6dbdd20aSAndroid Build Coastguard Worker
5*6dbdd20aSAndroid Build Coastguard Workerperfetto - capture traces
6*6dbdd20aSAndroid Build Coastguard Worker
7*6dbdd20aSAndroid Build Coastguard Worker## DESCRIPTION
8*6dbdd20aSAndroid Build Coastguard Worker
9*6dbdd20aSAndroid Build Coastguard WorkerThis section describes how to use the `perfetto` commandline binary to capture
10*6dbdd20aSAndroid Build Coastguard Workertraces. Examples are given in terms of an Android device connected over ADB.
11*6dbdd20aSAndroid Build Coastguard Worker
12*6dbdd20aSAndroid Build Coastguard Worker`perfetto` has two modes for configuring the tracing session (i.e. what and how
13*6dbdd20aSAndroid Build Coastguard Workerto collect):
14*6dbdd20aSAndroid Build Coastguard Worker
15*6dbdd20aSAndroid Build Coastguard Worker__lightweight mode__
16*6dbdd20aSAndroid Build Coastguard Worker: all config options are supplied as commandline flags,
17*6dbdd20aSAndroid Build Coastguard Worker  but the available data sources are restricted to ftrace and atrace. This mode
18*6dbdd20aSAndroid Build Coastguard Worker  is similar to
19*6dbdd20aSAndroid Build Coastguard Worker  [`systrace`](https://developer.android.com/topic/performance/tracing/command-line).
20*6dbdd20aSAndroid Build Coastguard Worker
21*6dbdd20aSAndroid Build Coastguard Worker__normal mode__
22*6dbdd20aSAndroid Build Coastguard Worker: the configuration is specified in a protocol buffer. This allows for full
23*6dbdd20aSAndroid Build Coastguard Worker  customisation of collected traces.
24*6dbdd20aSAndroid Build Coastguard Worker
25*6dbdd20aSAndroid Build Coastguard Worker
26*6dbdd20aSAndroid Build Coastguard Worker## GENERAL OPTIONS
27*6dbdd20aSAndroid Build Coastguard Worker
28*6dbdd20aSAndroid Build Coastguard WorkerThe following table lists the available options when using `perfetto` in either
29*6dbdd20aSAndroid Build Coastguard Workermode.
30*6dbdd20aSAndroid Build Coastguard Worker
31*6dbdd20aSAndroid Build Coastguard Worker`-d`, `--background`
32*6dbdd20aSAndroid Build Coastguard Worker:    Perfetto immediately exits the command-line interface and continues
33*6dbdd20aSAndroid Build Coastguard Worker     recording your trace in background.
34*6dbdd20aSAndroid Build Coastguard Worker
35*6dbdd20aSAndroid Build Coastguard Worker`-o`, `--out` _OUT_FILE_
36*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the desired path to the output trace file, or `-` for stdout.
37*6dbdd20aSAndroid Build Coastguard Worker     `perfetto` writes the output to the file described in the flags above.
38*6dbdd20aSAndroid Build Coastguard Worker     The output format compiles with the format defined in
39*6dbdd20aSAndroid Build Coastguard Worker     [AOSP `trace.proto`](/protos/perfetto/trace/trace.proto).
40*6dbdd20aSAndroid Build Coastguard Worker
41*6dbdd20aSAndroid Build Coastguard Worker`--dropbox` _TAG_
42*6dbdd20aSAndroid Build Coastguard Worker:    Uploads your trace via the
43*6dbdd20aSAndroid Build Coastguard Worker     [DropBoxManager API](https://developer.android.com/reference/android/os/DropBoxManager.html)
44*6dbdd20aSAndroid Build Coastguard Worker     using the tag you specify. Android only.
45*6dbdd20aSAndroid Build Coastguard Worker
46*6dbdd20aSAndroid Build Coastguard Worker`--no-guardrails`
47*6dbdd20aSAndroid Build Coastguard Worker:     Disables protections against excessive resource usage when enabling the
48*6dbdd20aSAndroid Build Coastguard Worker      `--dropbox` flag during testing.
49*6dbdd20aSAndroid Build Coastguard Worker
50*6dbdd20aSAndroid Build Coastguard Worker
51*6dbdd20aSAndroid Build Coastguard Worker`--reset-guardrails`
52*6dbdd20aSAndroid Build Coastguard Worker:     Resets the persistent state of the guardrails and exits (for testing).
53*6dbdd20aSAndroid Build Coastguard Worker
54*6dbdd20aSAndroid Build Coastguard Worker`--query`
55*6dbdd20aSAndroid Build Coastguard Worker:     Queries the service state and prints it as human-readable text.
56*6dbdd20aSAndroid Build Coastguard Worker
57*6dbdd20aSAndroid Build Coastguard Worker`--query-raw`
58*6dbdd20aSAndroid Build Coastguard Worker:     Similar to `--query`, but prints raw proto-encoded bytes of
59*6dbdd20aSAndroid Build Coastguard Worker      `tracing_service_state.proto`.
60*6dbdd20aSAndroid Build Coastguard Worker
61*6dbdd20aSAndroid Build Coastguard Worker`-h`,  `--help`
62*6dbdd20aSAndroid Build Coastguard Worker:     Prints out help text for the `perfetto` tool.
63*6dbdd20aSAndroid Build Coastguard Worker
64*6dbdd20aSAndroid Build Coastguard Worker
65*6dbdd20aSAndroid Build Coastguard Worker## SIMPLE MODE
66*6dbdd20aSAndroid Build Coastguard Worker
67*6dbdd20aSAndroid Build Coastguard WorkerFor ease of use, the `perfetto` command includes support for a subset of
68*6dbdd20aSAndroid Build Coastguard Workerconfigurations via command line arguments. On-device, these
69*6dbdd20aSAndroid Build Coastguard Workerconfigurations behave equivalently to the same configurations provided
70*6dbdd20aSAndroid Build Coastguard Workerby a *CONFIG_FILE* (see below).
71*6dbdd20aSAndroid Build Coastguard Worker
72*6dbdd20aSAndroid Build Coastguard WorkerThe general syntax for using `perfetto` in *simple mode* is as follows:
73*6dbdd20aSAndroid Build Coastguard Worker
74*6dbdd20aSAndroid Build Coastguard Worker```
75*6dbdd20aSAndroid Build Coastguard Worker adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
76*6dbdd20aSAndroid Build Coastguard Worker    [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME]...
77*6dbdd20aSAndroid Build Coastguard Worker```
78*6dbdd20aSAndroid Build Coastguard Worker
79*6dbdd20aSAndroid Build Coastguard Worker
80*6dbdd20aSAndroid Build Coastguard WorkerThe following table lists the available options when using `perfetto` in
81*6dbdd20aSAndroid Build Coastguard Worker*simple mode*.
82*6dbdd20aSAndroid Build Coastguard Worker
83*6dbdd20aSAndroid Build Coastguard Worker`-t`, `--time` _TIME[s|m|h]_
84*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the trace duration in seconds, minutes, or hours.
85*6dbdd20aSAndroid Build Coastguard Worker     For example, `--time 1m` specifies a trace duration of 1 minute.
86*6dbdd20aSAndroid Build Coastguard Worker     The default duration is 10 seconds.
87*6dbdd20aSAndroid Build Coastguard Worker
88*6dbdd20aSAndroid Build Coastguard Worker`-b`, `--buffer` _SIZE[mb|gb]_
89*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the ring buffer size in megabytes (mb) or gigabytes (gb).
90*6dbdd20aSAndroid Build Coastguard Worker     The default parameter is `--buffer 32mb`.
91*6dbdd20aSAndroid Build Coastguard Worker
92*6dbdd20aSAndroid Build Coastguard Worker`-s`, `--size` _SIZE[mb|gb]_
93*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the max file size in megabytes (mb) or gigabytes (gb).
94*6dbdd20aSAndroid Build Coastguard Worker     By default `perfetto` uses only in-memory ring-buffer.
95*6dbdd20aSAndroid Build Coastguard Worker
96*6dbdd20aSAndroid Build Coastguard Worker
97*6dbdd20aSAndroid Build Coastguard WorkerThis is followed by a list of event specifiers:
98*6dbdd20aSAndroid Build Coastguard Worker
99*6dbdd20aSAndroid Build Coastguard Worker`ATRACE_CAT`
100*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the atrace categories you want to record a trace for.
101*6dbdd20aSAndroid Build Coastguard Worker     For example, the following command traces Window Manager using atrace:
102*6dbdd20aSAndroid Build Coastguard Worker     `adb shell perfetto --out FILE wm`. To record other categories, see the
103*6dbdd20aSAndroid Build Coastguard Worker     [list of atrace categories](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/native/cmds/atrace/atrace.cpp).
104*6dbdd20aSAndroid Build Coastguard Worker     Note: Available categories are Android version dependent.
105*6dbdd20aSAndroid Build Coastguard Worker
106*6dbdd20aSAndroid Build Coastguard Worker`FTRACE_GROUP/FTRACE_NAME`
107*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the ftrace events you want to record a trace for.
108*6dbdd20aSAndroid Build Coastguard Worker     For example, the following command traces sched/sched_switch events:
109*6dbdd20aSAndroid Build Coastguard Worker     `adb shell perfetto --out FILE sched/sched_switch`
110*6dbdd20aSAndroid Build Coastguard Worker
111*6dbdd20aSAndroid Build Coastguard Worker
112*6dbdd20aSAndroid Build Coastguard Worker## NORMAL MODE
113*6dbdd20aSAndroid Build Coastguard Worker
114*6dbdd20aSAndroid Build Coastguard WorkerThe general syntax for using `perfetto` in *normal mode* is as follows:
115*6dbdd20aSAndroid Build Coastguard Worker
116*6dbdd20aSAndroid Build Coastguard Worker```
117*6dbdd20aSAndroid Build Coastguard Worker adb shell perfetto [ --txt ] --config CONFIG_FILE
118*6dbdd20aSAndroid Build Coastguard Worker```
119*6dbdd20aSAndroid Build Coastguard Worker
120*6dbdd20aSAndroid Build Coastguard WorkerThe following table lists the available options when using `perfetto` in
121*6dbdd20aSAndroid Build Coastguard Worker*normal* mode.
122*6dbdd20aSAndroid Build Coastguard Worker
123*6dbdd20aSAndroid Build Coastguard Worker`-c`, `--config` _CONFIG_FILE_
124*6dbdd20aSAndroid Build Coastguard Worker:    Specifies the path to a configuration file. In normal mode, some
125*6dbdd20aSAndroid Build Coastguard Worker     configurations may be encoded in a configuration protocol buffer.
126*6dbdd20aSAndroid Build Coastguard Worker     This file must comply with the protocol buffer schema defined in AOSP
127*6dbdd20aSAndroid Build Coastguard Worker     [`trace_config.proto`](/protos/perfetto/config/trace_config.proto).
128*6dbdd20aSAndroid Build Coastguard Worker     You select and configure the data sources using the DataSourceConfig member
129*6dbdd20aSAndroid Build Coastguard Worker     of the TraceConfig, as defined in AOSP
130*6dbdd20aSAndroid Build Coastguard Worker     [`data_source_config.proto`](/protos/perfetto/config/data_source_config.proto).
131*6dbdd20aSAndroid Build Coastguard Worker
132*6dbdd20aSAndroid Build Coastguard Worker`--txt`
133*6dbdd20aSAndroid Build Coastguard Worker:    Instructs `perfetto` to parse the config file as pbtxt. This flag is
134*6dbdd20aSAndroid Build Coastguard Worker     experimental, and it's not recommended that you enable it for production.
135