TraceConfig

The overall config that is used when starting a new tracing session through ProducerPort::StartTracing(). It contains the general config for the logging buffer(s) and the configs for all the data source being enabled.

Defined in trace_config.proto

Fields:

Field Type Description
buffers BufferConfig[]
data_sources DataSource[]
builtin_data_sources BuiltinDataSource
duration_ms uint32 If specified, the trace will be stopped duration_ms after starting.
This does not count the time the system is suspended, so we will run for duration_ms of system activity, not wall time.
However in case of traces with triggers, see TriggerConfig.trigger_timeout_ms instead.
prefer_suspend_clock_for_duration bool If true, tries to use CLOCK_BOOTTIME for duration_ms rather than CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on Linux/Android, no-op on other platforms. This is used when dealing with long (e.g. 24h) traces, where suspend can inflate them to weeks of wall-time, making them more likely to hit device reboots (and hence loss).
This option also changes consistently the semantic of TriggerConfig.stop_delay_ms.
enable_extra_guardrails bool This is set when --dropbox is passed to the Perfetto command line client and enables guardrails that limit resource usage for traces requested by statsd.
lockdown_mode LockdownModeOperation Reject producers that are not running under the same UID as the tracing service.
producers ProducerConfig[]
statsd_metadata StatsdMetadata Statsd-specific metadata.
write_into_file bool When true && output_path is empty, the EnableTracing() request must provide a file descriptor. The service will then periodically read packets out of the trace buffer and store it into the passed file.
If output_path is not empty no fd should be passed, the service will create a new file and write into that (see comment below).
output_path string This must point to a non-existing file. If the file exists the service will NOT overwrite and will fail instead as a security precaution.
On Android, when this is used with the system traced, the path must be within /data/misc/perfetto-traces/ or the trace will fail.
This option has been introduced in Android R. Before R write_into_file can be used only with the "pass a file descriptor over IPC" mode.
file_write_period_ms uint32 Optional. If non-zero tunes the write period. A min value of 100ms is enforced (i.e. smaller values are ignored).
max_file_size_bytes uint64 Optional. When non zero the periodic write stops once at most X bytes have been written into the file. Tracing is disabled when this limit is reached, even if duration_ms has not been reached yet.
guardrail_overrides GuardrailOverrides
deferred_start bool When true, data sources are not started until an explicit call to StartTracing() on the consumer port. This is to support early initialization and fast trace triggering. This can be used only when the Consumer explicitly triggers the StartTracing() method.
This should not be used in a remote trace config via statsd, doing so will result in a hung trace session.
flush_period_ms uint32 When set, it periodically issues a Flush() to all data source, forcing them to commit their data into the tracing service. This can be used for quasi-real-time streaming mode and to guarantee some partial ordering of events in the trace in windows of X ms.
flush_timeout_ms uint32 Wait for this long for producers to acknowledge flush requests.
Default 5s.
data_source_stop_timeout_ms uint32 Wait for this long for producers to acknowledge stop requests.
Default 5s.
notify_traceur bool Android-only. If set, sends an intent to the Traceur system app when the trace ends to notify it about the trace readiness.
bugreport_score int32 This field was introduced in Android S.
Android-only. If set to a value > 0, marks the trace session as a candidate for being attached to a bugreport. This field effectively acts as a z-index for bugreports. When Android's dumpstate runs perfetto --save-for-bugreport, traced will pick the tracing session with the highest score (score <= 0 is ignored) and:
On Android S, T: will steal its contents, save the trace into a known path and stop prematurely.
On Android U+: will create a read-only snapshot and save that into a known path, without stoppin the original tracing session.
When this field is set the tracing session becomes eligible to be cloned by other UIDs.
bugreport_filename string When set, defines name of the file that will be saved under /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc, starting from the highest bugreport_score.
Introduced in v42 / Android V.
trigger_config TriggerConfig
activate_triggers string[] When this is non-empty the perfetto command line tool will ignore the rest of this TraceConfig and instead connect to the perfetto service as a producer and send these triggers, potentially stopping or starting traces that were previous configured to use a TriggerConfig.
incremental_state_config IncrementalStateConfig
allow_user_build_tracing bool No longer needed as we unconditionally allow tracing on user builds.
unique_session_name string If set the tracing service will ensure there is at most one tracing session with this key.
compression_type CompressionType
incident_report_config IncidentReportConfig
statsd_logging StatsdLogging Android-only. Not for general use. If specified, sets the logging to statsd of guardrails and checkpoints in the tracing service. perfetto_cmd sets this to enabled (if not explicitly set in the config) when specifying --upload.
trace_uuid_msb int64 An identifier clients can use to tie this trace to other logging.
DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative Trace UUID. If this field is set, the tracing service will respect the requested UUID (i.e. TracePacket.trace_uuid == this field) but only if gap-less snapshotting is not used.
trace_uuid_lsb int64
trace_filter TraceFilter
android_report_config AndroidReportConfig
cmd_trace_start_delay CmdTraceStartDelay
session_semaphores SessionSemaphore[]

TraceConfig.BufferConfig

Defined in trace_config.proto

Fields:

Field Type Description
size_kb uint32
fill_policy FillPolicy
transfer_on_clone bool When true the buffer is moved (rather than copied) onto the cloned session, and an empty buffer of the same size is allocated in the source tracing session. This feature will likely get deprecated in the future.
It been introduced mainly to support the surfaceflinger snapshot dump for bugreports, where SF can dumps O(400MB) into the bugreport trace. In that case we don't want to retain another in-memory copy of the buffer.
clear_before_clone bool Used in conjunction with transfer_on_clone. When true the buffer is cleared before issuing the Flush(reason=kTraceClone). This is to ensure that if the data source took too long to write the data in a previous clone-related flush, we don't end up with a mixture of leftovers from the previous write and new data.

TraceConfig.BufferConfig.FillPolicy

Defined in trace_config.proto

Enum values:

Name Value Description
UNSPECIFIED 0
RING_BUFFER 1 Default behavior. The buffer operates as a conventional ring buffer.
If the writer is faster than the reader (or if the reader reads only after tracing is stopped) newly written packets will overwrite old packets.
DISCARD 2 Behaves like RING_BUFFER as long as there is space in the buffer or the reader catches up with the writer. As soon as the writer hits an unread chunk, it stops accepting new data in the buffer.

TraceConfig.DataSource

Defined in trace_config.proto

Fields:

Field Type Description
config protos.DataSourceConfig Filters and data-source specific config. It contains also the unique name of the data source, the one passed in the DataSourceDescriptor when they register on the service.
producer_name_filter string[] Optional. If multiple producers (~processes) expose the same data source and either producer_name_filter or producer_name_regex_filter is set, the data source is enabled only for producers whose names match any of the filters.
producer_name_filter has to be an exact match, while producer_name_regex_filter is a regular expression.
This allows to enable a data source only for specific processes.
The "repeated" fields have OR semantics: specifying a filter ["foo", "bar"] will enable data sources on both "foo" and "bar" (if they exist).
producer_name_regex_filter string[]

DataSourceConfig

The configuration that is passed to each data source when starting tracing.

Defined in data_source_config.proto

Fields:

Field Type Description
name string Data source unique name, e.g., "linux.ftrace". This must match the name passed by the data source when it registers (see RegisterDataSource()).
target_buffer uint32 The index of the logging buffer where TracePacket(s) will be stored.
This field doesn't make a major difference for the Producer(s). The final logging buffers, in fact, are completely owned by the Service. We just ask the Producer to copy this number into the chunk headers it emits, so that the Service can quickly identify the buffer where to move the chunks into without expensive lookups on its fastpath.
trace_duration_ms uint32 Set by the service to indicate the duration of the trace.
DO NOT SET in consumer as this will be overridden by the service.
prefer_suspend_clock_for_duration bool If true, trace_duration_ms should count also time in suspend. This is propagated from TraceConfig.prefer_suspend_clock_for_duration.
stop_timeout_ms uint32 Set by the service to indicate how long it waits after StopDataSource.
DO NOT SET in consumer as this will be overridden by the service.
enable_extra_guardrails bool Set by the service to indicate whether this tracing session has extra guardrails.
DO NOT SET in consumer as this will be overridden by the service.
session_initiator SessionInitiator Set by the service to indicate which user initiated this trace.
DO NOT SET in consumer as this will be overridden by the service.
tracing_session_id uint64 Set by the service to indicate which tracing session the data source belongs to. The intended use case for this is checking if two data sources, one of which produces metadata for the other one, belong to the same trace session and hence should be linked together.
This field was introduced in Aug 2018 after Android P.
DO NOT SET in consumer as this will be overridden by the service.
ftrace_config FtraceConfig Data source name: linux.ftrace
inode_file_config InodeFileConfig Data source name: linux.inode_file_map
process_stats_config ProcessStatsConfig Data source name: linux.process_stats
sys_stats_config SysStatsConfig Data source name: linux.sys_stats
heapprofd_config HeapprofdConfig Data source name: android.heapprofd Introduced in Android 10.
java_hprof_config JavaHprofConfig Data source name: android.java_hprof Introduced in Android 11.
android_power_config AndroidPowerConfig Data source name: android.power
android_log_config AndroidLogConfig Data source name: android.log
gpu_counter_config GpuCounterConfig
android_game_intervention_list_config AndroidGameInterventionListConfig
packages_list_config PackagesListConfig Data source name: android.packages_list
perf_event_config PerfEventConfig Data source name: linux.perf
vulkan_memory_config VulkanMemoryConfig Data source name: vulkan.memory_tracker
track_event_config TrackEventConfig Data source name: track_event
android_polled_state_config AndroidPolledStateConfig Data source name: android.polled_state
android_system_property_config AndroidSystemPropertyConfig Data source name: android.system_property
statsd_tracing_config StatsdTracingConfig Data source name: android.statsd
system_info_config SystemInfoConfig Data source name: linux.system_info
chrome_config ChromeConfig Chrome is special as it doesn't use the perfetto IPC layer. We want to avoid proto serialization and de-serialization there because that would just add extra hops on top of the Mojo ser/des. Instead we auto-generate a C++ class for it so it can pass around plain C++ objets.
v8_config V8Config Data source name: code.v8.dev
interceptor_config InterceptorConfig If an interceptor is specified here, packets for this data source will be rerouted to the interceptor instead of the main trace buffer. This can be used, for example, to write trace data into ETW or for logging trace points to the console.
Note that interceptors are only supported by data sources registered through the Perfetto SDK API. Data sources that don't use that API (e.g., traced_probes) may not support interception.
network_packet_trace_config NetworkPacketTraceConfig Data source name: android.network_packets.
Introduced in Android 14 (U).
surfaceflinger_layers_config SurfaceFlingerLayersConfig Data source name: android.surfaceflinger.layers
surfaceflinger_transactions_config SurfaceFlingerTransactionsConfig
android_sdk_sysprop_guard_config AndroidSdkSyspropGuardConfig Data source name: android.sdk_sysprop_guard Introduced in Android 14 (U) QPR1.
etw_config EtwConfig Data source name: windows.etw
protolog_config ProtoLogConfig Data source name: android.protolog
android_input_event_config AndroidInputEventConfig Data source name: android.input.inputevent
pixel_modem_config PixelModemConfig Data source name: android.pixel.modem
windowmanager_config WindowManagerConfig Data source name: android.windowmanager
chromium_system_metrics ChromiumSystemMetricsConfig Data source name: org.chromium.system_metrics
legacy_config string This is a fallback mechanism to send a free-form text config to the producer. In theory this should never be needed. All the code that is part of the platform (i.e. traced service) is supposed to not truncate the trace config proto and propagate unknown fields. However, if anything in the pipeline (client or backend) ends up breaking this forward compat plan, this field will become the escape hatch to allow future data sources to get some meaningful configuration.
for_testing TestConfig This field is only used for testing.

DataSourceConfig.SessionInitiator

Defined in data_source_config.proto

Enum values:

Name Value Description
SESSION_INITIATOR_UNSPECIFIED 0
SESSION_INITIATOR_TRUSTED_SYSTEM 1 This trace was initiated from a trusted system app has DUMP and USAGE_STATS permission. This system app is expected to not expose the trace to the user of the device.
This is determined by checking the UID initiating the trace.

FtraceConfig

Defined in ftrace_config.proto

Fields:

Field Type Description
ftrace_events string[] Ftrace events to record, example: "sched/sched_switch".
kprobe_events KprobeEvent[] Ftrace events to record, specific for kprobes and kretprobes
atrace_categories string[] Android-specific event categories:
atrace_apps string[]
atrace_categories_prefer_sdk string[] Some processes can emit data through atrace or through the perfetto SDK via the "track_event" data source. For these categories, the SDK will be preferred, if possible, for this config.
buffer_size_kb uint32 Size of each per-cpu kernel ftrace ring buffer.
Not guaranteed if there are multiple concurrent tracing sessions, as the buffers cannot be resized without pausing recording in the kernel.
drain_period_ms uint32 If set, specifies how often the tracing daemon reads from the kernel ring buffer. Not guaranteed if there are multiple concurrent tracing sessions.
Leave unset unless you're fine-tuning a local config.
drain_buffer_percent uint32 If set, the tracing daemon will read kernel ring buffers as soon as they're filled past this percentage of occupancy. In other words, a value of 50 means that a read pass is triggered as soon as any per-cpu buffer is half-full. Not guaranteed if there are multiple concurrent tracing sessions.
Currently does nothing on Linux kernels below v6.9.
Introduced in: perfetto v48.
compact_sched CompactSchedConfig
print_filter PrintFilter
symbolize_ksyms bool Enables symbol name resolution against /proc/kallsyms.
It requires that either traced_probes is running as root or that kptr_restrict has been manually lowered.
It does not disclose KASLR, symbol addresses are mangled.
ksyms_mem_policy KsymsMemPolicy
initialize_ksyms_synchronously_for_testing bool By default the kernel symbolizer is lazily initialized on a deferred task to reduce ftrace's time-to-start-recording. Unfortunately that makes ksyms integration tests hard. This flag forces the kernel symbolizer to be initialized synchronously on the data source start and hence avoiding timing races in tests.
DEPRECATED in v28 / Android U. This is now the default behavior, setting it to true is a no-op.
throttle_rss_stat bool When this boolean is true AND the ftrace_events contains "kmem/rss_stat", this option causes traced_probes to enable the "kmem/rss_stat_throttled" event instead if present, and fall back to "kmem/rss_stat" if not present.
The historical context for this is the following:
- Up to Android S (12), the rss_stat was internally throttled in its kernel implementation.
- A change introduced in the kernels after S has introduced a new "rss_stat_throttled" making the original "rss_stat" event unthrottled (hence very spammy).
- Not all Android T/13 devices will receive a new kernel though, hence we need to deal with both cases.
For more context: go/rss-stat-throttled.
disable_generic_events bool If true, avoid enabling events that aren't statically known by traced_probes. Otherwise, the default is to emit such events as GenericFtraceEvent protos.
Prefer to keep this flag at its default. This was added for Android tracing, where atrace categories and/or atrace HAL requested events can expand to events that aren't of interest to the tracing user.
Introduced in: Android T.
syscall_events string[] The subset of syscalls to record. To record all syscalls, leave this unset and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
* before perfetto v43, requires the config to also enable raw_syscalls/sys_{enter,exit}.
* perfetto v43+ does the right thing if you set only this field.
Example: ["sys_read", "sys_open"].
Introduced in: Android U.
enable_function_graph bool If true, enable the "function_graph" kernel tracer that emits events whenever a kernel function is entered and exited (funcgraph_entry/funcgraph_exit).
Notes on use:
* Requires symbolize_ksyms for function name resolution.
* Use function_filters or function_graph_roots to constrain the traced set of functions, otherwise the event bandwidth will be too high for practical use.
* The data source might be rejected if there is already a concurrent ftrace data source that does not use function graph itself, as we do not support switching kernel tracers mid-trace.
* Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is enabled if "cat /sys/kernel/tracing/available_tracers" includes "function_graph".
Android:
* Available only on debuggable builds.
* Introduced in: Android U.
function_filters string[] Constrains the set of functions traced when enable_function_graph is true. Supports globs, e.g. "sched*". You can specify multiple filters, in which case all matching functions will be traced. See kernel documentation on ftrace "set_ftrace_filter" file for more details.
Android:
* Available only on debuggable builds.
* Introduced in: Android U.
function_graph_roots string[] If enable_function_graph is true, trace this set of functions and all of its callees. Supports globs. Can be set together with function_filters, in which case only callees matching the filter will be traced. If setting both, you most likely want all roots to also be included in function_filters.
Android:
* Available only on debuggable builds.
* Introduced in: Android U.
preserve_ftrace_buffer bool If true, does not clear ftrace buffers before the start of the program.
This makes sense only if this is the first ftrace data source instance created after the daemon has been started. Can be useful for gathering boot traces, if ftrace has been separately configured (e.g. via kernel commandline).
use_monotonic_raw_clock bool If true, overrides the default timestamp clock and uses a raw hardware based monotonic clock for getting timestamps.
* Introduced in: Android U.
instance_name string If instance_name is not empty, then attempt to use that tracefs instance for event recording. Normally, this means /sys/kernel/tracing/instances/$instance_name.
The name "hyp" is reserved.
The instance must already exist, the tracing daemon will not create it for you as it typically doesn't have such permissions.
Only a subset of features is guaranteed to work with non-default instances, at the time of writing:
* ftrace_events * buffer_size_kb
buffer_size_lower_bound bool If true, buffer_size_kb is interpreted as a lower bound, allowing the implementation to choose a bigger buffer size.
Most configs for perfetto v43+ should simply leave both fields unset.
If you need a config compatible with a range of perfetto builds and you used to set a non-default buffer_size_kb, consider setting both fields.
Example:
buffer_size_kb: 4096 buffer_size_lower_bound: true On older builds, the per-cpu buffers will be exactly 4 MB.
On v43+, buffers will be at least 4 MB.
In both cases, neither is guaranteed if there are other concurrent perfetto ftrace sessions, as the buffers cannot be resized without pausing the recording in the kernel.
Introduced in: perfetto v43.

FtraceConfig.KprobeEvent

Defined in ftrace_config.proto

Fields:

Field Type Description
probe string Kernel function name to attach to, for example "fuse_file_write_iter"
type KprobeType

FtraceConfig.KprobeEvent.KprobeType

Defined in ftrace_config.proto

Enum values:

Name Value Description
KPROBE_TYPE_UNKNOWN 0
KPROBE_TYPE_KPROBE 1
KPROBE_TYPE_KRETPROBE 2
KPROBE_TYPE_BOTH 3

FtraceConfig.CompactSchedConfig

Configuration for compact encoding of scheduler events. When enabled (and recording the relevant ftrace events), specific high-volume events are encoded in a denser format than normal.

Defined in ftrace_config.proto

Fields:

Field Type Description
enabled bool If true, and sched_switch or sched_waking ftrace events are enabled, record those events in the compact format.
If the field is unset, the default is:
* perfetto v42.0+: enabled * before: disabled

FtraceConfig.PrintFilter

Optional filter for "ftrace/print" events.

The filter consists of multiple rules. As soon as a rule matches (the rules are processed in order), its allow field will be used as the outcome: if allow is true, the event will be included in the trace, otherwise it will be discarded. If an event does not match any rule, it will be allowed by default (a rule with an empty prefix and allow=false, disallows everything by default).

Defined in ftrace_config.proto

Fields:

Field Type Description
rules Rule[]

FtraceConfig.PrintFilter.Rule

Defined in ftrace_config.proto

Fields:

Field Type Description
prefix string This rule matches if prefix matches exactly with the beginning of the "ftrace/print" "buf" field.
atrace_msg AtraceMessage This rule matches if the "buf" field contains an atrace-style print message as specified in atrace_msg.
allow bool

FtraceConfig.PrintFilter.Rule.AtraceMessage

Matches an atrace message of the form: pid...

Defined in ftrace_config.proto

Fields:

Field Type Description
type string
prefix string

FtraceConfig.KsymsMemPolicy

When symbolize_ksyms=true, determines whether the traced_probes daemon should keep the symbol map in memory (and reuse it for future tracing sessions) or clear it (saving memory) and re-create it on each tracing session (wasting cpu and wall time). The tradeoff is roughly: KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace. KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace. Default behavior: KSYMS_CLEANUP_ON_STOP.

Defined in ftrace_config.proto

Enum values:

Name Value Description
KSYMS_UNSPECIFIED 0
KSYMS_CLEANUP_ON_STOP 1
KSYMS_RETAIN 2

InodeFileConfig

Defined in inode_file_config.proto

Fields:

Field Type Description
scan_interval_ms uint32 How long to pause between batches.
scan_delay_ms uint32 How long to wait before the first scan in order to accumulate inodes.
scan_batch_size uint32 How many inodes to scan in one batch.
do_not_scan bool Do not scan for inodes not found in the static map.
scan_mount_points string[] If non-empty, only scan inodes corresponding to block devices named in this list.
mount_point_mapping MountPointMappingEntry[] When encountering an inode belonging to a block device corresponding to one of the mount points in this map, scan its scan_roots instead.

InodeFileConfig.MountPointMappingEntry

Defined in inode_file_config.proto

Fields:

Field Type Description
mountpoint string
scan_roots string[]

ProcessStatsConfig

Defined in process_stats_config.proto

Fields:

Field Type Description
quirks Quirks[]
scan_all_processes_on_start bool If enabled all processes will be scanned and dumped when the trace starts.
record_thread_names bool If enabled thread names are also recoded (this is redundant if sched_switch is enabled).
proc_stats_poll_ms uint32 If > 0 samples counters (see process_stats.proto) from /proc/pid/status and oom_score_adj every X ms.
It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
This is required to be > 100ms to avoid excessive CPU usage.
proc_stats_cache_ttl_ms uint32 This is required to be either = 0 or a multiple of proc_stats_poll_ms (default: proc_stats_poll_ms). If = 0, will be set to proc_stats_poll_ms. Non-multiples will be rounded down to the nearest multiple.
resolve_process_fds bool Niche feature: If true this will resolve file descriptors for each process so these can be mapped to their actual device or file.
Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or new fds opened after initially scanning a process will not be recognized.
scan_smaps_rollup bool If true, output will include memory stats from /proc/pid/smaps_rollup.
record_process_age bool If true: process descriptions will include process age (starttime in /proc/pid/stat).
Introduced in: perfetto v44.
record_process_runtime bool If true and proc_stats_poll_ms is true, process stats will include time spent running in user/kernel mode (utime/stime in /proc/pid/stat).
Introduced in: perfetto v44.

ProcessStatsConfig.Quirks

Defined in process_stats_config.proto

Enum values:

Name Value Description
QUIRKS_UNSPECIFIED 0
DISABLE_INITIAL_DUMP 1 This has been deprecated and ignored as per 2018-05-01. Full scan at startup is now disabled by default and can be re-enabled using the scan_all_processes_on_start arg.
DISABLE_ON_DEMAND 2

SysStatsConfig

This file defines the configuration for the Linux /proc poller data source, which injects counters in the trace. Counters that are needed in the trace must be explicitly listed in the _counters fields. This is to avoid spamming the trace with all counters at all times. The sampling rate is configurable. All polling rates (_period_ms) need to be integer multiples of each other. OK: [10ms, 10ms, 10ms], [10ms, 20ms, 10ms], [10ms, 20ms, 60ms] Not OK: [10ms, 10ms, 11ms], [10ms, 15ms, 20ms]

Defined in sys_stats_config.proto

Fields:

Field Type Description
meminfo_period_ms uint32 Polls /proc/meminfo every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
Cost: 0.3 ms [read] + 0.07 ms [parse + trace injection]
meminfo_counters MeminfoCounters[] If empty all known counters are reported. Otherwise, only the counters specified below are reported.
vmstat_period_ms uint32 Polls /proc/vmstat every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
Cost: 0.2 ms [read] + 0.3 ms [parse + trace injection]
vmstat_counters VmstatCounters[]
stat_period_ms uint32 Pols /proc/stat every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
Cost: 4.1 ms [read] + 1.9 ms [parse + trace injection]
stat_counters StatCounters[]
devfreq_period_ms uint32 Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
This option can be used to record unchanging values.
Updates from frequency changes can come from ftrace/set_clock_rate.
cpufreq_period_ms uint32 Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
This is required to be > 10ms to avoid excessive CPU usage.
buddyinfo_period_ms uint32 Polls /proc/buddyinfo every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
diskstat_period_ms uint32 Polls /proc/diskstats every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
psi_period_ms uint32 Polls /proc/pressure/* every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
thermal_period_ms uint32 Polls /sys/class/thermal/* every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
cpuidle_period_ms uint32 Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.
gpufreq_period_ms uint32 Polls device-specific GPU frequency info every X ms, if non-zero.
This is required to be > 10ms to avoid excessive CPU usage.

MeminfoCounters

Counter definitions for Linux's /proc/meminfo.

Defined in sys_stats_counters.proto

Enum values:

Name Value Description
MEMINFO_UNSPECIFIED 0
MEMINFO_MEM_TOTAL 1
MEMINFO_MEM_FREE 2
MEMINFO_MEM_AVAILABLE 3
MEMINFO_BUFFERS 4
MEMINFO_CACHED 5
MEMINFO_SWAP_CACHED 6
MEMINFO_ACTIVE 7
MEMINFO_INACTIVE 8
MEMINFO_ACTIVE_ANON 9
MEMINFO_INACTIVE_ANON 10
MEMINFO_ACTIVE_FILE 11
MEMINFO_INACTIVE_FILE 12
MEMINFO_UNEVICTABLE 13
MEMINFO_MLOCKED 14
MEMINFO_SWAP_TOTAL 15
MEMINFO_SWAP_FREE 16
MEMINFO_DIRTY 17
MEMINFO_WRITEBACK 18
MEMINFO_ANON_PAGES 19
MEMINFO_MAPPED 20
MEMINFO_SHMEM 21
MEMINFO_SLAB 22
MEMINFO_SLAB_RECLAIMABLE 23
MEMINFO_SLAB_UNRECLAIMABLE 24
MEMINFO_KERNEL_STACK 25
MEMINFO_PAGE_TABLES 26
MEMINFO_COMMIT_LIMIT 27
MEMINFO_COMMITED_AS 28
MEMINFO_VMALLOC_TOTAL 29
MEMINFO_VMALLOC_USED 30
MEMINFO_VMALLOC_CHUNK 31
MEMINFO_CMA_TOTAL 32
MEMINFO_CMA_FREE 33
MEMINFO_GPU 34
MEMINFO_ZRAM 35
MEMINFO_MISC 36
MEMINFO_ION_HEAP 37
MEMINFO_ION_HEAP_POOL 38

VmstatCounters

Counter definitions for Linux's /proc/vmstat.

Defined in sys_stats_counters.proto

Enum values:

Name Value Description
VMSTAT_UNSPECIFIED 0
VMSTAT_NR_FREE_PAGES 1
VMSTAT_NR_ALLOC_BATCH 2
VMSTAT_NR_INACTIVE_ANON 3
VMSTAT_NR_ACTIVE_ANON 4
VMSTAT_NR_INACTIVE_FILE 5
VMSTAT_NR_ACTIVE_FILE 6
VMSTAT_NR_UNEVICTABLE 7
VMSTAT_NR_MLOCK 8
VMSTAT_NR_ANON_PAGES 9
VMSTAT_NR_MAPPED 10
VMSTAT_NR_FILE_PAGES 11
VMSTAT_NR_DIRTY 12
VMSTAT_NR_WRITEBACK 13
VMSTAT_NR_SLAB_RECLAIMABLE 14
VMSTAT_NR_SLAB_UNRECLAIMABLE 15
VMSTAT_NR_PAGE_TABLE_PAGES 16
VMSTAT_NR_KERNEL_STACK 17
VMSTAT_NR_OVERHEAD 18
VMSTAT_NR_UNSTABLE 19
VMSTAT_NR_BOUNCE 20
VMSTAT_NR_VMSCAN_WRITE 21
VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM 22
VMSTAT_NR_WRITEBACK_TEMP 23
VMSTAT_NR_ISOLATED_ANON 24
VMSTAT_NR_ISOLATED_FILE 25
VMSTAT_NR_SHMEM 26
VMSTAT_NR_DIRTIED 27
VMSTAT_NR_WRITTEN 28
VMSTAT_NR_PAGES_SCANNED 29
VMSTAT_WORKINGSET_REFAULT 30
VMSTAT_WORKINGSET_ACTIVATE 31
VMSTAT_WORKINGSET_NODERECLAIM 32
VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES 33
VMSTAT_NR_FREE_CMA 34
VMSTAT_NR_SWAPCACHE 35
VMSTAT_NR_DIRTY_THRESHOLD 36
VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD 37
VMSTAT_PGPGIN 38
VMSTAT_PGPGOUT 39
VMSTAT_PGPGOUTCLEAN 40
VMSTAT_PSWPIN 41
VMSTAT_PSWPOUT 42
VMSTAT_PGALLOC_DMA 43
VMSTAT_PGALLOC_NORMAL 44
VMSTAT_PGALLOC_MOVABLE 45
VMSTAT_PGFREE 46
VMSTAT_PGACTIVATE 47
VMSTAT_PGDEACTIVATE 48
VMSTAT_PGFAULT 49
VMSTAT_PGMAJFAULT 50
VMSTAT_PGREFILL_DMA 51
VMSTAT_PGREFILL_NORMAL 52
VMSTAT_PGREFILL_MOVABLE 53
VMSTAT_PGSTEAL_KSWAPD_DMA 54
VMSTAT_PGSTEAL_KSWAPD_NORMAL 55
VMSTAT_PGSTEAL_KSWAPD_MOVABLE 56
VMSTAT_PGSTEAL_DIRECT_DMA 57
VMSTAT_PGSTEAL_DIRECT_NORMAL 58
VMSTAT_PGSTEAL_DIRECT_MOVABLE 59
VMSTAT_PGSCAN_KSWAPD_DMA 60
VMSTAT_PGSCAN_KSWAPD_NORMAL 61
VMSTAT_PGSCAN_KSWAPD_MOVABLE 62
VMSTAT_PGSCAN_DIRECT_DMA 63
VMSTAT_PGSCAN_DIRECT_NORMAL 64
VMSTAT_PGSCAN_DIRECT_MOVABLE 65
VMSTAT_PGSCAN_DIRECT_THROTTLE 66
VMSTAT_PGINODESTEAL 67
VMSTAT_SLABS_SCANNED 68
VMSTAT_KSWAPD_INODESTEAL 69
VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY 70
VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY 71
VMSTAT_PAGEOUTRUN 72
VMSTAT_ALLOCSTALL 73
VMSTAT_PGROTATED 74
VMSTAT_DROP_PAGECACHE 75
VMSTAT_DROP_SLAB 76
VMSTAT_PGMIGRATE_SUCCESS 77
VMSTAT_PGMIGRATE_FAIL 78
VMSTAT_COMPACT_MIGRATE_SCANNED 79
VMSTAT_COMPACT_FREE_SCANNED 80
VMSTAT_COMPACT_ISOLATED 81
VMSTAT_COMPACT_STALL 82
VMSTAT_COMPACT_FAIL 83
VMSTAT_COMPACT_SUCCESS 84
VMSTAT_COMPACT_DAEMON_WAKE 85
VMSTAT_UNEVICTABLE_PGS_CULLED 86
VMSTAT_UNEVICTABLE_PGS_SCANNED 87
VMSTAT_UNEVICTABLE_PGS_RESCUED 88
VMSTAT_UNEVICTABLE_PGS_MLOCKED 89
VMSTAT_UNEVICTABLE_PGS_MUNLOCKED 90
VMSTAT_UNEVICTABLE_PGS_CLEARED 91
VMSTAT_UNEVICTABLE_PGS_STRANDED 92
VMSTAT_NR_ZSPAGES 93
VMSTAT_NR_ION_HEAP 94
VMSTAT_NR_GPU_HEAP 95
VMSTAT_ALLOCSTALL_DMA 96
VMSTAT_ALLOCSTALL_MOVABLE 97
VMSTAT_ALLOCSTALL_NORMAL 98
VMSTAT_COMPACT_DAEMON_FREE_SCANNED 99
VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED 100
VMSTAT_NR_FASTRPC 101
VMSTAT_NR_INDIRECTLY_RECLAIMABLE 102
VMSTAT_NR_ION_HEAP_POOL 103
VMSTAT_NR_KERNEL_MISC_RECLAIMABLE 104
VMSTAT_NR_SHADOW_CALL_STACK_BYTES 105
VMSTAT_NR_SHMEM_HUGEPAGES 106
VMSTAT_NR_SHMEM_PMDMAPPED 107
VMSTAT_NR_UNRECLAIMABLE_PAGES 108
VMSTAT_NR_ZONE_ACTIVE_ANON 109
VMSTAT_NR_ZONE_ACTIVE_FILE 110
VMSTAT_NR_ZONE_INACTIVE_ANON 111
VMSTAT_NR_ZONE_INACTIVE_FILE 112
VMSTAT_NR_ZONE_UNEVICTABLE 113
VMSTAT_NR_ZONE_WRITE_PENDING 114
VMSTAT_OOM_KILL 115
VMSTAT_PGLAZYFREE 116
VMSTAT_PGLAZYFREED 117
VMSTAT_PGREFILL 118
VMSTAT_PGSCAN_DIRECT 119
VMSTAT_PGSCAN_KSWAPD 120
VMSTAT_PGSKIP_DMA 121
VMSTAT_PGSKIP_MOVABLE 122
VMSTAT_PGSKIP_NORMAL 123
VMSTAT_PGSTEAL_DIRECT 124
VMSTAT_PGSTEAL_KSWAPD 125
VMSTAT_SWAP_RA 126
VMSTAT_SWAP_RA_HIT 127
VMSTAT_WORKINGSET_RESTORE 128
VMSTAT_ALLOCSTALL_DEVICE 129
VMSTAT_ALLOCSTALL_DMA32 130
VMSTAT_BALLOON_DEFLATE 131
VMSTAT_BALLOON_INFLATE 132
VMSTAT_BALLOON_MIGRATE 133
VMSTAT_CMA_ALLOC_FAIL 134
VMSTAT_CMA_ALLOC_SUCCESS 135
VMSTAT_NR_FILE_HUGEPAGES 136
VMSTAT_NR_FILE_PMDMAPPED 137
VMSTAT_NR_FOLL_PIN_ACQUIRED 138
VMSTAT_NR_FOLL_PIN_RELEASED 139
VMSTAT_NR_SEC_PAGE_TABLE_PAGES 140
VMSTAT_NR_SHADOW_CALL_STACK 141
VMSTAT_NR_SWAPCACHED 142
VMSTAT_NR_THROTTLED_WRITTEN 143
VMSTAT_PGALLOC_DEVICE 144
VMSTAT_PGALLOC_DMA32 145
VMSTAT_PGDEMOTE_DIRECT 146
VMSTAT_PGDEMOTE_KSWAPD 147
VMSTAT_PGREUSE 148
VMSTAT_PGSCAN_ANON 149
VMSTAT_PGSCAN_FILE 150
VMSTAT_PGSKIP_DEVICE 151
VMSTAT_PGSKIP_DMA32 152
VMSTAT_PGSTEAL_ANON 153
VMSTAT_PGSTEAL_FILE 154
VMSTAT_THP_COLLAPSE_ALLOC 155
VMSTAT_THP_COLLAPSE_ALLOC_FAILED 156
VMSTAT_THP_DEFERRED_SPLIT_PAGE 157
VMSTAT_THP_FAULT_ALLOC 158
VMSTAT_THP_FAULT_FALLBACK 159
VMSTAT_THP_FAULT_FALLBACK_CHARGE 160
VMSTAT_THP_FILE_ALLOC 161
VMSTAT_THP_FILE_FALLBACK 162
VMSTAT_THP_FILE_FALLBACK_CHARGE 163
VMSTAT_THP_FILE_MAPPED 164
VMSTAT_THP_MIGRATION_FAIL 165
VMSTAT_THP_MIGRATION_SPLIT 166
VMSTAT_THP_MIGRATION_SUCCESS 167
VMSTAT_THP_SCAN_EXCEED_NONE_PTE 168
VMSTAT_THP_SCAN_EXCEED_SHARE_PTE 169
VMSTAT_THP_SCAN_EXCEED_SWAP_PTE 170
VMSTAT_THP_SPLIT_PAGE 171
VMSTAT_THP_SPLIT_PAGE_FAILED 172
VMSTAT_THP_SPLIT_PMD 173
VMSTAT_THP_SWPOUT 174
VMSTAT_THP_SWPOUT_FALLBACK 175
VMSTAT_THP_ZERO_PAGE_ALLOC 176
VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED 177
VMSTAT_VMA_LOCK_ABORT 178
VMSTAT_VMA_LOCK_MISS 179
VMSTAT_VMA_LOCK_RETRY 180
VMSTAT_VMA_LOCK_SUCCESS 181
VMSTAT_WORKINGSET_ACTIVATE_ANON 182
VMSTAT_WORKINGSET_ACTIVATE_FILE 183
VMSTAT_WORKINGSET_NODES 184
VMSTAT_WORKINGSET_REFAULT_ANON 185
VMSTAT_WORKINGSET_REFAULT_FILE 186
VMSTAT_WORKINGSET_RESTORE_ANON 187
VMSTAT_WORKINGSET_RESTORE_FILE 188

SysStatsConfig.StatCounters

Defined in sys_stats_config.proto

Enum values:

Name Value Description
STAT_UNSPECIFIED 0
STAT_CPU_TIMES 1
STAT_IRQ_COUNTS 2
STAT_SOFTIRQ_COUNTS 3
STAT_FORK_COUNT 4

HeapprofdConfig

Configuration for go/heapprofd.

Defined in heapprofd_config.proto

Fields:

Field Type Description
sampling_interval_bytes uint64 Sampling rate for all heaps not specified via heap_sampling_intervals.
These are:
* All heaps if heap_sampling_intervals is empty.
* Those profiled due to all_heaps and not named in heaps if heap_sampling_intervals is not empty.
* The implicit libc.malloc heap if heaps is empty.
Set to 1 for perfect accuracy.
Otherwise, sample every sample_interval_bytes on average.
See https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval for more details.
BUGS Before Android 12, setting this to 0 would crash the target process.
N.B. This must be explicitly set to a non-zero value for all heaps (with this field or with heap_sampling_intervals), otherwise the producer will not start.
adaptive_sampling_shmem_threshold uint64 If less than the given numbers of bytes are left free in the shared memory buffer, increase sampling interval by a factor of two.
Adaptive sampling is disabled when set to 0.
adaptive_sampling_max_sampling_interval_bytes uint64 Stop doubling the sampling_interval once the sampling interval has reached this value.
process_cmdline string[] E.g. surfaceflinger, com.android.phone This input is normalized in the following way: if it contains slashes, everything up to the last slash is discarded. If it contains "@", everything after the first @ is discared.
E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
This transformation is also applied to the processes' command lines when matching.
pid uint64[] For watermark based triggering or local debugging.
target_installed_by string[] Only profile target if it was installed by one of the packages given.
Special values are:
* @system: installed on the system partition * @product: installed on the product partition * @null: sideloaded Supported on Android 12+.
heaps string[] Which heaps to sample, e.g. "libc.malloc". If left empty, only samples "malloc".
Introduced in Android 12.
exclude_heaps string[] Which heaps not to sample, e.g. "libc.malloc". This is useful when used in combination with all_heaps; Introduced in Android 12.
stream_allocations bool
heap_sampling_intervals uint64[] If given, needs to be the same length as heaps and gives the sampling interval for the respective entry in heaps.
Otherwise, sampling_interval_bytes is used.
It is recommended to set sampling_interval_bytes to a reasonable default value when using this, as a value of 0 for sampling_interval_bytes will crash the target process before Android 12.
Introduced in Android 12.
All values must be non-zero or the producer will not start.
all_heaps bool Sample all heaps registered by target process. Introduced in Android 12.
all bool Profile all processes eligible for profiling on the system.
See https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets for which processes are eligible.
On unmodified userdebug builds, this will lead to system crashes. Zygote will crash when trying to launch a new process as it will have an unexpected open socket to heapprofd.
heapprofd will likely be overloaded by the amount of data for low sampling intervals.
min_anonymous_memory_kb uint32 Do not profile processes whose anon RSS + swap < given value.
Introduced in Android 11.
max_heapprofd_memory_kb uint32 Stop profile if heapprofd memory usage goes beyond the given value.
Introduced in Android 11.
max_heapprofd_cpu_secs uint64 Stop profile if heapprofd CPU time since start of this data-source goes beyond given value.
Introduced in Android 11.
skip_symbol_prefix string[] Do not emit function names for mappings starting with this prefix.
E.g. /system to not emit symbols for any system libraries.
continuous_dump_config ContinuousDumpConfig Dump at a predefined interval.
shmem_size_bytes uint64 Size of the shared memory buffer between the profiled processes and heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500 MiB.
Needs to be:
* at least 8192, * a power of two, * a multiple of 4096.
block_client bool When the shmem buffer is full, block the client instead of ending the trace. Use with caution as this will significantly slow down the target process.
block_client_timeout_us uint32 If set, stop the trace session after blocking the client for this timeout. Needs to be larger than 100 us, otherwise no retries are done.
Introduced in Android 11.
no_startup bool Do not profile processes from startup, only match already running processes.
Can not be set at the same time as no_running.
Introduced in Android 11.
no_running bool Do not profile running processes. Only match processes on startup.
Can not be set at the same time as no_startup.
Introduced in Android 11.
dump_at_max bool Cause heapprofd to emit a single dump at the end, showing the memory usage at the point in time when the sampled heap usage of the process was at its maximum. This causes ProfilePacket.HeapSample.self_max to be set, and self_allocated and self_freed to not be set.
Introduced in Android 11.
disable_fork_teardown bool Escape hatch if the session is being torn down because of a forked child that shares memory space, but is not correctly identified as a vforked child.
Introduced in Android 11.
disable_vfork_detection bool We try to automatically detect when a target applicatation vforks but then does a memory allocation (or free). This auto-detection can be disabled with this.
Introduced in Android 11.

HeapprofdConfig.ContinuousDumpConfig

Defined in heapprofd_config.proto

Fields:

Field Type Description
dump_phase_ms uint32 ms to wait before first dump.
dump_interval_ms uint32 ms to wait between following dumps.

JavaHprofConfig

Configuration for managed app heap graph snapshots.

Defined in java_hprof_config.proto

Fields:

Field Type Description
process_cmdline string[] Command line allowlist, matched against the /proc//cmdline (not the comm string). The semantics of this field were changed since its original introduction.
On Android T+ (13+), this field can specify a single wildcard (), and the profiler will attempt to match it in two possible ways:
if the pattern starts with a '/', then it is matched against the first segment of the cmdline (i.e. argv0). For example "/bin/e*" would match "/bin/echo".
* otherwise the pattern is matched against the part of argv0 corresponding to the binary name (this is unrelated to /proc/pid/exe).
For example "echo" would match "/bin/echo".
On Android S (12) and below, both this pattern and /proc/pid/cmdline get normalized prior to an exact string comparison. Normalization is as follows: (1) trim everything beyond the first null or "@" byte; (2) if the string contains forward slashes, trim everything up to and including the last one.
Implementation note: in either case, at most 511 characters of cmdline are considered.
pid uint64[] For watermark based triggering or local debugging.
target_installed_by string[] Only profile target if it was installed by one of the packages given.
Special values are:
* @system: installed on the system partition * @product: installed on the product partition * @null: sideloaded Supported on Android 12+.
continuous_dump_config ContinuousDumpConfig Dump at a predefined interval.
min_anonymous_memory_kb uint32 Do not profile processes whose anon RSS + swap < given value.
dump_smaps bool Include the process' /proc/self/smaps.
This only shows maps that:
* start with /system * start with /vendor * start with /data/app * contain "extracted in memory from Y", where Y matches any of the above
ignored_types string[] Exclude objects of the following types from the profile. This can be useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".

JavaHprofConfig.ContinuousDumpConfig

If dump_interval_ms != 0, the following configuration is used.

Defined in java_hprof_config.proto

Fields:

Field Type Description
dump_phase_ms uint32 ms to wait before first continuous dump.
A dump is always created at the beginning of the trace.
dump_interval_ms uint32 ms to wait between following dumps.
scan_pids_only_on_start bool If true, scans all the processes to find process_cmdline and filter by min_anonymous_memory_kb only at data source start. Default on Android S-.
If false, rescans all the processes to find on every dump. Default on Android T+.

AndroidPowerConfig

Defined in android_power_config.proto

Fields:

Field Type Description
battery_poll_ms uint32
battery_counters BatteryCounters[]
collect_power_rails bool Where available enables per-power-rail measurements.
collect_energy_estimation_breakdown bool Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
Available from Android S.
collect_entity_state_residency bool Provides a breakdown of time in state for various subsystems.
Available from Android U.

AndroidPowerConfig.BatteryCounters

Defined in android_power_config.proto

Enum values:

Name Value Description
BATTERY_COUNTER_UNSPECIFIED 0
BATTERY_COUNTER_CHARGE 1 Coulomb counter.
BATTERY_COUNTER_CAPACITY_PERCENT 2 Charge (%).
BATTERY_COUNTER_CURRENT 3 Instantaneous current.
BATTERY_COUNTER_CURRENT_AVG 4 Avg current.
BATTERY_COUNTER_VOLTAGE 5 Instantaneous voltage.

AndroidLogConfig

Defined in android_log_config.proto

Fields:

Field Type Description
log_ids AndroidLogId[]
min_prio AndroidLogPriority If set ignores all log messages whose prio is < the given value.
filter_tags string[] If non-empty ignores all log messages whose tag doesn't match one of the specified values.

AndroidLogId

Values from NDK's android/log.h.

Defined in android_log_constants.proto

Enum values:

Name Value Description
LID_DEFAULT 0 MAIN.
LID_RADIO 1
LID_EVENTS 2
LID_SYSTEM 3
LID_CRASH 4
LID_STATS 5
LID_SECURITY 6
LID_KERNEL 7

AndroidLogPriority

Defined in android_log_constants.proto

Enum values:

Name Value Description
PRIO_UNSPECIFIED 0
PRIO_UNUSED 1 _DEFAULT, but should never be seen in logs.
PRIO_VERBOSE 2
PRIO_DEBUG 3
PRIO_INFO 4
PRIO_WARN 5
PRIO_ERROR 6
PRIO_FATAL 7

GpuCounterConfig

Defined in gpu_counter_config.proto

Fields:

Field Type Description
counter_period_ns uint64 Desired sampling interval for counters.
counter_ids uint32[] List of counters to be sampled. Counter IDs correspond to the ones described in GpuCounterSpec in the data source descriptor.
instrumented_sampling bool Sample counters by instrumenting command buffers.
fix_gpu_clock bool Fix gpu clock rate during trace session.

AndroidGameInterventionListConfig

Data source that lists game modes and game interventions of games on an Android device.

Defined in android_game_intervention_list_config.proto

Fields:

Field Type Description
package_name_filter string[] If not empty, emit info about only the following list of package names (exact match, no regex). Otherwise, emit info about all packages.

PackagesListConfig

Data source that lists details (such as version code) about packages on an Android device.

Defined in packages_list_config.proto

Fields:

Field Type Description
package_name_filter string[] If not empty, emit info about only the following list of package names (exact match, no regex). Otherwise, emit info about all packages.

PerfEventConfig

Configuration for the traced_perf profiler.

Example config for basic cpu profiling: perf_event_config { timebase { frequency: 80 } callstack_sampling { scope { target_cmdline: "surfaceflinger" target_cmdline: "system_server" } kernel_frames: true } }

Defined in perf_event_config.proto

Fields:

Field Type Description
timebase PerfEvents.Timebase What event to sample on, and how often.
Defined in common/perf_events.proto.
followers FollowerEvent[] Other events associated with the leader described in the timebase.
callstack_sampling CallstackSampling If set, the profiler will sample userspace processes' callstacks at the interval specified by the timebase.
If unset, the profiler will record only the event counts.
ring_buffer_read_period_ms uint32 How often the per-cpu ring buffers are read by the producer.
If unset, an implementation-defined default is used.
ring_buffer_pages uint32 Size (in 4k pages) of each per-cpu ring buffer that is filled by the kernel. If set, must be a power of two.
If unset, an implementation-defined default is used.
max_enqueued_footprint_kb uint64 Drop samples if the heap memory held by the samples in the unwinder queue is above the given limit. This counts the memory across all concurrent data sources (not just this one's), and there is no fairness guarantee - the whole quota might be used up by a concurrent source.
max_daemon_memory_kb uint32 Stop the data source if traced_perf's combined {RssAnon + Swap} memory footprint exceeds this value.
remote_descriptor_timeout_ms uint32 Timeout for the remote /proc//{maps,mem} file descriptors for a sampled process. This is primarily for Android, where this lookup is asynchronous. As long as the producer is waiting, the associated samples will be kept enqueued (putting pressure on the capacity of the shared unwinding queue). Once a lookup for a process expires, all associated samples are discarded. However, if the lookup still succeeds after the timeout, future samples will be handled normally.
If unset, an implementation-defined default is used.
unwind_state_clear_period_ms uint32 Optional period for clearing state cached by the unwinder. This is a heavy operation that is only necessary for traces that target a wide set of processes, and require the memory footprint to be reset periodically.
If unset, the cached state will not be cleared.
target_installed_by string[] If set, only profile target if it was installed by a package with one of these names. Special values:
* "@system": installed on the system partition * "@product": installed on the product partition * "@null": sideloaded Supported on Android 12+.
all_cpus bool Note: legacy configs had to set all_cpus to true to pass parsing.
We rely on this to detect such configs.
sampling_frequency uint32
kernel_frames bool
target_pid int32[]
target_cmdline string[]
exclude_pid int32[]
exclude_cmdline string[]
additional_cmdline_count uint32

PerfEvents.Timebase

What event to sample on, and how often. Commented from the perspective of its use in PerfEventConfig.

Defined in perf_events.proto

Fields:

Field Type Description
frequency uint64 Per-cpu sampling frequency in Hz, as requested from the kernel. Not the same as 1/period.
Details: the actual sampling will still be based on a period, but the kernel will dynamically adjust it based on the observed event rate, to approximate this frequency. Works best with steady-rate events like timers.
period uint64 Per-cpu sampling will occur every period counts of event.
Prefer frequency by default, as it's easier to oversample with a fixed period.
counter Counter
tracepoint Tracepoint
raw_event RawEvent
timestamp_clock PerfClock If set, samples will be timestamped with the given clock.
If unset, the clock is chosen by the implementation.
For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be used for hardware events (due to interrupt safety), for which the recommendation is to use one of the monotonic clocks.
name string Optional arbitrary name for the event, to identify it in the parsed trace. Does not affect the profiling itself. If unset, the trace parser will choose a suitable name.

PerfEvents.Counter

Builtin counter names from the uapi header. Commented with their perf tool aliases. finite), and generally make this list as extensive as possible. Excluding things like dynamic PMUs since those don't fit into a static enum.

Defined in perf_events.proto

Enum values:

Name Value Description
UNKNOWN_COUNTER 0
SW_CPU_CLOCK 1 cpu-clock
SW_PAGE_FAULTS 2 page-faults, faults
SW_TASK_CLOCK 3 task-clock
SW_CONTEXT_SWITCHES 4 context-switches, cs
SW_CPU_MIGRATIONS 5 cpu-migrations, migrations
SW_PAGE_FAULTS_MIN 6 minor-faults
SW_PAGE_FAULTS_MAJ 7 major-faults
SW_ALIGNMENT_FAULTS 8 alignment-faults
SW_EMULATION_FAULTS 9 emulation-faults
SW_DUMMY 20 dummy
HW_CPU_CYCLES 10 cpu-cycles, cycles
HW_INSTRUCTIONS 11 instructions
HW_CACHE_REFERENCES 12 cache-references
HW_CACHE_MISSES 13 cache-misses
HW_BRANCH_INSTRUCTIONS 14 branch-instructions, branches
HW_BRANCH_MISSES 15 branch-misses
HW_BUS_CYCLES 16 bus-cycles
HW_STALLED_CYCLES_FRONTEND 17 stalled-cycles-frontend, idle-cycles-frontend
HW_STALLED_CYCLES_BACKEND 18 stalled-cycles-backend, idle-cycles-backend
HW_REF_CPU_CYCLES 19 ref-cycles

PerfEvents.Tracepoint

Defined in perf_events.proto

Fields:

Field Type Description
name string Group and name for the tracepoint, acceptable forms:
* "sched/sched_switch" * "sched:sched_switch"
filter string Optional field-level filter for the tracepoint. Only events matching this filter will be counted (and therefore contribute to the sampling period).
Example: "prev_pid >= 42 && next_pid == 0".
For full syntax, see kernel documentation on "Event filtering":
https://www.kernel.org/doc/Documentation/trace/events.txt

PerfEvents.RawEvent

Syscall-level description of the event, propagated to the perf_event_attr struct. Primarily for local use-cases, since the event availability and encoding is hardware-specific.

Defined in perf_events.proto

Fields:

Field Type Description
type uint32
config uint64
config1 uint64
config2 uint64

PerfEvents.PerfClock

Subset of clocks that is supported by perf timestamping. CLOCK_TAI is excluded since it's not expected to be used in practice, but would require additions to the trace clock synchronisation logic.

Defined in perf_events.proto

Enum values:

Name Value Description
UNKNOWN_PERF_CLOCK 0
PERF_CLOCK_REALTIME 1
PERF_CLOCK_MONOTONIC 2
PERF_CLOCK_MONOTONIC_RAW 3
PERF_CLOCK_BOOTTIME 4

FollowerEvent

Additional events associated with a leader. Configuration is similar to Timebase event. Because data acquisition is driven by the leader there is no option to configure the clock or the frequency.

Defined in perf_events.proto

Fields:

Field Type Description
counter PerfEvents.Counter
tracepoint PerfEvents.Tracepoint
raw_event PerfEvents.RawEvent
name string

PerfEventConfig.CallstackSampling

Defined in perf_event_config.proto

Fields:

Field Type Description
scope Scope Defines a set of processes for which samples are retained/skipped. If unset, all samples are kept, but beware that it will be very heavy on the stack unwinder, which might start dropping samples due to overload.
kernel_frames bool If true, callstacks will include the kernel-space frames. Such frames can be identified by a magical "kernel" string as their mapping name.
Requires traced_perf to be running as root, or kptr_restrict to have been manually unrestricted. On Android, the platform should do the right thing on debug builds.
This does not disclose KASLR, as only the function names are emitted.
user_frames UnwindMode Whether to record and unwind userspace callstacks. If unset, defaults to including userspace (UNWIND_DWARF) both for backwards compatibility and as the most common default (this defaulting is only applicable if the outer CallstackSampling message is explicitly set).

PerfEventConfig.Scope

Defined in perf_event_config.proto

Fields:

Field Type Description
target_pid int32[] Process ID (TGID) allowlist. If this list is not empty, only matching samples will be retained. If multiple allow/deny-lists are specified by the config, then all of them are evaluated for each sampled process.
target_cmdline string[] Command line allowlist, matched against the /proc//cmdline (not the comm string). The semantics of this field were changed since its original introduction.
On Android T+ (13+), this field can specify a single wildcard (), and the profiler will attempt to match it in two possible ways:
if the pattern starts with a '/', then it is matched against the first segment of the cmdline (i.e. argv0). For example "/bin/e*" would match "/bin/echo".
* otherwise the pattern is matched against the part of argv0 corresponding to the binary name (this is unrelated to /proc/pid/exe).
For example "echo" would match "/bin/echo".
On Android S (12) and below, both this pattern and /proc/pid/cmdline get normalized prior to an exact string comparison. Normalization is as follows: (1) trim everything beyond the first null or "@" byte; (2) if the string contains forward slashes, trim everything up to and including the last one.
Implementation note: in either case, at most 511 characters of cmdline are considered.
exclude_pid int32[] List of excluded pids.
exclude_cmdline string[] List of excluded cmdlines. See description of target_cmdline for how this is handled.
additional_cmdline_count uint32 Number of additional command lines to sample. Only those which are neither explicitly included nor excluded will be considered. Processes are accepted on a first come, first served basis.
process_shard_count uint32 If set to N, all encountered processes will be put into one of the N possible bins, and only one randomly-chosen bin will be selected for unwinding. The binning is simply "pid % N", under the assumption that low-order bits of pids are roughly uniformly distributed. Other explicit inclusions/exclusions in this Scope message are still respected.
The profiler will report the chosen shard in PerfSampleDefaults, and the values will be queryable in trace processor under the "stats" table as "perf_process_shard_count" and "perf_chosen_process_shard".
NB: all data sources in a config that set process_shard_count must set it to the same value. The profiler will choose one bin for all those data sources.

PerfEventConfig.UnwindMode

Userspace unwinding mode. A possible future addition is kernel-unwound callchains for frame pointer based systems.

Defined in perf_event_config.proto

Enum values:

Name Value Description
UNWIND_UNKNOWN 0
UNWIND_SKIP 1 Do not unwind userspace:
UNWIND_DWARF 2 Use libunwindstack (default):
UNWIND_FRAME_POINTER 3 Use userspace frame pointer unwinder:

VulkanMemoryConfig

Defined in vulkan_memory_config.proto

Fields:

Field Type Description
track_driver_memory_usage bool Tracking driver memory usage events
track_device_memory_usage bool Tracking device memory usage events

TrackEventConfig

Defined in track_event_config.proto

Fields:

Field Type Description
disabled_categories string[] Default: []
enabled_categories string[] Default: []
disabled_tags string[] Default: ["slow", "debug"]
enabled_tags string[] Default: []
disable_incremental_timestamps bool Default: false (i.e. enabled by default)
timestamp_unit_multiplier uint64 Allows to specify a custom unit different than the default (ns).
Also affects thread timestamps if enable_thread_time_sampling = true.
A multiplier of 1000 means that a timestamp = 3 should be interpreted as 3000 ns = 3 us.
Default: 1 (if unset, it should be read as 1).
filter_debug_annotations bool Default: false (i.e. debug_annotations is NOT filtered out by default) When true, any debug annotations provided as arguments to the TRACE_EVENT macros are not written into the trace. Typed arguments will still be emitted even if set to true.
enable_thread_time_sampling bool Default : false (i.e. disabled) When true, the SDK samples and emits the current thread time counter value for each event on the current thread's track. This value represents the total CPU time consumed by that thread since its creation. Note that if a thread is not scheduled by OS for some duration, that time won't be included in thread_time.
Learn more : "CLOCK_THREAD_CPUTIME_ID" flag at https://linux.die.net/man/3/clock_gettime
filter_dynamic_event_names bool Default: false (i.e. dynamic event names are NOT filtered out by default) When true, event_names wrapped in perfetto::DynamicString will be filtered out.

AndroidPolledStateConfig

Data source that polls for display state. This should only be used for backward-compatibility; AndroidSystemPropertyConfig should be preferred.

Defined in android_polled_state_config.proto

Fields:

Field Type Description
poll_ms uint32 Frequency of polling. If absent the state will be recorded once, at the start of the trace.
This is required to be > 100ms to avoid excessive CPU usage.

AndroidSystemPropertyConfig

Data source that polls for system properties.

Defined in android_system_property_config.proto

Fields:

Field Type Description
poll_ms uint32 Frequency of polling. If absent the state will be recorded once, at the start of the trace.
This is required to be > 100ms to avoid excessive CPU usage.
property_name string[] Properties to poll. All property names must start with "debug.tracing.".

StatsdTracingConfig

This file is named 'statsd_tracing_config.proto' rather than 'statsd_config.proto' (which would be more consistent with the other config protos) so it doesn't show up and confuse folks looking for the existing statsd_config.proto for configuring statsd itself. Same for the config proto itself.

Defined in statsd_tracing_config.proto

Fields:

Field Type Description
push_atom_id AtomId[] This is for the common case of the atom id being known in the enum AtomId.
raw_push_atom_id int32[] Escape hatch for Atom IDs that are not yet in the AtomId enum (e.g. non-upstream atoms that don't exist in AOSP).
pull_config StatsdPullAtomConfig[]

AtomId

This enum is obtained by post-processing AOSP/frameworks/proto_logging/stats/atoms.proto through AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one enum value for each proto field defined in the upstream atoms.proto.

Defined in atom_ids.proto

Enum values:

Name Value Description
ATOM_UNSPECIFIED 0
ATOM_BLE_SCAN_STATE_CHANGED 2
ATOM_PROCESS_STATE_CHANGED 3
ATOM_BLE_SCAN_RESULT_RECEIVED 4
ATOM_SENSOR_STATE_CHANGED 5
ATOM_GPS_SCAN_STATE_CHANGED 6
ATOM_SYNC_STATE_CHANGED 7
ATOM_SCHEDULED_JOB_STATE_CHANGED 8
ATOM_SCREEN_BRIGHTNESS_CHANGED 9
ATOM_WAKELOCK_STATE_CHANGED 10
ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED 11
ATOM_MOBILE_RADIO_POWER_STATE_CHANGED 12
ATOM_WIFI_RADIO_POWER_STATE_CHANGED 13
ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED 14
ATOM_MEMORY_FACTOR_STATE_CHANGED 15
ATOM_EXCESSIVE_CPU_USAGE_REPORTED 16
ATOM_CACHED_KILL_REPORTED 17
ATOM_PROCESS_MEMORY_STAT_REPORTED 18
ATOM_LAUNCHER_EVENT 19
ATOM_BATTERY_SAVER_MODE_STATE_CHANGED 20
ATOM_DEVICE_IDLE_MODE_STATE_CHANGED 21
ATOM_DEVICE_IDLING_MODE_STATE_CHANGED 22
ATOM_AUDIO_STATE_CHANGED 23
ATOM_MEDIA_CODEC_STATE_CHANGED 24
ATOM_CAMERA_STATE_CHANGED 25
ATOM_FLASHLIGHT_STATE_CHANGED 26
ATOM_UID_PROCESS_STATE_CHANGED 27
ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED 28
ATOM_SCREEN_STATE_CHANGED 29
ATOM_BATTERY_LEVEL_CHANGED 30
ATOM_CHARGING_STATE_CHANGED 31
ATOM_PLUGGED_STATE_CHANGED 32
ATOM_INTERACTIVE_STATE_CHANGED 33
ATOM_TOUCH_EVENT_REPORTED 34
ATOM_WAKEUP_ALARM_OCCURRED 35
ATOM_KERNEL_WAKEUP_REPORTED 36
ATOM_WIFI_LOCK_STATE_CHANGED 37
ATOM_WIFI_SIGNAL_STRENGTH_CHANGED 38
ATOM_WIFI_SCAN_STATE_CHANGED 39
ATOM_PHONE_SIGNAL_STRENGTH_CHANGED 40
ATOM_SETTING_CHANGED 41
ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED 42
ATOM_ISOLATED_UID_CHANGED 43
ATOM_PACKET_WAKEUP_OCCURRED 44
ATOM_WALL_CLOCK_TIME_SHIFTED 45
ATOM_ANOMALY_DETECTED 46
ATOM_APP_BREADCRUMB_REPORTED 47
ATOM_APP_START_OCCURRED 48
ATOM_APP_START_CANCELED 49
ATOM_APP_START_FULLY_DRAWN 50
ATOM_LMK_KILL_OCCURRED 51
ATOM_PICTURE_IN_PICTURE_STATE_CHANGED 52
ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED 53
ATOM_APP_START_MEMORY_STATE_CAPTURED 55
ATOM_SHUTDOWN_SEQUENCE_REPORTED 56
ATOM_BOOT_SEQUENCE_REPORTED 57
ATOM_OVERLAY_STATE_CHANGED 59
ATOM_FOREGROUND_SERVICE_STATE_CHANGED 60
ATOM_CALL_STATE_CHANGED 61
ATOM_KEYGUARD_STATE_CHANGED 62
ATOM_KEYGUARD_BOUNCER_STATE_CHANGED 63
ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED 64
ATOM_APP_DIED 65
ATOM_RESOURCE_CONFIGURATION_CHANGED 66
ATOM_BLUETOOTH_ENABLED_STATE_CHANGED 67
ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED 68
ATOM_GPS_SIGNAL_QUALITY_CHANGED 69
ATOM_USB_CONNECTOR_STATE_CHANGED 70
ATOM_SPEAKER_IMPEDANCE_REPORTED 71
ATOM_HARDWARE_FAILED 72
ATOM_PHYSICAL_DROP_DETECTED 73
ATOM_CHARGE_CYCLES_REPORTED 74
ATOM_MOBILE_CONNECTION_STATE_CHANGED 75
ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED 76
ATOM_USB_DEVICE_ATTACHED 77
ATOM_APP_CRASH_OCCURRED 78
ATOM_ANR_OCCURRED 79
ATOM_WTF_OCCURRED 80
ATOM_LOW_MEM_REPORTED 81
ATOM_GENERIC_ATOM 82
ATOM_VIBRATOR_STATE_CHANGED 84
ATOM_DEFERRED_JOB_STATS_REPORTED 85
ATOM_THERMAL_THROTTLING 86
ATOM_BIOMETRIC_ACQUIRED 87
ATOM_BIOMETRIC_AUTHENTICATED 88
ATOM_BIOMETRIC_ERROR_OCCURRED 89
ATOM_UI_EVENT_REPORTED 90
ATOM_BATTERY_HEALTH_SNAPSHOT 91
ATOM_SLOW_IO 92
ATOM_BATTERY_CAUSED_SHUTDOWN 93
ATOM_PHONE_SERVICE_STATE_CHANGED 94
ATOM_PHONE_STATE_CHANGED 95
ATOM_USER_RESTRICTION_CHANGED 96
ATOM_SETTINGS_UI_CHANGED 97
ATOM_CONNECTIVITY_STATE_CHANGED 98
ATOM_SERVICE_STATE_CHANGED 99
ATOM_SERVICE_LAUNCH_REPORTED 100
ATOM_FLAG_FLIP_UPDATE_OCCURRED 101
ATOM_BINARY_PUSH_STATE_CHANGED 102
ATOM_DEVICE_POLICY_EVENT 103
ATOM_DOCS_UI_FILE_OP_CANCELED 104
ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED 105
ATOM_DOCS_UI_FILE_OP_FAILURE 106
ATOM_DOCS_UI_PROVIDER_FILE_OP 107
ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST 108
ATOM_DOCS_UI_LAUNCH_REPORTED 109
ATOM_DOCS_UI_ROOT_VISITED 110
ATOM_DOCS_UI_STARTUP_MS 111
ATOM_DOCS_UI_USER_ACTION_REPORTED 112
ATOM_WIFI_ENABLED_STATE_CHANGED 113
ATOM_WIFI_RUNNING_STATE_CHANGED 114
ATOM_APP_COMPACTED 115
ATOM_NETWORK_DNS_EVENT_REPORTED 116
ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED 117
ATOM_DOCS_UI_PICK_RESULT_REPORTED 118
ATOM_DOCS_UI_SEARCH_MODE_REPORTED 119
ATOM_DOCS_UI_SEARCH_TYPE_REPORTED 120
ATOM_DATA_STALL_EVENT 121
ATOM_RESCUE_PARTY_RESET_REPORTED 122
ATOM_SIGNED_CONFIG_REPORTED 123
ATOM_GNSS_NI_EVENT_REPORTED 124
ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT 125
ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED 126
ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED 127
ATOM_APP_DOWNGRADED 128
ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED 129
ATOM_LOW_STORAGE_STATE_CHANGED 130
ATOM_GNSS_NFW_NOTIFICATION_REPORTED 131
ATOM_GNSS_CONFIGURATION_REPORTED 132
ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED 133
ATOM_NFC_ERROR_OCCURRED 134
ATOM_NFC_STATE_CHANGED 135
ATOM_NFC_BEAM_OCCURRED 136
ATOM_NFC_CARDEMULATION_OCCURRED 137
ATOM_NFC_TAG_OCCURRED 138
ATOM_NFC_HCE_TRANSACTION_OCCURRED 139
ATOM_SE_STATE_CHANGED 140
ATOM_SE_OMAPI_REPORTED 141
ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED 142
ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED 143
ATOM_ADB_CONNECTION_CHANGED 144
ATOM_SPEECH_DSP_STAT_REPORTED 145
ATOM_USB_CONTAMINANT_REPORTED 146
ATOM_WATCHDOG_ROLLBACK_OCCURRED 147
ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED 148
ATOM_BUBBLE_UI_CHANGED 149
ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED 150
ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED 151
ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED 152
ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED 153
ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED 154
ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED 155
ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED 156
ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED 157
ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED 158
ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED 159
ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED 160
ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED 161
ATOM_BLUETOOTH_DEVICE_INFO_REPORTED 162
ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED 163
ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED 164
ATOM_BLUETOOTH_BOND_STATE_CHANGED 165
ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED 166
ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED 167
ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED 168
ATOM_PROCESS_START_TIME 169
ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED 170
ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED 171
ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED 172
ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED 173
ATOM_ASSIST_GESTURE_STAGE_REPORTED 174
ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED 175
ATOM_ASSIST_GESTURE_PROGRESS_REPORTED 176
ATOM_TOUCH_GESTURE_CLASSIFIED 177
ATOM_HIDDEN_API_USED 178
ATOM_STYLE_UI_CHANGED 179
ATOM_PRIVACY_INDICATORS_INTERACTED 180
ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED 181
ATOM_NETWORK_STACK_REPORTED 182
ATOM_APP_MOVED_STORAGE_REPORTED 183
ATOM_BIOMETRIC_ENROLLED 184
ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED 185
ATOM_TOMB_STONE_OCCURRED 186
ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED 187
ATOM_INTELLIGENCE_EVENT_REPORTED 188
ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED 189
ATOM_ROLE_REQUEST_RESULT_REPORTED 190
ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED 191
ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED 192
ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED 193
ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED 194
ATOM_MEDIAMETRICS_CODEC_REPORTED 195
ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED 196
ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED 197
ATOM_MEDIAMETRICS_MEDIADRM_REPORTED 198
ATOM_MEDIAMETRICS_NUPLAYER_REPORTED 199
ATOM_MEDIAMETRICS_RECORDER_REPORTED 200
ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED 201
ATOM_CAR_POWER_STATE_CHANGED 203
ATOM_GARAGE_MODE_INFO 204
ATOM_TEST_ATOM_REPORTED 205
ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED 206
ATOM_CONTENT_CAPTURE_SERVICE_EVENTS 207
ATOM_CONTENT_CAPTURE_SESSION_EVENTS 208
ATOM_CONTENT_CAPTURE_FLUSHED 209
ATOM_LOCATION_MANAGER_API_USAGE_REPORTED 210
ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED 211
ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT 212
ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS 213
ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION 214
ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED 215
ATOM_APP_PERMISSION_FRAGMENT_VIEWED 216
ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED 217
ATOM_PERMISSION_APPS_FRAGMENT_VIEWED 218
ATOM_TEXT_SELECTION_EVENT 219
ATOM_TEXT_LINKIFY_EVENT 220
ATOM_CONVERSATION_ACTIONS_EVENT 221
ATOM_LANGUAGE_DETECTION_EVENT 222
ATOM_EXCLUSION_RECT_STATE_CHANGED 223
ATOM_BACK_GESTURE_REPORTED_REPORTED 224
ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED 225
ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED 226
ATOM_CAMERA_ACTION_EVENT 227
ATOM_APP_COMPATIBILITY_CHANGE_REPORTED 228
ATOM_PERFETTO_UPLOADED 229
ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED 230
ATOM_MEDIA_PROVIDER_SCAN_OCCURRED 233
ATOM_MEDIA_CONTENT_DELETED 234
ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED 235
ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED 236
ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED 237
ATOM_REBOOT_ESCROW_RECOVERY_REPORTED 238
ATOM_BOOT_TIME_EVENT_DURATION_REPORTED 239
ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED 240
ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED 241
ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED 242
ATOM_USERSPACE_REBOOT_REPORTED 243
ATOM_NOTIFICATION_REPORTED 244
ATOM_NOTIFICATION_PANEL_REPORTED 245
ATOM_NOTIFICATION_CHANNEL_MODIFIED 246
ATOM_INTEGRITY_CHECK_RESULT_REPORTED 247
ATOM_INTEGRITY_RULES_PUSHED 248
ATOM_CB_MESSAGE_REPORTED 249
ATOM_CB_MESSAGE_ERROR 250
ATOM_WIFI_HEALTH_STAT_REPORTED 251
ATOM_WIFI_FAILURE_STAT_REPORTED 252
ATOM_WIFI_CONNECTION_RESULT_REPORTED 253
ATOM_APP_FREEZE_CHANGED 254
ATOM_SNAPSHOT_MERGE_REPORTED 255
ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED 256
ATOM_DISPLAY_JANK_REPORTED 257
ATOM_APP_STANDBY_BUCKET_CHANGED 258
ATOM_SHARESHEET_STARTED 259
ATOM_RANKING_SELECTED 260
ATOM_TVSETTINGS_UI_INTERACTED 261
ATOM_LAUNCHER_SNAPSHOT 262
ATOM_PACKAGE_INSTALLER_V2_REPORTED 263
ATOM_USER_LIFECYCLE_JOURNEY_REPORTED 264
ATOM_USER_LIFECYCLE_EVENT_OCCURRED 265
ATOM_ACCESSIBILITY_SHORTCUT_REPORTED 266
ATOM_ACCESSIBILITY_SERVICE_REPORTED 267
ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED 268
ATOM_APP_USAGE_EVENT_OCCURRED 269
ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED 270
ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED 271
ATOM_AUTO_REVOKED_APP_INTERACTION 272
ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION 273
ATOM_EVS_USAGE_STATS_REPORTED 274
ATOM_AUDIO_POWER_USAGE_DATA_REPORTED 275
ATOM_TV_TUNER_STATE_CHANGED 276
ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED 277
ATOM_CB_MESSAGE_FILTERED 278
ATOM_TV_TUNER_DVR_STATUS 279
ATOM_TV_CAS_SESSION_OPEN_STATUS 280
ATOM_ASSISTANT_INVOCATION_REPORTED 281
ATOM_DISPLAY_WAKE_REPORTED 282
ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED 283
ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED 284
ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED 285
ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED 286
ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED 287
ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED 288
ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED 289
ATOM_NETWORK_IP_PROVISIONING_REPORTED 290
ATOM_NETWORK_DHCP_RENEW_REPORTED 291
ATOM_NETWORK_VALIDATION_REPORTED 292
ATOM_NETWORK_STACK_QUIRK_REPORTED 293
ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED 294
ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED 295
ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED 296
ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED 297
ATOM_BLOB_COMMITTED 298
ATOM_BLOB_LEASED 299
ATOM_BLOB_OPENED 300
ATOM_CONTACTS_PROVIDER_STATUS_REPORTED 301
ATOM_KEYSTORE_KEY_EVENT_REPORTED 302
ATOM_NETWORK_TETHERING_REPORTED 303
ATOM_IME_TOUCH_REPORTED 304
ATOM_UI_INTERACTION_FRAME_INFO_REPORTED 305
ATOM_UI_ACTION_LATENCY_REPORTED 306
ATOM_WIFI_DISCONNECT_REPORTED 307
ATOM_WIFI_CONNECTION_STATE_CHANGED 308
ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED 309
ATOM_HDMI_CEC_MESSAGE_REPORTED 310
ATOM_AIRPLANE_MODE 311
ATOM_MODEM_RESTART 312
ATOM_CARRIER_ID_MISMATCH_REPORTED 313
ATOM_CARRIER_ID_TABLE_UPDATED 314
ATOM_DATA_STALL_RECOVERY_REPORTED 315
ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED 316
ATOM_TLS_HANDSHAKE_REPORTED 317
ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED 318
ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED 319
ATOM_MEDIAMETRICS_PLAYBACK_REPORTED 320
ATOM_MEDIA_NETWORK_INFO_CHANGED 321
ATOM_MEDIA_PLAYBACK_STATE_CHANGED 322
ATOM_MEDIA_PLAYBACK_ERROR_REPORTED 323
ATOM_MEDIA_PLAYBACK_TRACK_CHANGED 324
ATOM_WIFI_SCAN_REPORTED 325
ATOM_WIFI_PNO_SCAN_REPORTED 326
ATOM_TIF_TUNE_CHANGED 327
ATOM_AUTO_ROTATE_REPORTED 328
ATOM_PERFETTO_TRIGGER 329
ATOM_TRANSCODING_DATA 330
ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED 331
ATOM_DEVICE_ROTATED 333
ATOM_SIM_SPECIFIC_SETTINGS_RESTORED 334
ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED 335
ATOM_PIN_STORAGE_EVENT 336
ATOM_FACE_DOWN_REPORTED 337
ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED 338
ATOM_REBOOT_ESCROW_PREPARATION_REPORTED 339
ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED 340
ATOM_REBOOT_ESCROW_REBOOT_REPORTED 341
ATOM_BINDER_LATENCY_REPORTED 342
ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED 343
ATOM_MEDIA_TRANSCODING_SESSION_ENDED 344
ATOM_MAGNIFICATION_USAGE_REPORTED 345
ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED 346
ATOM_APP_SEARCH_CALL_STATS_REPORTED 347
ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED 348
ATOM_DEVICE_CONTROL_CHANGED 349
ATOM_DEVICE_STATE_CHANGED 350
ATOM_INPUTDEVICE_REGISTERED 351
ATOM_SMARTSPACE_CARD_REPORTED 352
ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED 353
ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED 354
ATOM_AUTH_ENROLL_ACTION_INVOKED 355
ATOM_AUTH_DEPRECATED_API_USED 356
ATOM_UNATTENDED_REBOOT_OCCURRED 357
ATOM_LONG_REBOOT_BLOCKING_REPORTED 358
ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED 359
ATOM_FDTRACK_EVENT_OCCURRED 364
ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED 365
ATOM_ALARM_BATCH_DELIVERED 367
ATOM_ALARM_SCHEDULED 368
ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED 369
ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED 370
ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED 371
ATOM_APP_SEARCH_QUERY_STATS_REPORTED 372
ATOM_APP_PROCESS_DIED 373
ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED 374
ATOM_SLOW_INPUT_EVENT_REPORTED 375
ATOM_ANR_OCCURRED_PROCESSING_STARTED 376
ATOM_APP_SEARCH_REMOVE_STATS_REPORTED 377
ATOM_MEDIA_CODEC_REPORTED 378
ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION 379
ATOM_PERMISSION_DETAILS_INTERACTION 380
ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION 381
ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION 382
ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED 383
ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT 384
ATOM_APP_COMPAT_STATE_CHANGED 386
ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED 387
ATOM_SPLITSCREEN_UI_CHANGED 388
ATOM_NETWORK_DNS_HANDSHAKE_REPORTED 389
ATOM_BLUETOOTH_CODE_PATH_COUNTER 390
ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY 392
ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED 393
ATOM_NEURALNETWORKS_COMPILATION_COMPLETED 394
ATOM_NEURALNETWORKS_EXECUTION_COMPLETED 395
ATOM_NEURALNETWORKS_COMPILATION_FAILED 396
ATOM_NEURALNETWORKS_EXECUTION_FAILED 397
ATOM_CONTEXT_HUB_BOOTED 398
ATOM_CONTEXT_HUB_RESTARTED 399
ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED 400
ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED 401
ATOM_UWB_SESSION_INITED 402
ATOM_UWB_SESSION_CLOSED 403
ATOM_UWB_FIRST_RANGING_RECEIVED 404
ATOM_UWB_RANGING_MEASUREMENT_RECEIVED 405
ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED 406
ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED 407
ATOM_CLIPBOARD_CLEARED 408
ATOM_VM_CREATION_REQUESTED 409
ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED 410
ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED 411
ATOM_APPLICATION_LOCALES_CHANGED 412
ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED 413
ATOM_FOLD_STATE_DURATION_REPORTED 414
ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED 415
ATOM_DISPLAY_HBM_STATE_CHANGED 416
ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED 417
ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED 418
ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED 419
ATOM_VBMETA_DIGEST_REPORTED 420
ATOM_APEX_INFO_GATHERED 421
ATOM_PVM_INFO_GATHERED 422
ATOM_WEAR_SETTINGS_UI_INTERACTED 423
ATOM_TRACING_SERVICE_REPORT_EVENT 424
ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED 425
ATOM_LAUNCHER_LATENCY 426
ATOM_DROPBOX_ENTRY_DROPPED 427
ATOM_WIFI_P2P_CONNECTION_REPORTED 428
ATOM_GAME_STATE_CHANGED 429
ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED 430
ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED 431
ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED 432
ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED 433
ATOM_HOTWORD_DETECTOR_EVENTS 434
ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED 437
ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED 440
ATOM_APP_BACKGROUND_RESTRICTIONS_INFO 441
ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED 442
ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED 443
ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED 444
ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED 445
ATOM_GNSS_PSDS_DOWNLOAD_REPORTED 446
ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED 447
ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED 448
ATOM_DREAM_UI_EVENT_REPORTED 449
ATOM_TASK_MANAGER_EVENT_REPORTED 450
ATOM_CDM_ASSOCIATION_ACTION 451
ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED 452
ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED 453
ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED 454
ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED 455
ATOM_UWB_DEVICE_ERROR_REPORTED 456
ATOM_ISOLATED_COMPILATION_SCHEDULED 457
ATOM_ISOLATED_COMPILATION_ENDED 458
ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE 459
ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED 460
ATOM_TELEPHONY_ANOMALY_DETECTED 461
ATOM_LETTERBOX_POSITION_CHANGED 462
ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT 463
ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO 464
ATOM_REMOTE_KEY_PROVISIONING_TIMING 465
ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT 466
ATOM_SYNC_EXEMPTION_OCCURRED 468
ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED 469
ATOM_DOCK_STATE_CHANGED 470
ATOM_SAFETY_SOURCE_STATE_COLLECTED 471
ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED 472
ATOM_SAFETY_CENTER_INTERACTION_REPORTED 473
ATOM_SETTINGS_PROVIDER_SETTING_CHANGED 474
ATOM_BROADCAST_DELIVERY_EVENT_REPORTED 475
ATOM_SERVICE_REQUEST_EVENT_REPORTED 476
ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED 477
ATOM_BLUETOOTH_DEVICE_NAME_REPORTED 478
ATOM_CB_CONFIG_UPDATED 479
ATOM_CB_MODULE_ERROR_REPORTED 480
ATOM_CB_SERVICE_FEATURE_CHANGED 481
ATOM_CB_RECEIVER_FEATURE_CHANGED 482
ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION 484
ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION 485
ATOM_PRIVACY_SIGNALS_JOB_FAILURE 486
ATOM_VIBRATION_REPORTED 487
ATOM_UWB_RANGING_START 489
ATOM_APP_COMPACTED_V2 491
ATOM_DISPLAY_BRIGHTNESS_CHANGED 494
ATOM_ACTIVITY_ACTION_BLOCKED 495
ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED 504
ATOM_VM_BOOTED 505
ATOM_VM_EXITED 506
ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED 507
ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED 508
ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED 509
ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED 510
ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED 511
ATOM_HEARING_AID_INFO_REPORTED 513
ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED 514
ATOM_AMBIENT_MODE_CHANGED 515
ATOM_ANR_LATENCY_REPORTED 516
ATOM_RESOURCE_API_INFO 517
ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED 518
ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED 519
ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED 520
ATOM_AIRPLANE_MODE_SESSION_REPORTED 521
ATOM_VM_CPU_STATUS_REPORTED 522
ATOM_VM_MEM_STATUS_REPORTED 523
ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED 524
ATOM_DEFAULT_NETWORK_REMATCH_INFO 525
ATOM_NETWORK_SELECTION_PERFORMANCE 526
ATOM_NETWORK_NSD_REPORTED 527
ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED 529
ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED 530
ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED 531
ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED 532
ATOM_BLUETOOTH_GATT_APP_INFO 533
ATOM_BRIGHTNESS_CONFIGURATION_UPDATED 534
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED 538
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED 539
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED 540
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED 541
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY 542
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY 543
ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED 544
ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED 545
ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED 546
ATOM_LAUNCHER_IMPRESSION_EVENT 547
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY 549
ATOM_WS_WATCH_FACE_EDITED 551
ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED 552
ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED 553
ATOM_PACKAGE_UNINSTALLATION_REPORTED 554
ATOM_GAME_MODE_CHANGED 555
ATOM_GAME_MODE_CONFIGURATION_CHANGED 556
ATOM_BEDTIME_MODE_STATE_CHANGED 557
ATOM_NETWORK_SLICE_SESSION_ENDED 558
ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED 559
ATOM_NFC_TAG_TYPE_OCCURRED 560
ATOM_NFC_AID_CONFLICT_OCCURRED 561
ATOM_NFC_READER_CONFLICT_OCCURRED 562
ATOM_WS_TILE_LIST_CHANGED 563
ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION 564
ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED 566
ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED 567
ATOM_MEDIA_DRM_CREATED 568
ATOM_MEDIA_DRM_ERRORED 569
ATOM_MEDIA_DRM_SESSION_OPENED 570
ATOM_MEDIA_DRM_SESSION_CLOSED 571
ATOM_USER_SELECTED_RESOLUTION 572
ATOM_UNSAFE_INTENT_EVENT_REPORTED 573
ATOM_PERFORMANCE_HINT_SESSION_REPORTED 574
ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED 576
ATOM_BIOMETRIC_TOUCH_REPORTED 577
ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED 578
ATOM_LOCATION_ENABLED_STATE_CHANGED 580
ATOM_IME_REQUEST_FINISHED 581
ATOM_USB_COMPLIANCE_WARNINGS_REPORTED 582
ATOM_APP_SUPPORTED_LOCALES_CHANGED 583
ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED 586
ATOM_BIOMETRIC_PROPERTIES_COLLECTED 587
ATOM_KERNEL_WAKEUP_ATTRIBUTED 588
ATOM_SCREEN_STATE_CHANGED_V2 589
ATOM_WS_BACKUP_ACTION_REPORTED 590
ATOM_WS_RESTORE_ACTION_REPORTED 591
ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED 592
ATOM_MEDIA_SESSION_UPDATED 594
ATOM_WEAR_OOBE_STATE_CHANGED 595
ATOM_WS_NOTIFICATION_UPDATED 596
ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED 601
ATOM_WS_COMPLICATION_TAPPED 602
ATOM_WS_NOTIFICATION_BLOCKING 780
ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED 822
ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED 823
ATOM_WS_NOTIFICATION_ACTIONED 824
ATOM_WS_NOTIFICATION_LATENCY 880
ATOM_WIFI_BYTES_TRANSFER 10000
ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG 10001
ATOM_MOBILE_BYTES_TRANSFER 10002
ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG 10003
ATOM_BLUETOOTH_BYTES_TRANSFER 10006
ATOM_KERNEL_WAKELOCK 10004
ATOM_SUBSYSTEM_SLEEP_STATE 10005
ATOM_CPU_TIME_PER_UID 10009
ATOM_CPU_TIME_PER_UID_FREQ 10010
ATOM_WIFI_ACTIVITY_INFO 10011
ATOM_MODEM_ACTIVITY_INFO 10012
ATOM_BLUETOOTH_ACTIVITY_INFO 10007
ATOM_PROCESS_MEMORY_STATE 10013
ATOM_SYSTEM_ELAPSED_REALTIME 10014
ATOM_SYSTEM_UPTIME 10015
ATOM_CPU_ACTIVE_TIME 10016
ATOM_CPU_CLUSTER_TIME 10017
ATOM_DISK_SPACE 10018
ATOM_REMAINING_BATTERY_CAPACITY 10019
ATOM_FULL_BATTERY_CAPACITY 10020
ATOM_TEMPERATURE 10021
ATOM_BINDER_CALLS 10022
ATOM_BINDER_CALLS_EXCEPTIONS 10023
ATOM_LOOPER_STATS 10024
ATOM_DISK_STATS 10025
ATOM_DIRECTORY_USAGE 10026
ATOM_APP_SIZE 10027
ATOM_CATEGORY_SIZE 10028
ATOM_PROC_STATS 10029
ATOM_BATTERY_VOLTAGE 10030
ATOM_NUM_FINGERPRINTS_ENROLLED 10031
ATOM_DISK_IO 10032
ATOM_POWER_PROFILE 10033
ATOM_PROC_STATS_PKG_PROC 10034
ATOM_PROCESS_CPU_TIME 10035
ATOM_CPU_TIME_PER_THREAD_FREQ 10037
ATOM_ON_DEVICE_POWER_MEASUREMENT 10038
ATOM_DEVICE_CALCULATED_POWER_USE 10039
ATOM_PROCESS_MEMORY_HIGH_WATER_MARK 10042
ATOM_BATTERY_LEVEL 10043
ATOM_BUILD_INFORMATION 10044
ATOM_BATTERY_CYCLE_COUNT 10045
ATOM_DEBUG_ELAPSED_CLOCK 10046
ATOM_DEBUG_FAILING_ELAPSED_CLOCK 10047
ATOM_NUM_FACES_ENROLLED 10048
ATOM_ROLE_HOLDER 10049
ATOM_DANGEROUS_PERMISSION_STATE 10050
ATOM_TRAIN_INFO 10051
ATOM_TIME_ZONE_DATA_INFO 10052
ATOM_EXTERNAL_STORAGE_INFO 10053
ATOM_GPU_STATS_GLOBAL_INFO 10054
ATOM_GPU_STATS_APP_INFO 10055
ATOM_SYSTEM_ION_HEAP_SIZE 10056
ATOM_APPS_ON_EXTERNAL_STORAGE_INFO 10057
ATOM_FACE_SETTINGS 10058
ATOM_COOLING_DEVICE 10059
ATOM_APP_OPS 10060
ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE 10061
ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO 10062
ATOM_SURFACEFLINGER_STATS_LAYER_INFO 10063
ATOM_PROCESS_MEMORY_SNAPSHOT 10064
ATOM_VMS_CLIENT_STATS 10065
ATOM_NOTIFICATION_REMOTE_VIEWS 10066
ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED 10067
ATOM_GRAPHICS_STATS 10068
ATOM_RUNTIME_APP_OP_ACCESS 10069
ATOM_ION_HEAP_SIZE 10070
ATOM_PACKAGE_NOTIFICATION_PREFERENCES 10071
ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES 10072
ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES 10073
ATOM_GNSS_STATS 10074
ATOM_ATTRIBUTED_APP_OPS 10075
ATOM_VOICE_CALL_SESSION 10076
ATOM_VOICE_CALL_RAT_USAGE 10077
ATOM_SIM_SLOT_STATE 10078
ATOM_SUPPORTED_RADIO_ACCESS_FAMILY 10079
ATOM_SETTING_SNAPSHOT 10080
ATOM_BLOB_INFO 10081
ATOM_DATA_USAGE_BYTES_TRANSFER 10082
ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED 10083
ATOM_DND_MODE_RULE 10084
ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS 10085
ATOM_INCOMING_SMS 10086
ATOM_OUTGOING_SMS 10087
ATOM_CARRIER_ID_TABLE_VERSION 10088
ATOM_DATA_CALL_SESSION 10089
ATOM_CELLULAR_SERVICE_STATE 10090
ATOM_CELLULAR_DATA_SERVICE_SWITCH 10091
ATOM_SYSTEM_MEMORY 10092
ATOM_IMS_REGISTRATION_TERMINATION 10093
ATOM_IMS_REGISTRATION_STATS 10094
ATOM_CPU_TIME_PER_CLUSTER_FREQ 10095
ATOM_CPU_CYCLES_PER_UID_CLUSTER 10096
ATOM_DEVICE_ROTATED_DATA 10097
ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER 10098
ATOM_MEDIA_DRM_ACTIVITY_INFO 10099
ATOM_OEM_MANAGED_BYTES_TRANSFER 10100
ATOM_GNSS_POWER_STATS 10101
ATOM_TIME_ZONE_DETECTOR_STATE 10102
ATOM_KEYSTORE2_STORAGE_STATS 10103
ATOM_RKP_POOL_STATS 10104
ATOM_PROCESS_DMABUF_MEMORY 10105
ATOM_PENDING_ALARM_INFO 10106
ATOM_USER_LEVEL_HIBERNATED_APPS 10107
ATOM_LAUNCHER_LAYOUT_SNAPSHOT 10108
ATOM_GLOBAL_HIBERNATED_APPS 10109
ATOM_INPUT_EVENT_LATENCY_SKETCH 10110
ATOM_BATTERY_USAGE_STATS_BEFORE_RESET 10111
ATOM_BATTERY_USAGE_STATS_SINCE_RESET 10112
ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL 10113
ATOM_INSTALLED_INCREMENTAL_PACKAGE 10114
ATOM_TELEPHONY_NETWORK_REQUESTS 10115
ATOM_APP_SEARCH_STORAGE_INFO 10116
ATOM_VMSTAT 10117
ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO 10118
ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO 10119
ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO 10120
ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW 10121
ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO 10122
ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO 10123
ATOM_RKP_ERROR_STATS 10124
ATOM_KEYSTORE2_CRASH_STATS 10125
ATOM_VENDOR_APEX_INFO 10126
ATOM_ACCESSIBILITY_SHORTCUT_STATS 10127
ATOM_ACCESSIBILITY_FLOATING_MENU_STATS 10128
ATOM_DATA_USAGE_BYTES_TRANSFER_V2 10129
ATOM_MEDIA_CAPABILITIES 10130
ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY 10131
ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY 10132
ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS 10133
ATOM_RCS_CLIENT_PROVISIONING_STATS 10134
ATOM_RCS_ACS_PROVISIONING_STATS 10135
ATOM_SIP_DELEGATE_STATS 10136
ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS 10137
ATOM_SIP_MESSAGE_RESPONSE 10138
ATOM_SIP_TRANSPORT_SESSION 10139
ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT 10140
ATOM_IMS_DEDICATED_BEARER_EVENT 10141
ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS 10142
ATOM_UCE_EVENT_STATS 10143
ATOM_PRESENCE_NOTIFY_EVENT 10144
ATOM_GBA_EVENT 10145
ATOM_PER_SIM_STATUS 10146
ATOM_GPU_WORK_PER_UID 10147
ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE 10148
ATOM_SIGNED_PARTITION_INFO 10149
ATOM_PINNED_FILE_SIZES_PER_PACKAGE 10150
ATOM_PENDING_INTENTS_PER_PACKAGE 10151
ATOM_USER_INFO 10152
ATOM_TELEPHONY_NETWORK_REQUESTS_V2 10153
ATOM_DEVICE_TELEPHONY_PROPERTIES 10154
ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS 10155
ATOM_SAFETY_STATE 10156
ATOM_INCOMING_MMS 10157
ATOM_OUTGOING_MMS 10158
ATOM_MULTI_USER_INFO 10160
ATOM_NETWORK_BPF_MAP_INFO 10161
ATOM_OUTGOING_SHORT_CODE_SMS 10162
ATOM_CONNECTIVITY_STATE_SAMPLE 10163
ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO 10164
ATOM_GAME_MODE_INFO 10165
ATOM_GAME_MODE_CONFIGURATION 10166
ATOM_GAME_MODE_LISTENER 10167
ATOM_NETWORK_SLICE_REQUEST_COUNT 10168
ATOM_WS_TILE_SNAPSHOT 10169
ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT 10170
ATOM_PROCESS_STATE 10171
ATOM_PROCESS_ASSOCIATION 10172
ATOM_ADPF_SYSTEM_COMPONENT_INFO 10173
ATOM_NOTIFICATION_MEMORY_USE 10174
ATOM_HDR_CAPABILITIES 10175
ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT 10176
ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED 820
ATOM_THERMAL_STATUS_CALLED 772
ATOM_THERMAL_HEADROOM_CALLED 773
ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED 774
ATOM_ADPF_HINT_SESSION_TID_CLEANUP 839
ATOM_THERMAL_HEADROOM_THRESHOLDS 10201
ATOM_ADPF_SESSION_SNAPSHOT 10218
ATOM_JSSCRIPTENGINE_LATENCY_REPORTED 483
ATOM_AD_SERVICES_API_CALLED 435
ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED 436
ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED 490
ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED 502
ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED 493
ATOM_BACKGROUND_FETCH_PROCESS_REPORTED 496
ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED 497
ATOM_RUN_AD_BIDDING_PROCESS_REPORTED 498
ATOM_RUN_AD_SCORING_PROCESS_REPORTED 499
ATOM_RUN_AD_SELECTION_PROCESS_REPORTED 500
ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED 501
ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED 503
ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS 512
ATOM_AD_SERVICES_GET_TOPICS_REPORTED 535
ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED 536
ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED 537
ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED 598
ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED 599
ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS 640
ATOM_AD_SERVICES_ERROR_REPORTED 662
ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED 663
ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION 673
ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION 674
ATOM_AD_SERVICES_MEASUREMENT_JOBS 675
ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT 676
ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS 695
ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED 697
ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED 698
ATOM_AD_SERVICES_ENROLLMENT_MATCHED 699
ATOM_AD_SERVICES_CONSENT_MIGRATED 702
ATOM_AD_SERVICES_ENROLLMENT_FAILED 714
ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION 756
ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED 765
ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED 766
ATOM_DESTINATION_REGISTERED_BEACONS 767
ATOM_REPORT_INTERACTION_API_CALLED 768
ATOM_INTERACTION_REPORTING_TABLE_CLEARED 769
ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED 788
ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED 793
ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED 794
ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED 795
ATOM_SIGNATURE_VERIFICATION 807
ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED 808
ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED 809
ATOM_K_ANON_INITIALIZE_STATUS_REPORTED 810
ATOM_K_ANON_SIGN_STATUS_REPORTED 811
ATOM_K_ANON_JOIN_STATUS_REPORTED 812
ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED 813
ATOM_GET_AD_SELECTION_DATA_API_CALLED 814
ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED 815
ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED 834
ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED 840
ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED 841
ATOM_ADSERVICES_SHELL_COMMAND_CALLED 842
ATOM_UPDATE_SIGNALS_API_CALLED 843
ATOM_ENCODING_JOB_RUN 844
ATOM_ENCODING_JS_FETCH 845
ATOM_ENCODING_JS_EXECUTION 846
ATOM_PERSIST_AD_SELECTION_RESULT_CALLED 847
ATOM_SERVER_AUCTION_KEY_FETCH_CALLED 848
ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED 849
ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION 864
ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP 865
ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED 876
ATOM_REPORT_IMPRESSION_API_CALLED 877
ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS 885
ATOM_AI_WALLPAPERS_BUTTON_PRESSED 706
ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED 707
ATOM_AI_WALLPAPERS_TERM_SELECTED 708
ATOM_AI_WALLPAPERS_WALLPAPER_SET 709
ATOM_AI_WALLPAPERS_SESSION_SUMMARY 710
ATOM_APEX_INSTALLATION_REQUESTED 732
ATOM_APEX_INSTALLATION_STAGED 733
ATOM_APEX_INSTALLATION_ENDED 734
ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED 385
ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED 579
ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED 825
ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED 826
ATOM_ART_DATUM_REPORTED 332
ATOM_ART_DEVICE_DATUM_REPORTED 550
ATOM_ART_DATUM_DELTA_REPORTED 565
ATOM_ART_DEX2OAT_REPORTED 929
ATOM_ART_DEVICE_STATUS 10205
ATOM_BACKGROUND_DEXOPT_JOB_ENDED 467
ATOM_PREREBOOT_DEXOPT_JOB_ENDED 883
ATOM_ODREFRESH_REPORTED 366
ATOM_ODSIGN_REPORTED 548
ATOM_AUTOFILL_UI_EVENT_REPORTED 603
ATOM_AUTOFILL_FILL_REQUEST_REPORTED 604
ATOM_AUTOFILL_FILL_RESPONSE_REPORTED 605
ATOM_AUTOFILL_SAVE_EVENT_REPORTED 606
ATOM_AUTOFILL_SESSION_COMMITTED 607
ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED 659
ATOM_CAR_RECENTS_EVENT_REPORTED 770
ATOM_CAR_CALM_MODE_EVENT_REPORTED 797
ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED 852
ATOM_PLUGIN_INITIALIZED 655
ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED 613
ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION 614
ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION 615
ATOM_BLUETOOTH_LE_SESSION_CONNECTED 656
ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED 666
ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED 696
ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED 781
ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED 782
ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID 862
ATOM_LE_APP_SCAN_STATE_CHANGED 870
ATOM_LE_RADIO_SCAN_STOPPED 871
ATOM_LE_SCAN_RESULT_RECEIVED 872
ATOM_LE_SCAN_ABUSED 873
ATOM_LE_ADV_STATE_CHANGED 874
ATOM_LE_ADV_ERROR_REPORTED 875
ATOM_A2DP_SESSION_REPORTED 904
ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED 916
ATOM_BROADCAST_AUDIO_SESSION_REPORTED 927
ATOM_BROADCAST_AUDIO_SYNC_REPORTED 928
ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE 982
ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT 900
ATOM_DAILY_KEEPALIVE_INFO_REPORTED 650
ATOM_NETWORK_REQUEST_STATE_CHANGED 779
ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED 925
ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED 783
ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED 979
ATOM_APF_SESSION_INFO_REPORTED 777
ATOM_IP_CLIENT_RA_INFO_REPORTED 778
ATOM_VPN_CONNECTION_STATE_CHANGED 850
ATOM_VPN_CONNECTION_REPORTED 851
ATOM_CPU_POLICY 10199
ATOM_CREDENTIAL_MANAGER_API_CALLED 585
ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED 651
ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED 652
ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED 653
ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED 667
ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED 668
ATOM_CREDENTIAL_MANAGER_GET_REPORTED 669
ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED 670
ATOM_CREDENTIAL_MANAGER_APIV2_CALLED 671
ATOM_CRONET_ENGINE_CREATED 703
ATOM_CRONET_TRAFFIC_REPORTED 704
ATOM_CRONET_ENGINE_BUILDER_INITIALIZED 762
ATOM_CRONET_HTTP_FLAGS_INITIALIZED 763
ATOM_CRONET_INITIALIZED 764
ATOM_DESKTOP_MODE_UI_CHANGED 818
ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE 819
ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED 726
ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED 727
ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED 728
ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED 789
ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED 790
ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED 791
ATOM_DEVICE_POLICY_MANAGEMENT_MODE 10216
ATOM_DEVICE_POLICY_STATE 10217
ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED 792
ATOM_EXTERNAL_DISPLAY_STATE_CHANGED 806
ATOM_DND_STATE_CHANGED 657
ATOM_DREAM_SETTING_CHANGED 705
ATOM_DREAM_SETTING_SNAPSHOT 10192
ATOM_EXPRESS_EVENT_REPORTED 528
ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED 593
ATOM_EXPRESS_UID_EVENT_REPORTED 644
ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED 658
ATOM_FEDERATED_COMPUTE_API_CALLED 712
ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED 771
ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED 838
ATOM_FULL_SCREEN_INTENT_LAUNCHED 631
ATOM_BAL_ALLOWED 632
ATOM_IN_TASK_ACTIVITY_STARTED 685
ATOM_CACHED_APPS_HIGH_WATERMARK 10189
ATOM_STYLUS_PREDICTION_METRICS_REPORTED 718
ATOM_USER_RISK_EVENT_REPORTED 725
ATOM_MEDIA_PROJECTION_STATE_CHANGED 729
ATOM_MEDIA_PROJECTION_TARGET_CHANGED 730
ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED 853
ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG 10200
ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE 10204
ATOM_BIOMETRIC_FRR_NOTIFICATION 817
ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION 830
ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION 831
ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED 832
ATOM_SENSITIVE_NOTIFICATION_REDACTION 833
ATOM_SENSITIVE_CONTENT_APP_PROTECTION 835
ATOM_APP_RESTRICTION_STATE_CHANGED 866
ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED 584
ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED 816
ATOM_HDMI_EARC_STATUS_REPORTED 701
ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED 724
ATOM_HEALTH_CONNECT_API_CALLED 616
ATOM_HEALTH_CONNECT_USAGE_STATS 617
ATOM_HEALTH_CONNECT_STORAGE_STATS 618
ATOM_HEALTH_CONNECT_API_INVOKED 643
ATOM_EXERCISE_ROUTE_API_CALLED 654
ATOM_HEALTH_CONNECT_UI_IMPRESSION 623
ATOM_HEALTH_CONNECT_UI_INTERACTION 624
ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED 625
ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED 761
ATOM_IKE_SESSION_TERMINATED 678
ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED 760
ATOM_NEGOTIATED_SECURITY_ASSOCIATION 821
ATOM_KEYBOARD_CONFIGURED 682
ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED 683
ATOM_INPUTDEVICE_USAGE_REPORTED 686
ATOM_TOUCHPAD_USAGE 10191
ATOM_KERNEL_OOM_KILL_OCCURRED 754
ATOM_EMERGENCY_STATE_CHANGED 633
ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED 868
ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED 600
ATOM_MEDIA_CODEC_STARTED 641
ATOM_MEDIA_CODEC_STOPPED 642
ATOM_MEDIA_CODEC_RENDERED 684
ATOM_MEDIA_EDITING_ENDED_REPORTED 798
ATOM_MTE_STATE 10181
ATOM_NFC_OBSERVE_MODE_STATE_CHANGED 855
ATOM_NFC_FIELD_CHANGED 856
ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED 857
ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED 858
ATOM_ONDEVICEPERSONALIZATION_API_CALLED 711
ATOM_COMPONENT_STATE_CHANGED_REPORTED 863
ATOM_PDF_LOAD_REPORTED 859
ATOM_PDF_API_USAGE_REPORTED 860
ATOM_PDF_SEARCH_REPORTED 861
ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED 645
ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED 646
ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION 647
ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED 648
ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED 649
ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED 827
ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED 828
ATOM_PHOTOPICKER_SESSION_INFO_REPORTED 886
ATOM_PHOTOPICKER_API_INFO_REPORTED 887
ATOM_PHOTOPICKER_UI_EVENT_LOGGED 888
ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED 889
ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED 890
ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED 891
ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED 892
ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED 893
ATOM_PHOTOPICKER_PAGE_INFO_LOGGED 894
ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED 895
ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED 896
ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED 897
ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED 898
ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED 899
ATOM_ATOM_9999 9999
ATOM_ATOM_99999 99999
ATOM_SCREEN_OFF_REPORTED 776
ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED 836
ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED 837
ATOM_SCREEN_DIM_REPORTED 867
ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED 784
ATOM_BACKUP_SETUP_STATUS_REPORTED 785
ATOM_RKPD_POOL_STATS 664
ATOM_RKPD_CLIENT_OPERATION 665
ATOM_SANDBOX_API_CALLED 488
ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED 735
ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION 796
ATOM_SANDBOX_SDK_STORAGE 10159
ATOM_SELINUX_AUDIT_LOG 799
ATOM_SETTINGS_SPA_REPORTED 622
ATOM_TEST_EXTENSION_ATOM_REPORTED 660
ATOM_TEST_RESTRICTED_ATOM_REPORTED 672
ATOM_STATS_SOCKET_LOSS_REPORTED 752
ATOM_LOCKSCREEN_SHORTCUT_SELECTED 611
ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED 612
ATOM_LAUNCHER_IMPRESSION_EVENT_V2 716
ATOM_DISPLAY_SWITCH_LATENCY_TRACKED 753
ATOM_NOTIFICATION_LISTENER_SERVICE 829
ATOM_NAV_HANDLE_TOUCH_POINTS 869
ATOM_EMERGENCY_NUMBER_DIALED 637
ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED 713
ATOM_EMERGENCY_NUMBERS_INFO 10180
ATOM_DATA_NETWORK_VALIDATION 10207
ATOM_DATA_RAT_STATE_CHANGED 854
ATOM_CONNECTED_CHANNEL_CHANGED 882
ATOM_QUALIFIED_RAT_LIST_CHANGED 634
ATOM_QNS_IMS_CALL_DROP_STATS 635
ATOM_QNS_FALLBACK_RESTRICTION_CHANGED 636
ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO 10177
ATOM_QNS_HANDOVER_TIME_MILLIS 10178
ATOM_QNS_HANDOVER_PINGPONG 10179
ATOM_SATELLITE_CONTROLLER 10182
ATOM_SATELLITE_SESSION 10183
ATOM_SATELLITE_INCOMING_DATAGRAM 10184
ATOM_SATELLITE_OUTGOING_DATAGRAM 10185
ATOM_SATELLITE_PROVISION 10186
ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER 10187
ATOM_CARRIER_ROAMING_SATELLITE_SESSION 10211
ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS 10212
ATOM_CONTROLLER_STATS_PER_PACKAGE 10213
ATOM_SATELLITE_ENTITLEMENT 10214
ATOM_SATELLITE_CONFIG_UPDATER 10215
ATOM_SATELLITE_ACCESS_CONTROLLER 10219
ATOM_CELLULAR_IDENTIFIER_DISCLOSED 800
ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED 738
ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED 739
ATOM_THREADNETWORK_DEVICE_INFO_REPORTED 740
ATOM_BOOT_INTEGRITY_INFO_REPORTED 775
ATOM_TV_LOW_POWER_STANDBY_POLICY 679
ATOM_EXTERNAL_TV_INPUT_EVENT 717
ATOM_UWB_ACTIVITY_INFO 10188
ATOM_MEDIATOR_UPDATED 721
ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER 10196
ATOM_SYSPROXY_CONNECTION_UPDATED 786
ATOM_MEDIA_ACTION_REPORTED 608
ATOM_MEDIA_CONTROLS_LAUNCHED 609
ATOM_MEDIA_SESSION_STATE_CHANGED 677
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY 757
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE 758
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT 759
ATOM_WEAR_MODE_STATE_CHANGED 715
ATOM_RENDERER_INITIALIZED 736
ATOM_SCHEMA_VERSION_RECEIVED 737
ATOM_LAYOUT_INSPECTED 741
ATOM_LAYOUT_EXPRESSION_INSPECTED 742
ATOM_LAYOUT_ANIMATIONS_INSPECTED 743
ATOM_MATERIAL_COMPONENTS_INSPECTED 744
ATOM_TILE_REQUESTED 745
ATOM_STATE_RESPONSE_RECEIVED 746
ATOM_TILE_RESPONSE_RECEIVED 747
ATOM_INFLATION_FINISHED 748
ATOM_INFLATION_FAILED 749
ATOM_IGNORED_INFLATION_FAILURES_REPORTED 750
ATOM_DRAWABLE_RENDERED 751
ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED 619
ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED 620
ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED 621
ATOM_WS_WEAR_TIME_SESSION 610
ATOM_WS_INCOMING_CALL_ACTION_REPORTED 626
ATOM_WS_CALL_DISCONNECTION_REPORTED 627
ATOM_WS_CALL_DURATION_REPORTED 628
ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED 629
ATOM_WS_CALL_INTERACTION_REPORTED 630
ATOM_WS_ON_BODY_STATE_CHANGED 787
ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED 802
ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED 803
ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED 804
ATOM_WS_STANDALONE_MODE_SNAPSHOT 10197
ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT 10206
ATOM_WEAR_POWER_MENU_OPENED 731
ATOM_WEAR_ASSISTANT_OPENED 755
ATOM_WIFI_AWARE_NDP_REPORTED 638
ATOM_WIFI_AWARE_ATTACH_REPORTED 639
ATOM_WIFI_SELF_RECOVERY_TRIGGERED 661
ATOM_SOFT_AP_STARTED 680
ATOM_SOFT_AP_STOPPED 681
ATOM_WIFI_LOCK_RELEASED 687
ATOM_WIFI_LOCK_DEACTIVATED 688
ATOM_WIFI_CONFIG_SAVED 689
ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED 690
ATOM_WIFI_AWARE_HAL_API_CALLED 691
ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED 692
ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED 693
ATOM_WIFI_THREAD_TASK_EXECUTED 694
ATOM_WIFI_STATE_CHANGED 700
ATOM_PNO_SCAN_STARTED 719
ATOM_PNO_SCAN_STOPPED 720
ATOM_WIFI_IS_UNUSABLE_REPORTED 722
ATOM_WIFI_AP_CAPABILITIES_REPORTED 723
ATOM_SOFT_AP_STATE_CHANGED 805
ATOM_SCORER_PREDICTION_RESULT_REPORTED 884
ATOM_WIFI_AWARE_CAPABILITIES 10190
ATOM_WIFI_MODULE_INFO 10193
ATOM_WIFI_SETTING_INFO 10194
ATOM_WIFI_COMPLEX_SETTING_INFO 10195
ATOM_WIFI_CONFIGURED_NETWORK_INFO 10198

StatsdPullAtomConfig

Defined in statsd_tracing_config.proto

Fields:

Field Type Description
pull_atom_id AtomId[]
raw_pull_atom_id int32[]
pull_frequency_ms int32
packages string[]

SystemInfoConfig

This data-source does a one-off recording of system information when the trace starts. Currently this includes:

Defined in system_info.proto

Fields:

Field Type Description

ChromeConfig

Defined in chrome_config.proto

Fields:

Field Type Description
trace_config string
privacy_filtering_enabled bool When enabled, the data source should only fill in fields in the output that are not potentially privacy sensitive.
convert_to_legacy_json bool Instead of emitting binary protobuf, convert the trace data to the legacy JSON format. Note that the trace data will still be returned as a series of TracePackets, but the embedded data will be JSON instead of serialized protobuf.
client_priority ClientPriority
json_agent_label_filter string Applicable only when using legacy JSON format.
If json_agent_label_filter is not empty, only data pertaining to the specified tracing agent label (e.g. "traceEvents") will be returned.

ChromeConfig.ClientPriority

Priority of the tracing session client. A higher priority session may preempt a lower priority one in configurations where concurrent sessions aren't supported.

Defined in chrome_config.proto

Enum values:

Name Value Description
UNKNOWN 0
BACKGROUND 1
USER_INITIATED 2

V8Config

Defined in v8_config.proto

Fields:

Field Type Description
log_script_sources bool Whether to log the actual content of scripts (e.g. content of the JS file that was compiled to generate code).
ATTENTION: This could considerably increase the size of the resuling trace file.
log_instructions bool Whether to log the generated code for jitted functions (machine code or bytecode).
ATTENTION: This could considerably increase the size of the resuling trace file.

InterceptorConfig

Configuration for trace packet interception. Used for diverting trace data to non-Perfetto sources (e.g., logging to the console, ETW) when using the Perfetto SDK.

Defined in interceptor_config.proto

Fields:

Field Type Description
name string Matches the name given to RegisterInterceptor().
console_config ConsoleConfig

ConsoleConfig

Defined in console_config.proto

Fields:

Field Type Description
output Output
enable_colors bool

ConsoleConfig.Output

Defined in console_config.proto

Enum values:

Name Value Description
OUTPUT_UNSPECIFIED 0
OUTPUT_STDOUT 1
OUTPUT_STDERR 2

NetworkPacketTraceConfig

Network tracing data source that records details on all packets sent or received by the network.

Defined in network_trace_config.proto

Fields:

Field Type Description
poll_ms uint32 Polling frequency in milliseconds. Network tracing writes to a fixed size ring buffer. The polling interval should be such that the ring buffer is unlikely to fill in that interval (or that filling is an acceptable risk).
The minimum polling rate is 100ms (values below this are ignored).
Introduced in Android 14 (U).
aggregation_threshold uint32 The aggregation_threshold is the number of packets at which an event will switch from per-packet details to aggregate details. For example, a value of 50 means that if a particular event (grouped by the unique combinations of metadata fields: {interface, direction, uid, etc}) has fewer than 50 packets, the exact timestamp and length are recorded for each packet. If there were 50 or more packets in an event, it would only record the total duration, packets, and length. A value of zero or unspecified will always record per-packet details. A value of 1 always records aggregate details.
intern_limit uint32 Specifies the maximum number of packet contexts to intern at a time. This prevents the interning table from growing too large and controls whether interning is enabled or disabled (a value of zero disables interning and is the default). When a data sources interning table reaches this amount, packet contexts will be inlined into NetworkPacketEvents.
drop_local_port bool The following fields specify whether certain fields should be dropped from the output. Dropping fields improves normalization results, reduces the size of the interning table, and slightly reduces event size.
drop_remote_port bool
drop_tcp_flags bool

SurfaceFlingerLayersConfig

Custom configuration for the "android.surfaceflinger.layers" data source.

Defined in surfaceflinger_layers_config.proto

Fields:

Field Type Description
mode Mode
trace_flags TraceFlag[]

SurfaceFlingerLayersConfig.Mode

Defined in surfaceflinger_layers_config.proto

Enum values:

Name Value Description
MODE_UNSPECIFIED 0
MODE_ACTIVE 1 Trace layers snapshots. A snapshot is taken every time a layers change occurs.
MODE_GENERATED 2 Generate layers snapshots from the transactions kept in the SurfaceFlinger's internal ring buffer.
The layers snapshots generation occurs when this data source is flushed.
MODE_DUMP 3 Trace a single layers snapshot.
MODE_GENERATED_BUGREPORT_ONLY 4 Default mode (applied by SurfaceFlinger if no mode is specified).
Same as MODE_GENERATED, but triggers the layers snapshots generation only when a bugreport is taken.

SurfaceFlingerLayersConfig.TraceFlag

Defined in surfaceflinger_layers_config.proto

Enum values:

Name Value Description
TRACE_FLAG_UNSPECIFIED 0
TRACE_FLAG_INPUT 2
TRACE_FLAG_COMPOSITION 4
TRACE_FLAG_EXTRA 8
TRACE_FLAG_HWC 16
TRACE_FLAG_BUFFERS 32
TRACE_FLAG_VIRTUAL_DISPLAYS 64
TRACE_FLAG_ALL 14 INPUT

SurfaceFlingerTransactionsConfig

Custom configuration for the "android.surfaceflinger.transactions" data source.

Defined in surfaceflinger_transactions_config.proto

Fields:

Field Type Description
mode Mode

SurfaceFlingerTransactionsConfig.Mode

Defined in surfaceflinger_transactions_config.proto

Enum values:

Name Value Description
MODE_UNSPECIFIED 0
MODE_CONTINUOUS 1 Default mode (applied by SurfaceFlinger if no mode is specified).
SurfaceFlinger writes its internal ring buffer of transactions every time the data source is flushed. The ring buffer contains the SurfaceFlinger's initial state and the latest transactions.
MODE_ACTIVE 2 SurfaceFlinger writes the initial state and then each incoming transaction until the data source is stopped.

AndroidSdkSyspropGuardConfig

Data source that controls the system properties used to guard initialization of track_event producers (i.e. Skia) in apps using HWUI, and certain processes like SurfaceFlinger.

This data source only tells Skia to initialized the Perfetto SDK and start routing data to the Track Event system instead of ATrace. For those events to actually show up in a trace, the track_event data source must be used as well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and processes may need to be restarted for Skia to revert to using ATrace if Track Events are no longer desired.

In addition to switching Skia to use Perfetto's track_event data source, this "guard" also controls Skia's "broad tracing", which removes Skia's internal tracing constraints and allows the track_event config to specify which categories should be traced. Filtering to the "skia.always" category tag in a track_event config can be used to re-enable the standard constraints typically used with ATrace.

Data source name: android.sdk_sysprop_guard Introduced in Android 14 (U) QPR1.

Defined in android_sdk_sysprop_guard_config.proto

Fields:

Field Type Description
surfaceflinger_skia_track_events bool If true, configures SurfaceFlinger to initialize Skia's Perfetto integration with the track_event data source in RenderEngine.
If false or omitted, the simpler ATrace fallback is used.
NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is restarted.
Specifically this sets the following system properties:
- debug.tracing.ctl.renderengine.skia_tracing_enabled - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events Does not affect actual track_event data collection, which must be configured separately.
hwui_skia_track_events bool If true, configures HWUI apps to initialize Skia's Perfetto integration with the track_event data source. hwui_package_name_filter can be used to control which apps are affected.
If false or omitted, the simpler ATrace fallback is used.
NOTE: once enabled, Skia will only revert to ATrace if the app is restarted.
ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
If filtering is NOT set, this controls these GLOBAL system properties:
- debug.tracing.ctl.hwui.skia_tracing_enabled - debug.tracing.ctl.hwui.skia_use_perfetto_track_events If filtering IS set, this controls these APP-SPECIFIC system properties, for each package listed in the filter:
- debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name> - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name> Does not affect actual track_event data collection, which must be configured separately.
hwui_package_name_filter string[] If non-empty, hwui_skia_track_events applies to only the packages listed.
Otherwise, hwui_skia_track_events applies globally to all HWUI apps.

EtwConfig

Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition See: https://learn.microsoft.com/en-us/windows/win32/api/evntrace/ ns-evntrace-event_trace_properties

Defined in etw_config.proto

Fields:

Field Type Description
kernel_flags KernelFlag[] The kernel_flags determines the flags that will be used by the etw tracing session. These kernel flags have been built to expose the useful events captured from the kernel mode only.

EtwConfig.KernelFlag

The KernelFlag represent list of kernel flags that we are intrested in. To get a more extensive list run 'xperf -providers k'.

Defined in etw_config.proto

Enum values:

Name Value Description
CSWITCH 0
DISPATCHER 1

ProtoLogConfig

Custom configuration for the "android.protolog" data source. ProtoLog is a logging mechanism that is intented to be more efficient than logcat. This configures what logs to capture in the tracing instance.

Defined in protolog_config.proto

Fields:

Field Type Description
group_overrides ProtoLogGroup[] Specified the configurations for each of the logging groups. If none is specified for a group the defaults will be used.
tracing_mode TracingMode Specified what tracing mode to use for the tracing instance.
default_log_from_level ProtoLogLevel If set, any message with log level higher than this level (inclusive) will be traced. Group overrides take precedence over this value.

ProtoLogGroup

Defined in protolog_config.proto

Fields:

Field Type Description
group_name string The ProtoLog group name this configuration entry applies to.
log_from ProtoLogLevel Specify the level from which to start capturing protologs.
e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log message will be traced.
collect_stacktrace bool When set to true we will collect the stacktrace for each protolog message in this group that we are tracing.

ProtoLogLevel

Defined in protolog_common.proto

Enum values:

Name Value Description
PROTOLOG_LEVEL_UNDEFINED 0
PROTOLOG_LEVEL_DEBUG 1
PROTOLOG_LEVEL_VERBOSE 2
PROTOLOG_LEVEL_INFO 3
PROTOLOG_LEVEL_WARN 4
PROTOLOG_LEVEL_ERROR 5
PROTOLOG_LEVEL_WTF 6

ProtoLogConfig.TracingMode

Defined in protolog_config.proto

Enum values:

Name Value Description
DEFAULT 0 When using the DEFAULT tracing mode, only log groups and levels specified in the group_overrides are traced.
ENABLE_ALL 1 When using the ENABLE_ALL tracing mode, all log groups and levels are traced, unless specified in the group_overrides.

AndroidInputEventConfig

Custom configuration for the "android.input.inputevent" data source.

NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!

Defined in android_input_event_config.proto

Fields:

Field Type Description
mode TraceMode The tracing mode to use. If unspecified, it will default to TRACE_MODE_USE_RULES.
rules TraceRule[] The list of rules to use to determine the trace level of events.
Each event will be traced using the TraceLevel of the first rule that it triggers from this list. The rules are evaluated in the order in which they are specified. If an event does not match any of the rules, TRACE_LEVEL_NONE will be used by default.
trace_dispatcher_input_events bool Trace input events processed by the system as they are being dispatched to application windows. All trace rules will apply.
- If this flag is used without enabling trace_dispatcher_window_dispatch, it will trace InputDispatcher's inbound events (which does not include events synthesized within InputDispatcher) that match the rules.
- If used with trace_dispatcher_window_dispatch, all inbound and outbound events matching the rules, including all events synthesized within InputDispatcher, will be traced.
trace_dispatcher_window_dispatch bool Trace details about which windows the system is sending each input event to. All trace rules will apply.

AndroidInputEventConfig.TraceMode

Trace modes are tracing presets that are included in the system.

Defined in android_input_event_config.proto

Enum values:

Name Value Description
TRACE_MODE_TRACE_ALL 0 Preset mode for maximal tracing.
WARNING: This will bypass all privacy measures on debuggable builds, and will record all input events processed by the system, regardless of the context in which they were processed. It should only be used for tracing on a local device or for tests. It should NEVER be used for field tracing.
TRACE_MODE_USE_RULES 1 Use the tracing rules defined in this config to specify what events to trace.

AndroidInputEventConfig.TraceRule

A rule that specifies the TraceLevel for an event based on matching conditions. All matchers in the rule are optional. To trigger this rule, an event must match all of its specified matchers (i.e. the matchers function like a series of conditions connected by a logical 'AND' operator). A rule with no specified matchers will match all events. Next ID: 6

Defined in android_input_event_config.proto

Fields:

Field Type Description
trace_level TraceLevel The trace level to be used for events that trigger this rule.
If unspecified, TRACE_LEVEL_NONE will be used by default.
match_all_packages string[] Package matchers Respectively matches if all or any of the target apps for this event are contained in the specified list of package names.
Intended usage:
- Use match_all_packages to selectively allow tracing for the listed packages.
- Use match_any_packages to selectively deny tracing for certain packages.
WARNING: Great care must be taken when designing rules for field tracing!
This is because each event is almost always sent to more than one app.
For example, when allowing tracing for a package that has a spy window over the display (e.g. SystemUI) using match_any_packages, essentially all input will be recorded on that display. This is because the events will be sent to the spy as well as the foreground app, and regardless of what the foreground app is, the event will end up being traced.
Alternatively, when attempting to block tracing for specific packages using match_all_packages, no events will likely be blocked. This is because the event will also be sent to other apps (such as, but not limited to, ones with spy windows), so the matcher will not match unless all other targets are also listed under the match_all_packages list.
match_any_packages string[]
match_secure bool Matches if the event is secure, which means that at least one of the targets of this event is using the window flag FLAG_SECURE.
match_ime_connection_active bool Matches if there was an active IME connection while this event was being processed.

AndroidInputEventConfig.TraceLevel

The level of tracing that should be applied to an event.

Defined in android_input_event_config.proto

Enum values:

Name Value Description
TRACE_LEVEL_NONE 0 Do not trace the input event.
TRACE_LEVEL_REDACTED 1 Trace the event as a redacted event, where certain sensitive fields are omitted from the trace, including the coordinates of pointer events and the key/scan codes of key events.
TRACE_LEVEL_COMPLETE 2 Trace the complete event.

PixelModemConfig

Data source that records events from the modem.

Defined in pixel_modem_config.proto

Fields:

Field Type Description
event_group EventGroup
pigweed_hash_allow_list int64[] If set, record only events with these hashes.
pigweed_hash_deny_list int64[] If set and allow_list is not set, deny events with these hashes.

PixelModemConfig.EventGroup

Event group to record, as defined by the modem.

Defined in pixel_modem_config.proto

Enum values:

Name Value Description
EVENT_GROUP_UNKNOWN 0
EVENT_GROUP_LOW_BANDWIDTH 1 Events suitable for low bandwidth tracing only.
EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH 2 Events suitable for high and low bandwidth tracing.

WindowManagerConfig

Custom configuration for the "android.windowmanager" data source.

Defined in windowmanager_config.proto

Fields:

Field Type Description
log_frequency LogFrequency
log_level LogLevel

WindowManagerConfig.LogFrequency

Defined in windowmanager_config.proto

Enum values:

Name Value Description
LOG_FREQUENCY_UNSPECIFIED 0
LOG_FREQUENCY_FRAME 1 Trace state snapshots when a frame is committed.
LOG_FREQUENCY_TRANSACTION 2 Trace state snapshots every time a transaction is committed.
LOG_FREQUENCY_SINGLE_DUMP 3 Trace single state snapshots when the data source is started.

WindowManagerConfig.LogLevel

Defined in windowmanager_config.proto

Enum values:

Name Value Description
LOG_LEVEL_UNSPECIFIED 0
LOG_LEVEL_VERBOSE 1 Logs all elements with maximum amount of information.
LOG_LEVEL_DEBUG 2 Logs all elements but doesn't write all configuration data.
LOG_LEVEL_CRITICAL 3 Logs only visible elements, with the minimum amount of performance overhead

ChromiumSystemMetricsConfig

Defined in system_metrics.proto

Fields:

Field Type Description
sampling_interval_ms uint32 Samples counters every X ms.

TestConfig

The configuration for a fake producer used in tests.

Defined in test_config.proto

Fields:

Field Type Description
message_count uint32 The number of messages the fake producer should send.
max_messages_per_second uint32 The maximum number of messages which should be sent each second.
The actual obserced speed may be lower if the producer is unable to work fast enough.
If this is zero or unset, the producer will send as fast as possible.
seed uint32 The seed value for a simple multiplicative congruential pseudo-random number sequence.
message_size uint32 The size of each message in bytes. Should be greater than or equal 5 to account for the number of bytes needed to encode the random number and a null byte for the string.
send_batch_on_register bool Whether the producer should send a event batch when the data source is is initially registered.
dummy_fields DummyFields

TestConfig.DummyFields

Defined in test_config.proto

Fields:

Field Type Description
field_uint32 uint32
field_int32 int32
field_uint64 uint64
field_int64 int64
field_fixed64 fixed64
field_sfixed64 sfixed64
field_fixed32 fixed32
field_sfixed32 sfixed32
field_double double
field_float float
field_sint64 sint64
field_sint32 sint32
field_string string
field_bytes bytes

TraceConfig.BuiltinDataSource

Config for disabling builtin data sources in the tracing service.

Defined in trace_config.proto

Fields:

Field Type Description
disable_clock_snapshotting bool Disable emitting clock timestamps into the trace.
disable_trace_config bool Disable echoing the original trace config in the trace.
disable_system_info bool Disable emitting system info (build fingerprint, cpuinfo, etc).
disable_service_events bool Disable emitting events for data-source state changes (e.g. the marker for all data sources having ACKed the start of the trace).
primary_trace_clock BuiltinClock The authoritative clock domain for the trace. Defaults to BOOTTIME. See also ClockSnapshot's primary_trace_clock. The configured value is written into the trace as part of the ClockSnapshots emitted by the service.
Trace processor will attempt to translate packet/event timestamps from various data sources (and their chosen clock domains) to this domain during import. Added in Android R.
snapshot_interval_ms uint32 Time interval in between snapshotting of sync markers, clock snapshots, stats, and other periodic service-emitted events. Note that the service only keeps track of the first and the most recent snapshot until ReadBuffers() is called.
prefer_suspend_clock_for_snapshot bool Hints to the service that a suspend-aware (i.e. counting time in suspend) clock should be used for periodic snapshots of service-emitted events.
This means, if a snapshot should have happened during suspend, it will happen immediately after the device resumes.
Choosing a clock like this is done on best-effort basis; not all platforms (e.g. Windows) expose a clock which can be used for periodic tasks counting suspend. If such a clock is not available, the service falls back to the best-available alternative.
Introduced in Android S.
crashes in S.
disable_chunk_usage_histograms bool Disables the reporting of per-trace-writer histograms in TraceStats.

BuiltinClock

Defined in builtin_clock.proto

Enum values:

Name Value Description
BUILTIN_CLOCK_UNKNOWN 0
BUILTIN_CLOCK_REALTIME 1
BUILTIN_CLOCK_REALTIME_COARSE 2
BUILTIN_CLOCK_MONOTONIC 3
BUILTIN_CLOCK_MONOTONIC_COARSE 4
BUILTIN_CLOCK_MONOTONIC_RAW 5
BUILTIN_CLOCK_BOOTTIME 6
BUILTIN_CLOCK_TSC 9
BUILTIN_CLOCK_PERF 10
BUILTIN_CLOCK_MAX_ID 63

TraceConfig.LockdownModeOperation

Defined in trace_config.proto

Enum values:

Name Value Description
LOCKDOWN_UNCHANGED 0
LOCKDOWN_CLEAR 1
LOCKDOWN_SET 2

TraceConfig.ProducerConfig

Defined in trace_config.proto

Fields:

Field Type Description
producer_name string Identifies the producer for which this config is for.
shm_size_kb uint32 Specifies the preferred size of the shared memory buffer. If the size is larger than the max size, the max will be used. If it is smaller than the page size or doesn't fit pages evenly into it, it will fall back to the size specified by the producer or finally the default shared memory size.
page_size_kb uint32 Specifies the preferred size of each page in the shared memory buffer.
Must be an integer multiple of 4K.

TraceConfig.StatsdMetadata

Contains statsd-specific metadata about an alert associated with the trace.

Defined in trace_config.proto

Fields:

Field Type Description
triggering_alert_id int64 The identifier of the alert which triggered this trace.
triggering_config_uid int32 The uid which registered the triggering configuration with statsd.
triggering_config_id int64 The identifier of the config which triggered the alert.
triggering_subscription_id int64 The identifier of the subscription which triggered this trace.

TraceConfig.GuardrailOverrides

Contains flags which override the default values of the guardrails inside Perfetto.

Defined in trace_config.proto

Fields:

Field Type Description
max_upload_per_day_bytes uint64 Override the default limit (in bytes) for uploading data to server within a 24 hour period.
On R-, this override only affected userdebug builds. Since S, it also affects user builds.
In 24Q3+ (V+), this override is a noop because upload guardrail logic was removed from Perfetto.
max_tracing_buffer_size_kb uint32 Overrides the guardrail for maximum trace buffer size.
Available on U+

TraceConfig.TriggerConfig

Triggers allow producers to start or stop the tracing session when an event occurs.

For example if we are tracing probabilistically, most traces will be uninteresting. Triggers allow us to keep only the interesting ones such as those traces during which the device temperature reached a certain threshold. In this case the producer can activate a trigger to keep (STOP_TRACING) the trace, otherwise it can also begin a trace (START_TRACING) because it knows something is about to happen.

Defined in trace_config.proto

Fields:

Field Type Description
trigger_mode TriggerMode
use_clone_snapshot_if_available bool This flag is really a workaround for b/274931668. This is needed only when deploying configs to different versions of the tracing service.
When this is set to true this has the same effect of setting trigger_mode to CLONE_SNAPSHOT on newer versions of the service. This boolean has been introduced to allow to have configs that use CLONE_SNAPSHOT on newer versions of Android and fall back to STOP_TRACING on older versions where CLONE_SNAPSHOT did not exist.
When using this flag, trigger_mode must be set to STOP_TRACING.
triggers Trigger[] A list of triggers which are related to this configuration. If ANY trigger is seen then an action will be performed based on trigger_mode.
trigger_timeout_ms uint32 Required and must be positive if a TriggerConfig is specified. This is how long this TraceConfig should wait for a trigger to arrive. After this period of time if no trigger is seen the TracingSession will be cleaned up.

TraceConfig.TriggerConfig.TriggerMode

Defined in trace_config.proto

Enum values:

Name Value Description
UNSPECIFIED 0
START_TRACING 1 When this mode is chosen, data sources are not started until one of the triggers are received. This supports early initialization and fast starting of the tracing system. On triggering, the session will then record for stop_delay_ms. However if no trigger is seen after trigger_timeout_ms the session will be stopped and no data will be returned.
STOP_TRACING 2 When this mode is chosen, the session will be started via the normal EnableTracing() & StartTracing(). If no trigger is ever seen the session will be stopped after trigger_timeout_ms and no data will be returned. However if triggered the trace will stop after stop_delay_ms and any data in the buffer will be returned to the consumer.
CLONE_SNAPSHOT 4 When this mode is chosen, this causes a snapshot of the current tracing session to be created after stop_delay_ms while the current tracing session continues undisturbed (% an extra flush). This mode can be used only when the tracing session is handled by the "perfetto" cmdline client (which is true in 90% of cases). Part of the business logic necessary for this behavior, and ensuing file handling, lives in perfetto_cmd.cc . On other consumers, this causes only a notification of the trigger through a CloneTriggerHit ObservableEvent. The custom consumer is supposed to call CloneSession() itself after the event.
Use use_clone_snapshot_if_available=true when targeting older versions of perfetto.

TraceConfig.TriggerConfig.Trigger

Defined in trace_config.proto

Fields:

Field Type Description
name string The producer must specify this name to activate the trigger.
producer_name_regex string An std::regex that will match the producer that can activate this trigger. This is optional. If unset any producers can activate this trigger.
stop_delay_ms uint32 After a trigger is received either in START_TRACING or STOP_TRACING mode then the trace will end stop_delay_ms after triggering.
In CLONE_SNAPSHOT mode, this is the delay between the trigger and the snapshot.
If prefer_suspend_clock_for_duration is set, the duration will be based on wall-clock, counting also time in suspend.
max_per_24_h uint32 Limits the number of traces this trigger can start/stop in a rolling 24 hour window. If this field is unset or zero, no limit is applied and activiation of this trigger always starts/stops the trace.
skip_probability double A value between 0 and 1 which encodes the probability of skipping a trigger with this name. This is useful for reducing the probability of high-frequency triggers from dominating trace finaization. If this field is unset or zero, the trigger will never be skipped. If this field is greater than or equal to 1, this trigger will always be skipped i.e. it will be as if this trigger was never included in the first place.
This probability check is applied before any other limits. For example, if max_per_24_h is also set, first we will check if the probability bar is met and only then will we check the max_per_24_h limit.

TraceConfig.IncrementalStateConfig

Configuration for trace contents that reference earlier trace data. For example, a data source might intern strings, and emit packets containing {interned id : string} pairs. Future packets from that data source can then use the interned ids instead of duplicating the raw string contents. The trace parser will then need to use that interning table to fully interpret the rest of the trace.

Defined in trace_config.proto

Fields:

Field Type Description
clear_period_ms uint32 If nonzero, notify eligible data sources to clear their incremental state periodically, with the given period. The notification is sent only to data sources that have handles_incremental_state_clear set in their DataSourceDescriptor. The notification requests that the data source stops referring to past trace contents. This is particularly useful when tracing in ring buffer mode, where it is not exceptional to overwrite old trace data.
Warning: this time-based global clearing is likely to be removed in the future, to be replaced with a smarter way of sending the notifications only when necessary.

TraceConfig.CompressionType

Compress trace with the given method. Best effort.

Defined in trace_config.proto

Enum values:

Name Value Description
COMPRESSION_TYPE_UNSPECIFIED 0
COMPRESSION_TYPE_DEFLATE 1

TraceConfig.IncidentReportConfig

Android-only. Not for general use. If set, saves the trace into an incident. This field is read by perfetto_cmd, rather than the tracing service. This field must be set when passing the --upload flag to perfetto_cmd.

Defined in trace_config.proto

Fields:

Field Type Description
destination_package string
destination_class string
privacy_level int32 Level of filtering in the requested incident. See Destination in frameworks/base/core/proto/android/privacy.proto.
skip_incidentd bool If true, then skips saving the trace to incidentd.
This flag is useful in testing (e.g. Perfetto-statsd integration tests) or when we explicitly don't want traces to go to incidentd even when they usually would (e.g. configs deployed using statsd but only used for inclusion in bugreports using bugreport_score).
The motivation for having this flag, instead of just not setting incident_report_config, is prevent accidents where incident_report_config is omitted by mistake.
skip_dropbox bool If true, do not write the trace into dropbox (i.e. incident only).
Otherwise, write to both dropbox and incident.

TraceConfig.StatsdLogging

Defined in trace_config.proto

Enum values:

Name Value Description
STATSD_LOGGING_UNSPECIFIED 0
STATSD_LOGGING_ENABLED 1
STATSD_LOGGING_DISABLED 2

TraceConfig.TraceFilter

When set applies a post-filter to the trace contents using the filter provided. The filter is applied at ReadBuffers() time and works both in the case of IPC readback and write_into_file. This filter can be generated using tools/proto_filter -s schema.proto -F filter_out.bytes or -T filter_out.escaped_string (for .pbtx). See go/trace-filtering for design.

Introduced in Android S, but it was broken (b/195065199). Reintroduced in Android T with a different field number. Updated in Android U with a new bytecode version which supports string filtering.

Defined in trace_config.proto

Fields:

Field Type Description
bytecode bytes The bytecode as implemented in Android T.
bytecode_v2 bytes The bytecode as implemented in Android U. Adds support for string filtering.
string_filter_chain StringFilterChain

TraceConfig.TraceFilter.StringFilterChain

A chain is a list of rules which string will be sequentially checked against.

Defined in trace_config.proto

Fields:

Field Type Description
rules StringFilterRule[]

TraceConfig.TraceFilter.StringFilterRule

A rule specifies how strings should be filtered.

Defined in trace_config.proto

Fields:

Field Type Description
policy StringFilterPolicy The policy (i.e. algorithm) dictating how strings matching this rule should be handled.
regex_pattern string The regex pattern used to match against each string.
atrace_payload_starts_with string The string which should appear after the tgid in atrace tracepoint strings.

TraceConfig.TraceFilter.StringFilterPolicy

A policy specifies which algorithm should be used for filtering the string.

Defined in trace_config.proto

Enum values:

Name Value Description
SFP_UNSPECIFIED 0
SFP_MATCH_REDACT_GROUPS 1 Tries to match the string field against regex_pattern. If it matches, all matching groups are "redacted" (i.e. replaced with a constant string) and filtering is terminated (i.e. no further rules are checked). If it doesn't match, the string is left unchanged and the next rule in chain is considered.
SFP_ATRACE_MATCH_REDACT_GROUPS 2 Like SFP_MATCH_REDACT_GROUPS but tries to do some pre-work before checking the regex. Specifically, it tries to parse the string field as an atrace tracepoint and checks if the post-tgid field starts with atrace_post_tgid_starts_with. The regex matching is only performed if this check succeeds.
SFP_MATCH_BREAK 3 Tries to match the string field against regex_pattern. If it matches, filtering is terminated (i.e. no further rules are checked).
If it doesn't match, the string is left unchanged and the next rule in chain is considered.
SFP_ATRACE_MATCH_BREAK 4 Like SFP_MATCH_BREAK but tries to do some pre-work before checking the regex. Specifically, it tries to parse the string field as an atrace tracepoint and checks if the post-tgid field starts with atrace_post_tgid_starts_with. The regex matching is only performed if this check succeeds.
SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS 5 Tries to repeatedly search (i.e. find substrings of) the string field with regex_pattern. For each match, redacts any matching groups (i.e.
replaced with a constant string). Once there are no further matches, filtering is terminated (i.e. no further rules are checked).
Note that this is policy is a "search" policy not a "match" policy unlike the above policies:
* Match policies require matching the full string i.e. there is an implicit leading ^ and trailing $.
* Search policies perform repeated partial matching of the string e.g.
- String: foo=aaa,bar=123,foo=bbb,baz=456 - Pattern: foo=(\d+) - Output: foo=P6O,bar=123,foo=P6O,baz=456 where P6O is the redaction string All of this is only performed after some pre-work where we try to parse the string field as an atrace tracepoint and check if the post-tgid field starts with atrace_post_tgid_starts_with.
If there are no partial matches, the string is left unchanged and the next rule in chain is considered.

TraceConfig.AndroidReportConfig

Android-only. Not for general use. If set, reports the trace to the Android framework. This field is read by perfetto_cmd, rather than the tracing service. This field must be set when passing the --upload flag to perfetto_cmd.

Defined in trace_config.proto

Fields:

Field Type Description
reporter_service_package string
reporter_service_class string
skip_report bool If true, then skips reporting the trace to Android framework.
This flag is useful in testing (e.g. Perfetto-statsd integration tests) or when we explicitly don't want to report traces to the framework even when they usually would (e.g. configs deployed using statsd but only used for inclusion in bugreports using bugreport_score).
The motivation for having this flag, instead of just not setting framework_report_config, is prevent accidents where framework_report_config is omitted by mistake.
use_pipe_in_framework_for_testing bool If true, will direct the Android framework to read the data in trace file and pass it to the reporter class over a pipe instead of passing the file descriptor directly.
This flag is needed because the Android test framework does not currently support priv-app helper apps (in terms of SELinux) and we really don't want to add an allow rule for untrusted_app to receive trace fds.
Because of this, we instead will direct the framework to create a new pipe and pass this to the reporter process instead. As the pipe is created by the framework, we won't have any problems with SELinux (system_server is already allowed to pass pipe fds, even to untrusted apps).
As the name suggests this option MUST only be used for testing.
Note that the framework will reject (and drop) files which are too large both for simplicity and to be minimize the amount of data we pass to a non-priv app (note that the framework will still check manifest permissions even though SELinux permissions are worked around).

TraceConfig.CmdTraceStartDelay

If set, delays the start of tracing by a random duration. The duration is chosen from a uniform distribution between the specified minimum and maximum. Note: this delay is implemented by perfetto_cmd not by traced so will not work if you communicate with traced directly over the consumer API. Introduced in Android T.

Defined in trace_config.proto

Fields:

Field Type Description
min_delay_ms uint32
max_delay_ms uint32

TraceConfig.SessionSemaphore

When non-empty, ensures that for a each semaphore named name at most max_other_session_count`` other sessions (whose value is taken of the minimum of all values specified by this config or any already-running session) can be be running.

If a semaphore "acquisition" fails, EnableTracing will return an error and the tracing session will not be started (or elgible to start in the case of deferred sessions).

This is easiest to explain with an example. Suppose the tracing service has the following active tracing sessions: S1 = [{name=foo, max_other_session_count=2}, {name=bar, max_other_session_count=0}] S2 = [{name=foo, max_other_session_count=1}, {name=baz, max_other_session_count=1}]

Then, for a new session, the following would be the expected behaviour of EnableSession given the state of session_semaphores. Q: session_semaphores = [] A: Allowed because it does not specify any semaphores. Will be allowed no matter the state of any other tracing session. Q: session_semaphores = [{name=baz, max_other_session_count=1}] A: Allowed because both S2 and this config specify max_other_session_count=1 for baz. Q: session_semaphores = [{name=foo, max_other_session_count=3}] A: Denied because S2 specified max_other_session_count=1 for foo and S1 takes that slot. Q: session_semaphores = [{name=bar, max_other_session_count=0}] A: Denied because S1 takes the the slot specified by both S1 and this config.

Introduced in 24Q3 (Android V).

Defined in trace_config.proto

Fields:

Field Type Description
name string The name of the semaphore. Acts as a unique identifier across all tracing sessions (including the one being started).
max_other_session_count uint64 The maximum number of other sesssions which specify the same semaphore which can be active. The minimum of this value across all tracing sessions and the value specified by the config is used when deciding whether the tracing session can be started.