Nested message and enum types in AndroidCameraFrameEvent
.
Nested message and enum types in AndroidCameraSessionStats
.
Nested message and enum types in AndroidEnergyEstimationBreakdown
.
Nested message and enum types in AndroidGameInterventionList
.
Nested message and enum types in AndroidInputEventConfig
.
Nested message and enum types in AndroidLogPacket
.
Nested message and enum types in AndroidPowerConfig
.
Nested message and enum types in AndroidSystemProperty
.
Nested message and enum types in BackgroundTracingMetadata
.
Nested message and enum types in BeginFrameArgs
.
Nested message and enum types in BeginImplFrameArgs
.
Nested message and enum types in CSwitchEtwEvent
.
Nested message and enum types in ChromeApplicationStateInfo
.
Nested message and enum types in ChromeCompositorSchedulerState
.
Nested message and enum types in ChromeCompositorStateMachine
.
Nested message and enum types in ChromeConfig
.
Nested message and enum types in ChromeFrameReporter
.
Nested message and enum types in ChromeLatencyInfo
.
Nested message and enum types in ChromeLegacyIpc
.
Nested message and enum types in ChromeLegacyJsonTrace
.
Nested message and enum types in ChromeMetadata
.
Nested message and enum types in ChromeMetadataPacket
.
Nested message and enum types in ChromeProcessDescriptor
.
Nested message and enum types in ChromeThreadDescriptor
.
Nested message and enum types in ChromeTraceEvent
.
Nested message and enum types in ChromeTracedValue
.
Nested message and enum types in ClockSnapshot
.
Nested message and enum types in ConsoleConfig
.
Nested message and enum types in CounterDescriptor
.
Nested message and enum types in CpuInfo
.
Nested message and enum types in DataSourceConfig
.
Nested message and enum types in DebugAnnotation
.
Nested message and enum types in DescriptorProto
.
Nested message and enum types in DisplayState
.
Nested message and enum types in EntityStateResidency
.
Nested message and enum types in EtwConfig
.
Nested message and enum types in EtwTraceEvent
.
Nested message and enum types in FieldDescriptorProto
.
Nested message and enum types in FollowerEvent
.
Nested message and enum types in FrameTimelineEvent
.
Nested message and enum types in FtraceConfig
.
Nested message and enum types in FtraceDescriptor
.
Nested message and enum types in FtraceEvent
.
Nested message and enum types in FtraceEventBundle
.
Nested message and enum types in FtraceStats
.
Nested message and enum types in GenericFtraceEvent
.
Nested message and enum types in GpuCounterDescriptor
.
Nested message and enum types in GpuCounterEvent
.
Nested message and enum types in GpuLog
.
Nested message and enum types in GpuRenderStageEvent
.
Nested message and enum types in GraphicsFrameEvent
.
Nested message and enum types in HeapGraphObject
.
Nested message and enum types in HeapGraphRoot
.
Nested message and enum types in HeapGraphType
.
Nested message and enum types in HeapprofdConfig
.
Nested message and enum types in InodeFileConfig
.
Nested message and enum types in InodeFileMap
.
Nested message and enum types in InternedGpuRenderStageSpecification
.
Nested message and enum types in InternedGraphicsContext
.
Nested message and enum types in InternedV8Isolate
.
Nested message and enum types in InternedV8JsFunction
.
Nested message and enum types in InternedV8JsScript
.
Nested message and enum types in InternedV8String
.
Nested message and enum types in JavaHprofConfig
.
Nested message and enum types in LayerState
.
Nested message and enum types in LayersTraceFileProto
.
Nested message and enum types in LogMessage
.
Nested message and enum types in MemoryTrackerSnapshot
.
Nested message and enum types in NetworkPacketBundle
.
Nested message and enum types in PackagesList
.
Nested message and enum types in PerfEventConfig
.
Nested message and enum types in PerfEvents
.
Nested message and enum types in PerfSample
.
Nested message and enum types in PerfettoMetatrace
.
Nested message and enum types in PixelModemConfig
.
Nested message and enum types in PowerRails
.
Nested message and enum types in ProcessDescriptor
.
Nested message and enum types in ProcessStats
.
Nested message and enum types in ProcessStatsConfig
.
Nested message and enum types in ProcessTree
.
Nested message and enum types in ProfilePacket
.
Nested message and enum types in Profiling
.
Nested message and enum types in ProtoLogConfig
.
Nested message and enum types in ProtoLogViewerConfig
.
Nested message and enum types in ReadyThreadEtwEvent
.
Nested message and enum types in RemoteClockSync
.
Nested message and enum types in ShellTransition
.
Nested message and enum types in SurfaceFlingerLayersConfig
.
Nested message and enum types in SurfaceFlingerTransactionsConfig
.
Nested message and enum types in SysStats
.
Nested message and enum types in SysStatsConfig
.
Nested message and enum types in TestConfig
.
Nested message and enum types in TestEvent
.
Nested message and enum types in ThreadDescriptor
.
Nested message and enum types in TraceConfig
.
Nested message and enum types in TracePacket
.
Nested message and enum types in TraceStats
.
Nested message and enum types in TracingServiceEvent
.
Nested message and enum types in TracingServiceState
.
Nested message and enum types in TrackDescriptor
.
Nested message and enum types in TrackEvent
.
Nested message and enum types in TransactionTraceFile
.
Nested message and enum types in TranslationTable
.
Nested message and enum types in UiState
.
Nested message and enum types in UninterpretedOption
.
Nested message and enum types in V8CodeMove
.
Nested message and enum types in V8InternalCode
.
Nested message and enum types in V8JsCode
.
Nested message and enum types in V8String
.
Nested message and enum types in V8WasmCode
.
Nested message and enum types in VulkanApiEvent
.
Nested message and enum types in VulkanMemoryEvent
.
Nested message and enum types in VulkanMemoryEventAnnotation
.
Nested message and enum types in WindowManagerConfig
.
Symbols for a given address in a module.
A profiling event corresponding to a single camera frame. This message
collects important details and timestamps involved in producing a single
camera frame.
Next ID: 17
A profiling event that may be emitted periodically (i.e., at a slower rate
than AndroidCameraFrameEvent
s) to record fixed and aggregated camera
session-specific values.
Energy consumer based on aidl class:
android.hardware.power.stats.EnergyConsumer.
Energy data retrieve using the ODPM(On Device Power Monitor) API.
This proto represents the aidl class:
android.hardware.power.stats.EnergyConsumerResult.
Data source that lists game modes and game interventions of games
on an Android device.
Custom configuration for the “android.input.inputevent” data source.
Data source that polls for display state. This should only be used for
backward-compatibility; AndroidSystemPropertyConfig should be preferred.
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.
Data source that polls for system properties.
Deliberate empty message. See comment on StatsdAtom#atom below.
Metadata related to background tracing scenarios, states and triggers.
Next id: 13
Next id: 7
A list of processes connected to the tracing service.
Trace event arguments for application state changes.
This message is not intended to be written by the chrome on the device.
It’s emitted on the host by the telemetry benchmark infrastructure (it’s a
part of the trace that’s written by the telemetry tracing agent).
Next id: 18
Describes the current values stored in the Chrome Compositor state machine.
Next id: 3
Details about ContentSettings trace events.
An individual histogram sample logged via Chrome’s UMA metrics system.
Chrome histogram sample hash -> name translation rules.
Details about one of Chrome’s keyed services associated with the event.
Details about a legacy Chrome IPC message that is either sent by the event.
TODO(eseckler): Also use this message on the receiving side?
Subtraces produced in legacy json format by Chrome tracing agents not yet
updated to support the new binary format, e.g. ETW and CrOS ARC.
TODO(eseckler): Update these agents to become perfetto producers.
Details about Chrome message pump events
Metadata for chrome traces.
Contains information to identify mojo handling events. The trace events in
mojo are common for all mojo interfaces and this information is used to
identify who is the caller or callee.
Chrome performance mark translation rules.
Describes the attributes for a Chrome process. Must be paired with a
ProcessDescriptor in the same TrackDescriptor.
Describes a Chrome thread’s attributes. Emitted as part of a TrackDescriptor,
usually by the thread’s trace writer. Must be paired with a ThreadDescriptor
in the same TrackDescriptor.
Deprecated, use TrackEvent protos instead.
Information about a specific trigger during a background tracing scenario
Associated packet timestamps are useful to delimitate a scenario range in a
trace. Triggers are also useful for filtering traces.
Details about a UI interaction initiated by the user, such as opening or
closing a tab or a context menu.
Chrome user event action hash -> name translation rules.
Details about HWNDMessageHandler trace events.
A snapshot of clock readings to allow for trace alignment.
Defines properties of a counter track, e.g. for built-in counters (thread
time, instruction count, ..) or user-specified counters (e.g. memory usage of
a specific app component).
Information about CPUs from procfs and sysfs.
The configuration that is passed to each data source when starting tracing.
Next id: 131
This message is sent from Producer(s) to the tracing Service when registering
to advertise their capabilities. It describes the structure of tracing
protos that will be produced by the data source and the supported filters.
Proto representation of untyped key/value annotations provided in TRACE_EVENT
macros. Users of the Perfetto SDK should prefer to use the
perfetto::TracedValue API to fill these protos, rather than filling them
manually.
See the |proto_type_descriptor| comment.
Describes a message type.
Describes an enum type.
Describes a value within an enum.
The result of tracing one or more etw event uses per-processor buffers where
an in-use buffer is assigned to each processor at all times. Therefore,
collecting multiple events they should already be synchronized.
This message contains descriptors used to parse extension fields of
TrackEvent.
Describes a field within a message.
Describes a complete .proto file.
The protocol compiler can output a FileDescriptorSet containing the .proto
files it parses.
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.
Generated by SurfaceFlinger’s FrameTimeline (go/adaptive-scheduling-fr).
Used in comparing the expected timeline of a frame to the actual timeline.
Key terms:
1) DisplayFrame - represents SurfaceFlinger’s work on a frame(composited)
2) SurfaceFrame - represents App’s work on its frame
3) Timeline = start to end of a component’s(app/SF) work on a frame.
SurfaceFlinger composites frames from many apps together, so
One DisplayFrame can map to N SurfaceFrame(s)
This relationship can be reconstructed by using
DisplayFrame.token = SurfaceFrame.display_frame_token
Next id: 30
Per-CPU kernel buffer stats for the ftrace data source gathered from
/sys/kernel/tracing/per_cpu/cpuX/stats.
The result of tracing one or more ftrace data pages from a single per-cpu
kernel ring buffer. If collating multiple pages’ worth of events, all of
them come from contiguous pages, with no kernel data loss in between.
Errors and kernel buffer stats for the ftrace data source.
This generic proto is used to output events in the trace
when a specific proto for that event does not exist.
Description of GPU counters.
This message is sent by a GPU counter producer to specify the counters
available in the hardware.
Message for logging events GPU data producer.
Generated by Android’s GpuService.
next id: 15
Generated by Android’s SurfaceFlinger.
Configuration for go/heapprofd.
Next id: 28
Represents the mapping between inode numbers in a block device and their path
on the filesystem
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.
Message that contains new entries for the interning indices of a packet
sequence.
The iid is the numeric value of either the GL Context or the VkDevice
handle.
The interning fields in this file can refer to 2 different intern tables,
depending on the message they are used in. If the interned fields are present
in ProfilePacket proto, then the intern tables included in the ProfilePacket
should be used. If the intered fields are present in the
StreamingProfilePacket proto, then the intern tables included in all of the
previous InternedData message with same sequence ID should be used.
TODO(fmayer): Move to the intern tables to a common location.
A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
engine.
Represents a script that was compiled to generate code. Some V8 code is
generated out of scripts and will reference a V8Script other types of code
will not (e.g. builtins).
Interned version of V8String
Configuration for managed app heap graph snapshots.
Information about each layer.
Keep insync with layer_state_t
Contains a list of all layers.
Message used by Winscope to process legacy trace files.
Represents a file full of surface flinger trace entries.
Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
(.LYRTRACE), such that they can be easily identified.
Symbols for addresses seen in a module.
NetworkPacketBundle bundles one or more packets sharing the same attributes.
An internable packet context.
NetworkPacketEvent records the details of a single packet sent or received
on the network (in Linux kernel terminology, one sk_buff struct).
Network tracing data source that records details on all packets sent or
received by the network.
Describes a oneof.
Data source that lists details (such as version code) about packages on an
Android device.
Configuration for the traced_perf profiler.
Next id: 12
Packet emitted by the traced_perf sampling performance profiler, which
gathers data via the perf_event_open syscall. Each packet contains an
individual sample with a counter value, and optionally a
callstack.
Submessage for TracePacketDefaults.
Used to trace the execution of perfetto itself.
Data source that records events from the modem.
NB: this is not emitted in the trace but can be prepended later.
Describes a process’s attributes. Emitted as part of a TrackDescriptor,
usually by the process’s main thread.
Per-process periodically sampled stats. These samples are wrapped in a
dedicated message (as opposite to be fields in process_tree.proto) because
they are dumped at a different rate than cmdline and thread list.
Note: not all of these stats will be present in every ProcessStats message
and sometimes processes may be missing. This is because counters are
cached to reduce emission of counters which do not change.
Raw -> deobfuscated process track name translation rules.
Metadata about the processes and threads in the trace.
Note: this proto was designed to be filled in by traced_probes and should
only be populated with accurate information coming from the system. Other
trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
in TrackDescriptor.
The packet emitted by heapprofd for each heap snapshot. A snapshot can
involve more than one ProfilePacket if the snapshot is big (when |continued|
is true). The cardinality and grouping is as follows:
A ProfilePacket contains:
A symbol field that is emitted after the trace is written. These tables would
be appended as the last packets in the trace that the profiler will use, so
that the actual trace need not be rewritten to symbolize the profiles.
Namespace for the contained enums.
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.
represents a single log entry
contains all the data required to fully decode the protolog messages
Records the parameters for aligning clock readings between machines.
Contains mappings from handler ids to string representation of the handlers.
ShellTransition messages record information about the shell transitions in
the system. This is used to track the animations that are created and execute
through the shell transition system.
Raw -> deobfuscated slice name translation rules.
One or more statsd atoms. This must continue to match:
perfetto/protos/third_party/statsd/shell_data.proto
So that we can efficiently add data from statsd directly to the
trace.
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.
Packet emitted by heapprofd when stream_allocations = true. Only for local
testing. Doesn’t report the callsite.
Packet emitted by heapprofd when stream_allocations = true. Only for local
testing. Doesn’t report the callsite.
Packet emitted by the chromium in-process signal-based callstack sampler.
Represents a series of individual stack samples (sampled at discrete points
in time), rather than aggregated over an interval.
Custom configuration for the “android.surfaceflinger.layers” data source.
Custom configuration for the “android.surfaceflinger.transactions” data
source.
Various Linux system stat counters from /proc.
The fields in this message can be reported at different rates and with
different granularity. See sys_stats_config.proto.
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]
This data-source does a one-off recording of system information when
the trace starts.
Currently this includes:
TrackEvent arguments describing the execution of a task.
The configuration for a fake producer used in tests.
Event used by testing code.
Describes a thread’s attributes. Emitted as part of a TrackDescriptor,
usually by the thread’s trace writer.
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.
TracePacket is the root object of a Perfetto trace.
A Perfetto trace is a linear sequence of TracePacket(s).
Default values for TracePacket fields that hold for a particular TraceWriter
packet sequence. This message contains a subset of the TracePacket fields
with matching IDs. When provided, these fields define the default values
that should be applied, at import time, to all TracePacket(s) with the same
|trusted_packet_sequence_id|, unless otherwise specified in each packet.
Statistics for the internals of the tracing service.
A random unique ID that identifies the trace.
This message has been introduced in v32. Prior to that, the UUID was
only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
This has been moved to a standalone packet to deal with new use-cases for
go/gapless-aot, where the same tracing session can be serialized several
times, in which case the UUID is changed on each snapshot and does not match
the one in the TraceConfig.
Events emitted by the tracing service.
Reports the state of the tracing service. Used to gather details about the
data sources connected.
See ConsumerPort::QueryServiceState().
Defines a track for TrackEvents. Slices and instant events on the same track
will be nested based on their timestamps, see TrackEvent::Type.
Trace events emitted by client instrumentation library (TRACE_EVENT macros),
which describe activity on a track, such as a thread or asynchronous event
track. The track is specified using separate TrackDescriptor messages and
referred to via the track’s UUID.
The following fields define the set of enabled trace categories. Each list
item is a glob.
Default values for fields of all TrackEvents on the same packet sequence.
Should be emitted as part of TracePacketDefaults whenever incremental state
is cleared. It’s defined here because field IDs should match those of the
corresponding fields in TrackEvent.
This message specifies the “range of interest” for track events. With the
drop_track_event_data_before
option set to kTrackEventRangeOfInterest
,
Trace Processor drops track events outside of this range.
Message used by Winscope to process legacy trace files.
Represents a file full of surface flinger transactions.
Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
(.TNXTRACE), such that they can be easily identified.
Translation rules for the trace processor.
See the comments for each rule type for specific meaning.
When a TracingSession receives a trigger it records the boot time nanoseconds
in the TracePacket’s timestamp field as well as the name of the producer that
triggered it. We emit this data so filtering can be done on triggers received
in the trace.
Common state for UIs visualizing Perfetto traces.
This message can be appended as a TracePacket by UIs to save the
visible state (e.g. scroll position/zoom state) for future opening
of the trace.
Design doc: go/trace-ui-state.
A message representing a option the parser does not recognize. This only
appears in options protos created by the compiler::Parser class.
DescriptorPool resolves these when building Descriptor objects. Therefore,
options protos in descriptor objects (e.g. returned by Descriptor::options(),
or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
in them.
A source location, represented as a native symbol.
This is similar to message Frame
from
protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
source code locations (for example in track event args), not stack frames.
Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
memory by V8’s GC.
Strings used by V8 can have different encodings, instead of coverting to a
common encoding (e.g. UTF-8) on device is expensive. Instead we send the
“raw” string and do the convestion at trace ingestion time.
Message for recording the Vulkan call.
Each VulkanMemoryEvent encompasses information regarding one single function
call that results in reserving, binding or freeing host or GPU memory. There
is a special message type, ANNOTATIONS, which is used to communicate
information that are not directly related to a memory event, nonetheless are
essential to understand the memory usage. An example is the size and memory
types of the memory heaps.
All the information that cannot be sent within a VulkanMemoryEvent message,
are sent as annotations to the main memory event. One example is the
properties of the object that consumes the allocated memory, for example, a
buffer or an image.
key_iid and string_iid are both interned strings. Original string value is
stored in vulkan_memory_keys from
protos/perfetto/trace/interned_data/interned_data.proto.
Custom configuration for the “android.windowmanager” data source.