| # PERFETTO(1) | |
| ## NAME | |
| perfetto - capture traces | |
| ## DESCRIPTION | |
| This section describes how to use the `perfetto` commandline binary to capture | |
| traces. Examples are given in terms of an Android device connected over ADB. | |
| `perfetto` has two modes for configuring the tracing session (i.e. what and how | |
| to collect): | |
| __lightweight mode__ | |
| : all config options are supplied as commandline flags, | |
| but the available data sources are restricted to ftrace and atrace. This mode | |
| is similar to | |
| [`systrace`](https://developer.android.com/topic/performance/tracing/command-line). | |
| __normal mode__ | |
| : the configuration is specified in a protocol buffer. This allows for full | |
| customisation of collected traces. | |
| ## GENERAL OPTIONS | |
| The following table lists the available options when using `perfetto` in either | |
| mode. | |
| `-d`, `--background` | |
| : Perfetto immediately exits the command-line interface and continues | |
| recording your trace in background. | |
| `-D`, `--background-wait` | |
| : Like `--background`, but waits (up to 30s) for all data sources to be | |
| started before exiting. | |
| `--notify-fd` _FD_ | |
| : Like `--background-wait`, but instead of daemonizing and waiting before | |
| exiting, writes one status byte and closes the given file descriptor. | |
| Writes `0` on success, non-zero on timeout/error. Not supported on | |
| Windows. | |
| `-o`, `--out` _OUT_FILE_ | |
| : Specifies the desired path to the output trace file, or `-` for stdout. | |
| `perfetto` writes the output to the file described in the flags above. | |
| The output format compiles with the format defined in | |
| [AOSP `trace.proto`](/protos/perfetto/trace/trace.proto). | |
| `--no-clobber` | |
| : Do not overwrite an existing output file. | |
| `--clone` _TSID_ | |
| : Creates a read-only clone of an existing tracing session identified by | |
| session id (see `--query`). | |
| `--clone-by-name` _NAME_ | |
| : Creates a read-only clone of an existing tracing session identified by | |
| `unique_session_name`. | |
| `--clone-for-bugreport` | |
| : Can only be used with `--clone` or `--clone-by-name`. Disables | |
| `trace_filter` on the cloned session. | |
| `--add-attribute` _key[=value]_ | |
| : Adds a [trace attribute](/protos/perfetto/common/trace_attributes.proto), | |
| a key/value pair describing the trace. If `=value` is omitted, the value | |
| is an empty string. Attributes appear in Trace Processor's `metadata` | |
| table as `trace_attribute.<key>` rows. | |
| `--version` | |
| : Prints the `perfetto` version string and exits. | |
| `--dropbox` _TAG_ | |
| : **Deprecated.** Uploads your trace via the | |
| [DropBoxManager API](https://developer.android.com/reference/android/os/DropBoxManager.html) | |
| using the tag you specify. Android only. Use `--upload` instead. | |
| `--upload` | |
| : Uploads trace output to Android framework reporting paths configured in | |
| `TraceConfig` (`android_report_config`). | |
| Android only. | |
| `--alert-id` _ID_ | |
| : Statsd metadata. ID of the alert that triggered this trace. | |
| `--config-id` _ID_ | |
| : Statsd metadata. ID of the triggering config. | |
| `--config-uid` _UID_ | |
| : Statsd metadata. UID of app which registered the triggering config. | |
| `--subscription-id` _ID_ | |
| : Statsd metadata. ID of the subscription that triggered this trace. | |
| `--save-for-bugreport` | |
| : If a trace with `bugreport_score > 0` is running, saves it into a file and | |
| outputs the path when done. | |
| `--save-all-for-bugreport` | |
| : Clones all eligible bugreport sessions and saves them into bugreport | |
| output files. | |
| `--no-guardrails` | |
| : Disables protections against excessive resource usage when using | |
| `--upload` (testing only). | |
| `--reset-guardrails` | |
| : Compatibility option. Guardrails no longer exist in `perfetto_cmd`; this | |
| option remains for backwards compatibility. | |
| `--query` | |
| : Queries the service state and prints it as human-readable text. | |
| `--long` | |
| : Expands some fields in `--query` output (for example category lists). | |
| Can only be used with `--query`. | |
| `--query-raw` | |
| : Similar to `--query`, but prints raw proto-encoded bytes of | |
| `tracing_service_state.proto`. | |
| `--detach` _KEY_ | |
| : Detach from tracing session using the given key. | |
| `--attach` _KEY_ | |
| : Re-attach to a detached tracing session using the given key. | |
| `--stop` | |
| : Stop tracing once re-attached. Supported only with `--attach`. | |
| `--is_detached` _KEY_ | |
| : Checks whether the session can be re-attached. Exit code semantics: | |
| `0` yes, `2` no, `1` error. | |
| `-h`, `--help` | |
| : Prints out help text for the `perfetto` tool. | |
| ## SIMPLE MODE | |
| For ease of use, the `perfetto` command includes support for a subset of | |
| configurations via command line arguments. On-device, these | |
| configurations behave equivalently to the same configurations provided | |
| by a *CONFIG_FILE* (see below). | |
| The general syntax for using `perfetto` in *simple mode* is as follows: | |
| ``` | |
| adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ] | |
| [ --app APP_NAME ] | |
| [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME]... | |
| ``` | |
| The following table lists the available options when using `perfetto` in | |
| *simple mode*. | |
| `-t`, `--time` _TIME[s|m|h]_ | |
| : Specifies the trace duration in seconds, minutes, or hours. | |
| For example, `--time 1m` specifies a trace duration of 1 minute. | |
| The default duration is 10 seconds. | |
| `-b`, `--buffer` _SIZE[mb|gb]_ | |
| : Specifies the ring buffer size in megabytes (mb) or gigabytes (gb). | |
| The default parameter is `--buffer 32mb`. | |
| `-s`, `--size` _SIZE[mb|gb]_ | |
| : Specifies the max file size in megabytes (mb) or gigabytes (gb). | |
| By default `perfetto` uses only in-memory ring-buffer. | |
| `-a`, `--app` _APP_NAME_ | |
| : Specifies an Android app name for atrace app-level tracing. | |
| This is followed by a list of event specifiers: | |
| `ATRACE_CAT` | |
| : Specifies the atrace categories you want to record a trace for. | |
| For example, the following command traces Window Manager using atrace: | |
| `adb shell perfetto --out FILE wm`. To record other categories, see the | |
| [list of atrace categories](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/native/cmds/atrace/atrace.cpp). | |
| Note: Available categories are Android version dependent. | |
| `FTRACE_GROUP/FTRACE_NAME` | |
| : Specifies the ftrace events you want to record a trace for. | |
| For example, the following command traces sched/sched_switch events: | |
| `adb shell perfetto --out FILE sched/sched_switch` | |
| ## NORMAL MODE | |
| The general syntax for using `perfetto` in *normal mode* is as follows: | |
| ``` | |
| adb shell perfetto [ --txt ] --config CONFIG_FILE | |
| ``` | |
| The following table lists the available options when using `perfetto` in | |
| *normal* mode. | |
| `-c`, `--config` _CONFIG_FILE_ | |
| : Specifies the path to a configuration file. In normal mode, some | |
| configurations may be encoded in a configuration protocol buffer. | |
| This file must comply with the protocol buffer schema defined in AOSP | |
| [`trace_config.proto`](/protos/perfetto/config/trace_config.proto). | |
| You select and configure the data sources using the DataSourceConfig member | |
| of the TraceConfig, as defined in AOSP | |
| [`data_source_config.proto`](/protos/perfetto/config/data_source_config.proto). | |
| Use `-` to read config bytes from stdin. | |
| `--txt` | |
| : Instructs `perfetto` to parse the config file as pbtxt. This flag is | |
| not a stable API and is not recommended for production. |