PerfettoSQL standard library

This page documents the PerfettoSQL standard library.

Introduction

The PerfettoSQL standard library is a repository of tables, views, functions and macros, contributed by domain experts, which make querying traces easier. Its design is heavily inspired by standard libraries in languages like Python, C++ and Java.

Some of the purposes of the standard library include:

  1. Acting as a way of sharing and commonly written queries without needing to copy/paste large amounts of SQL.
  2. Raising the abstraction level when exposing data in the trace. Many modules in the standard library convert low-level trace concepts e.g. slices, tracks and into concepts developers may be more familar with e.g. for Android developers: app startups, binder transactions etc.

Standard library modules can be included as follows:

-- Include all tables/views/functions from the android.startup.startups -- module in the standard library. INCLUDE PERFETTO MODULE android.startup.startups; -- Use the android_startups table defined in the android.startup.startups -- module. SELECT * FROM android_startups;

Prelude is a special module is automatically included. It contains key helper tables, views and functions which are universally useful.

More information on importing modules is available in the syntax documentation for the INCLUDE PERFETTO MODULE statement.

Tags

Click on tags to filter modules by category:

android app-lifecycle chrome cpu gpu input ipc linux memory metadata performance power scheduling startup trace ui utilities virtualization

Package: prelude

prelude

Views/Tables

perf_sample. Samples from the traced_perf profiler and perf.data files

VIEW Samples from the traced_perf profiler and perf.data files. One row per perf sample, including counter-only samples which have no callstack.

Column Type Description
id ID Unique identifier for this perf sample. Joinable with stack_sample.id.
ts TIMESTAMP Timestamp of the sample.
utid JOINID(thread.id) Sampled thread.
cpu LONG Core the sampled thread was running on.
cpu_mode STRING Execution state (userspace/kernelspace) of the sampled thread.
callsite_id JOINID(stack_profile_callsite.id) If set, unwound callstack of the sampled thread.
unwind_error STRING If set, indicates that the unwinding for this sample encountered an error. Such samples still reference the best-effort result via the callsite_id, with a synthetic error frame at the point where unwinding stopped.
perf_session_id JOINID(perf_session.id) Distinguishes samples from different profiling streams (i.e. multiple data sources).
stats. Diagnostic stats and parser errors collected at trace time and during import

VIEW Diagnostic stats and parser errors collected at trace time and during import. One row per (key, idx, machine_id, trace_id) combination.

Column Type Description
id ID Unique identifier for this stats row.
name STRING Stat name (e.g. ftrace_cpu_overrun_begin).
key LONG Numeric stat key (stats::KeyIDs enum value).
idx LONG Per-stat index for kIndexed stats; NULL for kSingle.
severity STRING "info" | "notice" | "data_loss" | "error".
source STRING "trace" (recorded on-device) or "analysis" (TP).
value LONG Stat value.
description STRING Human-readable description.
machine_id JOINID(machine.id) Machine identifier (NULL for kGlobal stats).
trace_id LONG Trace identifier (NULL for kGlobal stats).
metadata. Contains metadata about the trace and the system it was collected from

VIEW Contains metadata about the trace and the system it was collected from.

Column Type Description
id ID Unique identifier for this metadata row.
name STRING Name of the metadata entry.
key_type STRING Type of the metadata entry (e.g. 'single', 'multi').
int_value LONG Integer value of the entry.
str_value STRING String value of the entry.
machine_id JOINID(machine.id) Machine identifier.
trace_id LONG Trace identifier.
state_track. Tracks containing state events

VIEW Tracks containing state events.

Column Type Description
id ID(track.id) Unique identifier for this state track.
name STRING Name of the track.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
dimension_arg_set_id ARGSETID The dimensions of the track which uniquely identify the track within a given type.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
process_state_track. Tracks containing state events associated to a process

TABLE Tracks containing state events associated to a process.

Column Type Description
id ID(track.id) Unique identifier for this process state track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
upid JOINID(process.id) The upid that the track is associated with.
thread_state_track. Tracks containing state events associated to a thread

TABLE Tracks containing state events associated to a thread.

Column Type Description
id ID(track.id) Unique identifier for this thread state track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
utid JOINID(thread.id) The utid that the track is associated with.
counter. Counters are values put into tracks during parsing of the trace

VIEW Counters are values put into tracks during parsing of the trace.

Column Type Description
id ID Unique id of a counter value
ts TIMESTAMP Time of fetching the counter value.
track_id JOINID(track.id) Track this counter value belongs to.
value DOUBLE Value.
arg_set_id ARGSETID Additional information about the counter value.
state. Contains state from userspace which reads like a symbolic counter with literals rather than numbers

VIEW Contains state from userspace which reads like a symbolic counter with literals rather than numbers.

Column Type Description
id ID Unique id of a state slice
ts TIMESTAMP The start timestamp of the state slice in nanoseconds.
dur DURATION The duration of the state slice in nanoseconds.
track_id JOINID(track.id) The track this state slice belongs to.
category STRING The category of the state.
value STRING The string value/name of the state.
arg_set_id ARGSETID Additional information about the state.
slice. Contains slices from userspace which explains what threads were doing during the trace

VIEW Contains slices from userspace which explains what threads were doing during the trace.

Column Type Description
id ID The id of the slice.
ts TIMESTAMP The timestamp at the start of the slice in nanoseconds. The actual value depends on the primary_trace_clock selected in TraceConfig. This is often the value of a monotonic counter since device boot so is only meaningful in the context of a trace.
dur DURATION The duration of the slice in nanoseconds.
track_id JOINID(track.id) The id of the track this slice is located on.
category STRING The "category" of the slice. If this slice originated with track_event, this column contains the category emitted. Otherwise, it is likely to be null (with limited exceptions).
name STRING The name of the slice. The name describes what was happening during the slice.
depth LONG The depth of the slice in the current stack of slices.
parent_id JOINID(slice.id) The id of the parent (i.e. immediate ancestor) slice for this slice.
arg_set_id ARGSETID The id of the argument set associated with this slice.
thread_ts TIMESTAMP The thread timestamp at the start of the slice. This column will only be populated if thread timestamp collection is enabled with track_event.
thread_dur DURATION The thread time used by this slice. This column will only be populated if thread timestamp collection is enabled with track_event.
thread_instruction_count LONG The value of the CPU instruction counter at the start of the slice. This column will only be populated if thread instruction collection is enabled with track_event.
thread_instruction_delta LONG The change in value of the CPU instruction counter between the start and end of the slice. This column will only be populated if thread instruction collection is enabled with track_event.
cat STRING Alias of category.
slice_id JOINID(slice.id) Alias of id.
instant. Contains instant events from userspace which indicates what happened at a single moment in time

VIEW Contains instant events from userspace which indicates what happened at a single moment in time.

Column Type Description
ts TIMESTAMP The timestamp of the instant.
track_id JOINID(track.id) The id of the track this instant is located on.
name STRING The name of the instant. The name describes what happened during the instant.
arg_set_id ARGSETID The id of the argument set associated with this instant.
slices. Alternative alias of table `slice`

VIEW Alternative alias of table slice.

Column Type Description
id JOINID(slice.id) Alias of slice.id.
ts TIMESTAMP Alias of slice.ts.
dur DURATION Alias of slice.dur.
track_id JOINID(track.id) Alias of slice.track_id.
category STRING Alias of slice.category.
name STRING Alias of slice.name.
depth LONG Alias of slice.depth.
parent_id JOINID(slice.id) Alias of slice.parent_id.
arg_set_id ARGSETID Alias of slice.arg_set_id.
thread_ts TIMESTAMP Alias of slice.thread_ts.
thread_dur DURATION Alias of slice.thread_dur.
thread_instruction_count LONG Alias of slice.thread_instruction_count.
thread_instruction_delta LONG Alias of slice.thread_instruction_delta.
cat STRING Alias of slice.cat.
slice_id JOINID(slice.id) Alias of slice.slice_id.
thread. Contains information of threads seen during the trace

VIEW Contains information of threads seen during the trace.

Column Type Description
id ID The id of the thread. Prefer using utid instead.
utid ID Unique thread id. This is != the OS tid. This is a monotonic number associated to each thread. The OS thread id (tid) cannot be used as primary key because tids and pids are recycled by most kernels.
tid LONG The OS id for this thread. Note: this is not unique over the lifetime of the trace so cannot be used as a primary key. Use |utid| instead.
name STRING The name of the thread. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).
start_ts TIMESTAMP The start timestamp of this thread (if known). Is null in most cases unless a thread creation event is enabled (e.g. task_newtask ftrace event on Linux/Android).
end_ts TIMESTAMP The end timestamp of this thread (if known). Is null in most cases unless a thread destruction event is enabled (e.g. sched_process_free ftrace event on Linux/Android).
upid JOINID(process.id) The process hosting this thread.
is_main_thread BOOL Boolean indicating if this thread is the main thread in the process.
is_idle BOOL Boolean indicating if this thread is a kernel idle thread.
machine_id JOINID(machine.id) Machine identifier
arg_set_id ARGSETID Extra args for this thread.
process. Contains information of processes seen during the trace

VIEW Contains information of processes seen during the trace.

Column Type Description
id ID The id of the process. Prefer using upid instead.
upid JOINID(process.id) Unique process id. This is != the OS pid. This is a monotonic number associated to each process. The OS process id (pid) cannot be used as primary key because tids and pids are recycled by most kernels.
pid LONG The OS id for this process. Note: this is not unique over the lifetime of the trace so cannot be used as a primary key. Use |upid| instead.
name STRING The name of the process. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).
start_ts TIMESTAMP The start timestamp of this process (if known). Is null in most cases unless a process creation event is enabled (e.g. task_newtask ftrace event on Linux/Android).
end_ts TIMESTAMP The end timestamp of this process (if known). Is null in most cases unless a process destruction event is enabled (e.g. sched_process_free ftrace event on Linux/Android).
parent_upid JOINID(process.id) The upid of the process which caused this process to be spawned.
uid LONG The Unix user id of the process.
android_appid LONG Android appid of this process.
android_user_id LONG Android user id of this process.
cmdline STRING /proc/cmdline for this process.
arg_set_id ARGSETID Extra args for this process.
machine_id JOINID(machine.id) Machine identifier
args. Arbitrary key-value pairs which allow adding metadata to other, strongly typed tables

VIEW Arbitrary key-value pairs which allow adding metadata to other, strongly typed tables. Note: for a given row, only one of |int_value|, |string_value|, |real_value| will be non-null.

Column Type Description
id ID The id of the arg.
arg_set_id ARGSETID The id for a single set of arguments.
flat_key STRING The "flat key" of the arg: this is the key without any array indexes.
key STRING The key for the arg.
int_value LONG The integer value of the arg.
string_value STRING The string value of the arg.
real_value DOUBLE The double value of the arg.
value_type STRING The type of the value of the arg. Will be one of 'int', 'uint', 'string', 'real', 'pointer', 'bool' or 'json'.
display_value STRING The human-readable formatted value of the arg.
perf_session. Contains all Linux perf sessions in the trace, including sessions which only recorded counters and did not capture any callstacks

VIEW Contains all Linux perf sessions in the trace, including sessions which only recorded counters and did not capture any callstacks.

Column Type Description
id LONG The id of the perf session. Prefer using perf_session_id instead.
perf_session_id LONG The id of the perf session.
cmdline STRING Command line used to collect the data.
logs. Log entries from all sources (Android logcat, systemd_journald, etc.)

VIEW Log entries from all sources (Android logcat, systemd_journald, etc.).

NOTE: this table is not sorted by timestamp.

Column Type Description
id ID Which row in the table the log corresponds to.
ts TIMESTAMP Timestamp of the log entry.
utid JOINID(thread.id) Thread writing the log entry (nullable).
prio LONG Priority. Android: 3=DEBUG..6=ERROR. Journald/syslog: 0=EMERG..7=DEBUG.
log_source STRING Source of the log entry: 'android_logcat' or 'systemd_journald'.
tag STRING Tag / SYSLOG_IDENTIFIER of the log entry.
msg STRING Content of the log entry.
arg_set_id ARGSETID Args for source-specific metadata.
android_logs. Android log entries from logcat or bugreport

VIEW Android log entries from logcat or bugreport.

NOTE: this table is not sorted by timestamp.

Column Type Description
id ID Which row in the table the log corresponds to.
ts TIMESTAMP Timestamp in nanoseconds.
utid JOINID(thread.id) Thread id in the trace (nullable).
prio LONG Android log priority (3=DEBUG, 4=INFO, 5=WARN, 6=ERROR, 7=FATAL).
tag STRING Log tag.
msg STRING Log message text.
flow. Contains flow events linking slices

VIEW Contains flow events linking slices.

Column Type Description
id ID The id of the flow.
slice_out JOINID(slice.id) Id of the slice that this flow flows out of.
slice_in JOINID(slice.id) Id of the slice that this flow flows into.
trace_id LONG Trace id of the flow.
arg_set_id ARGSETID Args for this flow.
android_game_intervention_list. A table presenting all game modes and interventions of games installed on the system

VIEW A table presenting all game modes and interventions of games installed on the system.

Column Type Description
id ID The id of the row.
package_name STRING Name of the package.
uid LONG UID processes of this package runs as.
current_mode LONG Current game mode the game is running at.
standard_mode_supported LONG Bool whether standard mode is supported.
standard_mode_downscale DOUBLE Resolution downscaling factor of standard mode.
standard_mode_use_angle LONG Bool whether ANGLE is used in standard mode.
standard_mode_fps DOUBLE Frame rate that the game is throttled at in standard mode.
perf_mode_supported LONG Bool whether performance mode is supported.
perf_mode_downscale DOUBLE Resolution downscaling factor of performance mode.
perf_mode_use_angle LONG Bool whether ANGLE is used in performance mode.
perf_mode_fps DOUBLE Frame rate that the game is throttled at in performance mode.
battery_mode_supported LONG Bool whether battery mode is supported.
battery_mode_downscale DOUBLE Resolution downscaling factor of battery mode.
battery_mode_use_angle LONG Bool whether ANGLE is used in battery mode.
battery_mode_fps DOUBLE Frame rate that the game is throttled at in battery mode.
android_dumpstate. Dumpsys entries from Android dumpstate

VIEW Dumpsys entries from Android dumpstate.

Column Type Description
id ID The id of the row.
section STRING Name of the dumpstate section.
service STRING Name of the dumpsys service.
line STRING Line-by-line contents of the section/service.
profiler_smaps. Per-VMA memory mapping stats

VIEW Per-VMA memory mapping stats. For linux traces, prefer the process_memory_mappings view.

Column Type Description
id ID The id of the row.
upid LONG The unique PID of the process.
ts TIMESTAMP Timestamp of the snapshot.
path STRING The mmaped file, as per /proc/pid/smaps.
path_trimmed STRING Same as path but with any trailing " (deleted)" suffix removed.
aggregate_count LONG Number of original mappings aggregated into this row.
is_deleted LONG True if this is a file-backed mapping, and the file was deleted.
size_kb LONG Total size of the mapping.
private_dirty_kb LONG KB of this mapping that are private dirty RSS.
swap_kb LONG KB of this mapping that are in swap.
file_name STRING File name.
start_address LONG Start address.
module_timestamp LONG Module timestamp.
module_debugid STRING Module debug id.
module_debug_path STRING Module debug path.
protection_flags LONG Protection flags.
private_clean_resident_kb LONG Private clean resident KB.
shared_dirty_resident_kb LONG Shared dirty resident KB.
shared_clean_resident_kb LONG Shared clean resident KB.
locked_kb LONG Locked KB.
proportional_resident_kb LONG Proportional set size (PSS) KB.
rss_kb LONG Resident set size (RSS) KB.
anonymous_kb LONG Anonymous (non-file-backed) KB.
pss_dirty_kb LONG Dirty portion of the proportional set size (PSS) KB.
swap_pss_kb LONG Proportional share of swap KB.
process_memory_mappings. Per-VMA memory mapping stats

VIEW Per-VMA memory mapping stats.

Column Type Description
id ID The id of the row.
upid LONG Unique pid of the process.
ts TIMESTAMP Timestamp of the snapshot.
path STRING The mapping name. Any (deleted) suffix is removed for file-backed mappings.
aggregate_count LONG Number of original mappings aggregated into this row.
is_deleted LONG True if this is a file-backed mapping, and the file was deleted. In other words, the kernel reported the mapping with a "(deleted)" suffix.
size_kb LONG Total size of the mapping.
rss_kb LONG Resident set size (RSS) of the mapping.
anonymous_kb LONG Anonymous (non-file-backed) portion of the mapping.
swap_kb LONG Portion of the mapping in swap.
shared_clean_kb LONG Shared clean RSS of the mapping.
shared_dirty_kb LONG Shared dirty RSS of the mapping.
private_clean_kb LONG Private clean RSS of the mapping.
private_dirty_kb LONG Private dirty RSS of the mapping.
locked_kb LONG Locked KB.
pss_kb LONG Proportional set size (PSS).
pss_dirty_kb LONG Dirty portion of the proportional set size (PSS).
swap_pss_kb LONG Proportional share of swap.
package_list. Metadata about packages installed on the system

VIEW Metadata about packages installed on the system.

Column Type Description
id ID The id of the row.
package_name STRING Name of the package.
uid LONG UID processes of this package run as.
debuggable LONG Bool whether this app is debuggable.
profileable_from_shell LONG Bool whether this app is profileable.
version_code LONG versionCode from the APK.
stack_profile_mapping. A mapping (binary / library) in a process

VIEW A mapping (binary / library) in a process.

Column Type Description
id ID The id of the row.
build_id STRING Hex-encoded Build ID of the binary / library.
exact_offset LONG Exact offset.
start_offset LONG Start offset.
start LONG Start of the mapping in the process' address space.
end LONG End of the mapping in the process' address space.
load_bias LONG Load bias.
name STRING Filename of the binary / library.
stack_profile_frame. A frame on the callstack

VIEW A frame on the callstack. This is a location in a program.

Column Type Description
id ID The id of the row.
name STRING Name of the function this location is in.
mapping JOINID(stack_profile_mapping.id) The mapping (library / binary) this location is in.
rel_pc LONG The program counter relative to the start of the mapping.
symbol_set_id LONG If the profile was offline symbolized, the offline symbol information.
deobfuscated_name STRING Deobfuscated name of the function this location is in.
type STRING The kind of frame (e.g. "native", "kernel", "interpreted", "jit", "gc", "runtime") if reported by the producer, else NULL.
stack_profile_callsite. A callsite

VIEW A callsite. This is a list of frames that were on the stack.

Column Type Description
id ID The id of the row.
depth LONG Distance from the bottom-most frame of the callstack.
parent_id JOINID(stack_profile_callsite.id) Parent frame on the callstack. NULL for the bottom-most.
frame_id JOINID(stack_profile_frame.id) Frame at this position in the callstack.
cpu_profile_stack_sample. Table containing stack samples from CPU profiling

VIEW Table containing stack samples from CPU profiling.

Column Type Description
id ID The id of the row. Joinable with stack_sample.id.
ts TIMESTAMP Timestamp of the sample.
callsite_id JOINID(stack_profile_callsite.id) Unwound callstack.
utid LONG Thread that was active when the sample was taken.
process_priority LONG Process priority.
instruments_sample. Samples from MacOS Instruments

VIEW Samples from MacOS Instruments.

Column Type Description
id ID The id of the row. Joinable with stack_sample.id.
ts TIMESTAMP Timestamp of the sample.
utid LONG Sampled thread.
callsite_id JOINID(stack_profile_callsite.id) If set, unwound callstack of the sampled thread.
cpu LONG Core the sampled thread was running on.
stack_profile_symbol. Symbolization data for a frame

VIEW Symbolization data for a frame.

Column Type Description
id ID The id of the row.
symbol_set_id LONG Symbol set id.
name STRING Name of the function.
source_file STRING Name of the source file containing the function.
line_number LONG Line number of the frame in the source file.
inlined LONG Whether this function was inlined.
heap_profile_allocation. Allocations that happened at a callsite

VIEW Allocations that happened at a callsite.

Column Type Description
id ID The id of the row.
ts TIMESTAMP The timestamp the allocations happened at.
upid LONG The unique PID of the allocating process.
heap_name STRING Heap name.
callsite_id JOINID(stack_profile_callsite.id) The callsite the allocation happened at.
count LONG Number of allocations (positive) or frees (negative).
size LONG Size of allocations (positive) or frees (negative).
vulkan_memory_allocations. Vulkan memory allocations

VIEW Vulkan memory allocations.

Column Type Description
id ID The id of the row.
arg_set_id ARGSETID Args.
source STRING Source.
operation STRING Operation.
timestamp LONG Timestamp.
upid LONG Unique process id.
device LONG Device.
device_memory LONG Device memory.
memory_type LONG Memory type.
heap LONG Heap.
function_name STRING Function name.
object_handle LONG Object handle.
memory_address LONG Memory address.
memory_size LONG Memory size.
scope STRING Scope.
gpu_counter_group. GPU counter group

VIEW GPU counter group.

Column Type Description
id ID The id of the row.
group_id LONG Group id.
track_id JOINID(track.id) Track id.
name STRING Group name. NULL for legacy enum-based groups.
description STRING Group description. NULL for legacy enum-based groups.
spurious_sched_wakeup. Spurious scheduling wakeups

VIEW Spurious scheduling wakeups.

Column Type Description
id ID The id of the row.
ts TIMESTAMP The timestamp of the wakeup.
thread_state_id LONG The id of the row in the thread_state table.
irq_context LONG Whether the wakeup was from interrupt context.
utid LONG The thread's unique id in the trace.
waker_utid LONG The unique thread id of the waker thread.
machine. Contains raw machine_id of trace packets emitted from remote machines

VIEW Contains raw machine_id of trace packets emitted from remote machines.

Column Type Description
id ID The id of the machine.
raw_id LONG Raw machine identifier in the trace packet.
name STRING Human-readable name of the machine (e.g. from a perfetto_manifest override), used as its label in the UI.
sysname STRING The name of the operating system.
release STRING The current release of the operating system.
version STRING The current version of the operating system.
arch STRING Hardware architecture of the machine.
num_cpus LONG Number of cpus available to the machine.
android_build_fingerprint STRING Android build fingerprint.
android_device_manufacturer STRING Android device manufacturer.
android_sdk_version LONG Android SDK version.
system_ram_bytes LONG Total system RAM in bytes.
system_ram_gb LONG Total system RAM in gigabytes (rounded).
label_index LONG 1-based index of this machine among the non-host machines, used by the UI to label tracks (e.g. "(machine 1)"). The host machine (raw_id 0) gets 0, so it is never labelled.
filedescriptor. Contains information of filedescriptors collected during the trace

VIEW Contains information of filedescriptors collected during the trace.

Column Type Description
id ID The id of the row.
ufd LONG Unique fd.
fd LONG The OS fd.
ts TIMESTAMP The timestamp for when the fd was collected.
upid LONG The upid of the process which opened the filedescriptor.
path STRING The path to the file or device backing the fd.
experimental_missing_chrome_processes. Experimental table for missing Chrome processes

VIEW Experimental table for missing Chrome processes.

Column Type Description
id ID The id of the row.
upid LONG Unique process id.
reliable_from LONG Reliable from timestamp.
clock_snapshot. Contains all the mapping between clock snapshots and trace time

VIEW Contains all the mapping between clock snapshots and trace time.

Column Type Description
id ID The id of the row.
ts TIMESTAMP Timestamp of the snapshot in trace time.
clock_id LONG Id of the clock.
clock_name STRING The name of the clock for builtin clocks or null otherwise.
clock_value LONG Timestamp of the snapshot in clock time.
snapshot_id LONG The index of this snapshot.
machine_id JOINID(machine.id) Machine identifier.
surfaceflinger_layers_snapshot. SurfaceFlinger layers snapshot

VIEW SurfaceFlinger layers snapshot.

Column Type Description
id ID The id of the row.
ts TIMESTAMP Timestamp of the snapshot.
arg_set_id ARGSETID Extra args parsed from the proto message.
base64_proto_id LONG String id for raw proto message.
sequence_id LONG Sequence id of the trace packet.
has_invalid_elapsed_ts LONG Whether snapshot was recorded without elapsed timestamp.
surfaceflinger_layer. SurfaceFlinger layer

VIEW SurfaceFlinger layer.

Column Type Description
id ID The id of the row.
snapshot_id JOINID(surfaceflinger_layers_snapshot.id) The snapshot that generated this layer.
arg_set_id ARGSETID Extra args parsed from the proto message.
base64_proto_id LONG String id for raw proto message.
layer_id LONG Layer id.
layer_name STRING Layer name.
is_visible LONG Computed layer visibility.
parent LONG Parent layer id.
corner_radius_tl DOUBLE Layer corner radius top left.
corner_radius_tr DOUBLE Layer corner radius top right.
corner_radius_bl DOUBLE Layer corner radius bottom left.
corner_radius_br DOUBLE Layer corner radius bottom right.
hwc_composition_type LONG Hwc composition type.
is_hidden_by_policy LONG Is hidden by policy.
z_order_relative_of LONG Z parent.
is_missing_z_parent LONG Is Z parent missing.
layer_rect_id LONG Layer rect id.
input_rect_id LONG Input rect id.
surfaceflinger_transactions. SurfaceFlinger transactions

VIEW SurfaceFlinger transactions.

Column Type Description
id ID The id of the row.
ts TIMESTAMP Timestamp of the transactions commit.
arg_set_id ARGSETID Extra args parsed from the proto message.
base64_proto_id LONG String id for raw proto message.
vsync_id LONG Vsync id.
window_manager_shell_transitions. Window Manager Shell Transitions

VIEW Window Manager Shell Transitions.

Column Type Description
id ID The id of the row.
ts TIMESTAMP The timestamp the transition started playing.
transition_id LONG The id of the transition.
arg_set_id ARGSETID Extra args parsed from the proto message.
transition_type LONG The type of the transition.
send_time_ns LONG Transition send time.
dispatch_time_ns LONG Transition dispatch time.
duration_ns LONG Transition duration.
finish_time_ns LONG Transition finish time.
shell_abort_time_ns LONG Transition shell abort time.
wm_abort_time_ns LONG Transition wm abort time.
merge_time_ns LONG Transition merge time.
create_time_ns LONG Transition create time.
handler LONG Handler id.
status STRING Transition status.
flags LONG Transition flags.
start_transaction_id LONG Start transaction id.
finish_transaction_id LONG Finish transaction id.
window_manager_shell_transition_handlers. Window Manager Shell Transition Handlers

VIEW Window Manager Shell Transition Handlers.

Column Type Description
id ID The id of the row.
handler_id LONG The id of the handler.
handler_name STRING The name of the handler.
base64_proto_id LONG String id for raw proto message.
protolog. Protolog entries

VIEW Protolog entries.

Column Type Description
id ID The id of the row.
ts TIMESTAMP The timestamp the log message was sent.
level STRING The log level of the protolog message.
tag STRING The log tag of the protolog message.
message STRING The protolog message.
stacktrace STRING Stacktrace captured at the message's logpoint.
location STRING The location of the logpoint.
stack_sample_session. A sampling session: one row per data source instance of a stack profiler (a linux perf session, a StackSample packet stream,

TABLE A sampling session: one row per data source instance of a stack profiler (a linux perf session, a StackSample packet stream, ...).

Column Type Description
id ID Unique identifier for this session.
source STRING The profiler that produced this session's samples (e.g. "linux.perf").
timebase_unit STRING Unit of the quantity the profiler sampled on: the session's primary (timebase) counter (e.g. "ns", "cycles", "instructions", "count"). NULL if unknown.
cmdline STRING Command line used to collect the data, if known.
stack_sample_async_context. Stackful asynchronous execution contexts referenced by task contexts

TABLE Stackful asynchronous execution contexts referenced by task contexts.

Column Type Description
id ID Unique identifier for this asynchronous context.
name STRING Human-readable name of the context.
kind STRING Kind of context, e.g. "goroutine", "fiber" or "coroutine".
parent_id JOINID(stack_sample_async_context.id) Structural parent of this asynchronous context, if any.
stack_sample_task_context. Tasks to which stack samples are attributed

TABLE Tasks to which stack samples are attributed. A task can identify an OS process, an OS thread, a stackful asynchronous context, or a combination.

Column Type Description
id ID Unique identifier for this task context.
upid JOINID(process.id) Process the sample is attributed to, if known.
utid JOINID(thread.id) Thread the sample is attributed to, if known.
async_context_id JOINID(stack_sample_async_context.id) Stackful asynchronous context the sample is attributed to, if any.
stack_sample_execution_context. Execution states in which stack samples were captured

TABLE Execution states in which stack samples were captured.

Column Type Description
id ID Unique identifier for this execution context.
ucpu JOINID(cpu.id) Unique core the sample was taken on, if known.
cpu_mode STRING Privilege mode the sample was taken in (e.g. "user", "kernel").
stack_sample. Callstack samples from all profiler sources (linux perf, chrome, macOS instruments, the StackSample packet, ...): every profiler sample which captured a callstack

VIEW Callstack samples from all profiler sources (linux perf, chrome, macOS instruments, the StackSample packet, ...): every profiler sample which captured a callstack. The underlying storage also holds samples without callstacks (e.g. perf counter-only samples); those remain visible through per-source views such as perf_sample.

Column Type Description
id ID Unique identifier for this sample.
ts TIMESTAMP Timestamp of the sample.
source STRING The profiler that produced the sample (e.g. "linux.perf", "chrome", "instruments").
task_context_id JOINID(stack_sample_task_context.id) Process, thread and/or stackful asynchronous context this sample is attributed to, if known.
execution_context_id JOINID(stack_sample_execution_context.id) CPU and privilege mode in which this sample was captured, if known.
callsite_id JOINID(stack_profile_callsite.id) The captured callstack.
session_id JOINID(stack_sample_session.id) The sampling session this sample came from, if known.
stack_sample_counter_track. Counter tracks whose values are associated with stack samples

TABLE Counter tracks whose values are associated with stack samples. A track is a counter instance within one sampling session and can optionally be scoped to a CPU.

Column Type Description
id ID(track.id) Unique identifier for this counter track.
name STRING Name of the counter.
type STRING Type of the underlying track.
parent_id JOINID(track.id) Parent track, if any.
source_arg_set_id ARGSETID Args describing the source of the track.
machine_id JOINID(machine.id) Machine identifier.
unit STRING Unit of the counter values.
description STRING Human-readable description, if present.
session_id JOINID(stack_sample_session.id) Sampling session this counter belongs to.
cpu LONG CPU this counter instance is scoped to, if any.
is_timebase BOOL Whether this counter is the sampling timebase for the session.
stack_sample_counter. Counter values recorded at a stack sample point

VIEW Counter values recorded at a stack sample point. A sample can have one primary timebase counter and any number of follower counters.

Column Type Description
id ID(counter.id) Unique identifier for this counter value.
stack_sample_id JOINID(stack_sample.id) Stack sample this value was recorded with.
track_id JOINID(stack_sample_counter_track.id) Counter instance this value belongs to.
value DOUBLE Counter value recorded at the sample point.
track. Tracks are a fundamental concept in trace processor and represent a "timeline" for events of the same type and with the same context

VIEW Tracks are a fundamental concept in trace processor and represent a "timeline" for events of the same type and with the same context. See https://perfetto.dev/docs/analysis/trace-processor#tracks for a more detailed explanation, with examples.

Column Type Description
id ID Unique identifier for this track. Identical to |track_id|, prefer using |track_id| instead.
name STRING Name of the track; can be null for some types of tracks (e.g. thread tracks).
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
dimension_arg_set_id ARGSETID The dimensions of the track which uniquely identify the track within a given type. Join with the args table or use the EXTRACT_ARG helper function to expand the args.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Generic key-value pairs containing extra information about the track. Join with the args table or use the EXTRACT_ARG helper function to expand the args.
machine_id JOINID(machine.id) Machine identifier
track_group_id LONG An opaque key indicating that this track belongs to a group of tracks which are "conceptually" the same track. Tracks in trace processor don't allow overlapping events to allow for easy analysis (i.e. SQL window functions, SPAN JOIN and other similar operators). However, in visualization settings (e.g. the UI), the distinction doesn't matter and all tracks with the same track_group_id should be merged together into a single logical "UI track".
thread_track. Tracks which are associated to a single thread

TABLE Tracks which are associated to a single thread.

Column Type Description
id ID(track.id) Unique identifier for this thread track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
utid JOINID(thread.id) The utid that the track is associated with.
process_track. Tracks which are associated to a single process

TABLE Tracks which are associated to a single process.

Column Type Description
id ID(track.id) Unique identifier for this process track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
upid JOINID(process.id) The upid that the track is associated with.
cpu_track. Tracks which are associated to a single CPU

TABLE Tracks which are associated to a single CPU.

Column Type Description
id ID(track.id) Unique identifier for this cpu track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
cpu LONG The CPU that the track is associated with.
gpu_track. Table containing tracks which are loosely tied to a GPU

TABLE Table containing tracks which are loosely tied to a GPU.

NOTE: this table is deprecated due to inconsistency of it's design with other track tables (e.g. not having a GPU column, mixing a bunch of different tracks which are barely related). Please use the track table directly instead.

Column Type Description
id ID(track.id) Unique identifier for this cpu track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
dimension_arg_set_id ARGSETID The dimensions of the track which uniquely identify the track within a given type.
machine_id JOINID(machine.id) Machine identifier
scope STRING The source of the track. Deprecated.
description STRING The description for the track.
context_id LONG The context id for the GPU this track is associated to.
ftrace_event. Contains all the ftrace events in the trace

VIEW Contains all the ftrace events in the trace. This table exists only for debugging purposes and should not be relied on in production usecases (i.e. metrics, standard library etc). Note also that this table might be empty if raw ftrace parsing has been disabled.

Column Type Description
id ID Unique identifier for this ftrace event.
ts TIMESTAMP The timestamp of this event.
name STRING The ftrace event name.
cpu LONG The CPU this event was emitted on (meaningful only in single machine traces). For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
utid JOINID(thread.id) The thread this event was emitted on.
arg_set_id ARGSETID The set of key/value pairs associated with this event.
common_flags LONG Ftrace event flags for this event. Currently only emitted for sched_waking events.
ucpu LONG The unique CPU identifier that this event was emitted on.
raw. This table is deprecated

VIEW This table is deprecated. Use ftrace_event instead which contains the same rows; this table is simply a (badly named) alias.

Column Type Description
id ID Unique identifier for this raw event.
ts TIMESTAMP The timestamp of this event.
name STRING The name of the event. For ftrace events, this will be the ftrace event name.
cpu LONG The CPU this event was emitted on (meaningful only in single machine traces). For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
utid JOINID(thread.id) The thread this event was emitted on.
arg_set_id ARGSETID The set of key/value pairs associated with this event.
common_flags LONG Ftrace event flags for this event. Currently only emitted for sched_waking events.
ucpu LONG The unique CPU identifier that this event was emitted on.
frame_slice. Table containing graphics frame events on Android

VIEW Table containing graphics frame events on Android.

Column Type Description
id ID(slice.id) Alias of slice.id.
ts TIMESTAMP Alias of slice.ts.
dur DURATION Alias of slice.dur.
track_id JOINID(track.id) Alias of slice.track_id.
category STRING Alias of slice.category.
name STRING Alias of slice.name.
depth LONG Alias of slice.depth.
parent_id JOINID(frame_slice.id) Alias of slice.parent_id.
arg_set_id LONG Alias of slice.arg_set_id.
layer_name STRING Name of the graphics layer this slice happened on.
frame_number LONG The frame number this slice is associated with.
queue_to_acquire_time LONG The time between queue and acquire for this buffer and layer.
acquire_to_latch_time LONG The time between acquire and latch for this buffer and layer.
latch_to_present_time LONG The time between latch and present for this buffer and layer.
gpu_slice. Table containing graphics frame events on Android

VIEW Table containing graphics frame events on Android.

Column Type Description
id ID(slice.id) Alias of slice.id.
ts TIMESTAMP Alias of slice.ts.
dur DURATION Alias of slice.dur.
track_id JOINID(track.id) Alias of slice.track_id.
category STRING Alias of slice.category.
name STRING Alias of slice.name.
depth LONG Alias of slice.depth.
parent_id JOINID(frame_slice.id) Alias of slice.parent_id.
arg_set_id LONG Alias of slice.arg_set_id.
context_id LONG Context ID.
render_target LONG Render target ID.
render_target_name STRING The name of the render target.
render_pass LONG Render pass ID.
render_pass_name STRING The name of the render pass.
command_buffer LONG The command buffer ID.
command_buffer_name STRING The name of the command buffer.
frame_id LONG Frame id.
submission_id LONG The submission id.
hw_queue_id LONG The hardware queue id.
upid JOINID(process.id) The id of the process.
render_subpasses STRING Render subpasses.
render_stage_category LONG Render stage category (0=OTHER, 1=GRAPHICS, 2=COMPUTE).
expected_frame_timeline_slice. This table contains information on the expected timeline of either a display frame or a surface frame

TABLE This table contains information on the expected timeline of either a display frame or a surface frame.

Column Type Description
id ID(slice.id) Alias of slice.id.
ts TIMESTAMP Alias of slice.ts.
dur DURATION Alias of slice.dur.
track_id JOINID(track.id) Alias of slice.track_id.
category STRING Alias of slice.category.
name STRING Alias of slice.name.
depth LONG Alias of slice.depth.
parent_id JOINID(frame_slice.id) Alias of slice.parent_id.
arg_set_id LONG Alias of slice.arg_set_id.
display_frame_token LONG Display frame token (vsync id).
surface_frame_token LONG Surface frame token (vsync id), null if this is a display frame.
upid JOINID(process.id) Unique process id of the app that generates the surface frame.
layer_name STRING Layer name if this is a surface frame.
actual_frame_timeline_slice. This table contains information on the actual timeline and additional analysis related to the performance of either a display frame or a surface frame

TABLE This table contains information on the actual timeline and additional analysis related to the performance of either a display frame or a surface frame.

Column Type Description
id ID(slice.id) Alias of slice.id.
ts TIMESTAMP Alias of slice.ts.
dur DURATION Alias of slice.dur.
track_id JOINID(track.id) Alias of slice.track_id.
category STRING Alias of slice.category.
name STRING Alias of slice.name.
depth LONG Alias of slice.depth.
parent_id JOINID(frame_slice.id) Alias of slice.parent_id.
arg_set_id LONG Alias of slice.arg_set_id.
display_frame_token LONG Display frame token (vsync id).
upid JOINID(process.id) Surface frame token (vsync id), null if this is a display frame.
surface_frame_token LONG Unique process id of the app that generates the surface frame.
layer_name STRING Layer name if this is a surface frame.
present_type STRING Frame's present type (eg. on time / early / late).
on_time_finish LONG Whether the frame finishes on time.
gpu_composition LONG Whether the frame used gpu composition.
jank_type STRING Specify the jank types for this frame if there's jank, or none if no jank occurred.
jank_severity_type STRING Severity of the jank: none if no jank.
prediction_type STRING Frame's prediction type (eg. valid / expired).
jank_tag STRING Jank tag based on jank type, used for slice visualization.
jank_tag_experimental STRING Jank tag (experimental) based on jank type, used for slice visualization.
jank_score DOUBLE Jank severity score.
latched_unsignaled_count LONG The number of surfaceframes that were latched unsignaled and displayed without jank.
addressable_unsignaled_latch_count LONG The number of surfaceframes that their fence was unsignaled at the time of latch, but signaled on time for vsync.
latched_fence_state STRING State of the fence when a SF tried to latch the buffer in the first attempt.
heap_graph_class. Stores class information within ART heap graphs

VIEW Stores class information within ART heap graphs. It represents Java/Kotlin classes that exist in the heap, including their names, inheritance relationships, and loading context.

Column Type Description
id ID Unique identifier for this heap graph class.
name STRING (potentially obfuscated) name of the class.
deobfuscated_name STRING If class name was obfuscated and deobfuscation map for it provided, the deobfuscated name.
location STRING the APK / Dex / JAR file the class is contained in.
superclass_id JOINID(heap_graph_class.id) The superclass of this class.
classloader_id LONG The classloader that loaded this class.
kind STRING The kind of class.
heap_graph_object. The objects on the Dalvik heap

VIEW The objects on the Dalvik heap.

All rows with the same (upid, graph_sample_ts) are one dump.

Column Type Description
id ID Unique identifier for this heap graph object.
upid JOINID(process.id) Unique PID of the target.
graph_sample_ts TIMESTAMP Timestamp this dump was taken at.
self_size LONG Size this object uses on the Java Heap.
native_size LONG Approximate amount of native memory used by this object, as reported by libcore.util.NativeAllocationRegistry.size.
reference_set_id JOINID(heap_graph_reference.reference_set_id) Join key with heap_graph_reference containing all objects referred in this object's fields.
reachable BOOL Bool whether this object is reachable from a GC root. If false, this object is uncollected garbage.
heap_type STRING The type of ART heap this object is stored on (app, zygote, boot image)
type_id JOINID(heap_graph_class.id) Class this object is an instance of.
root_type STRING If not NULL, this object is a GC root.
root_distance LONG Distance from the root object.
object_data_id LONG Optional ID into heap_graph_object_data for HPROF data.
heap_graph_object_data. HPROF-specific data for heap graph objects

VIEW HPROF-specific data for heap graph objects.

Contains decoded string content and primitive array blob references. Only populated for HPROF (ART) heap dumps, not for proto heap graphs. Linked from heap_graph_object.object_data_id.

Column Type Description
id ID Unique identifier for this data entry.
field_set_id JOINID(heap_graph_primitive.field_set_id) Join key with heap_graph_primitive containing primitive field values.
value_string STRING Decoded string value for java.lang.String instances.
array_element_type STRING For primitive array objects, the element type (boolean, byte, char, short, int, long, float, double).
array_element_count LONG For primitive array objects, the number of elements.
array_data_id LONG For primitive array objects, opaque ID to retrieve raw element bytes via __intrinsic_heap_graph_array().
array_data_hash LONG For primitive array objects, a 64-bit content hash of the raw element bytes. Two arrays with the same hash have identical content.
heap_graph_reference. Many-to-many mapping between heap_graph_object

VIEW Many-to-many mapping between heap_graph_object.

This associates the object with given reference_set_id with the objects that are referred to by its fields.

Column Type Description
id ID Unique identifier for this heap graph reference.
reference_set_id JOINID(heap_graph_object.reference_set_id) Join key to heap_graph_object reference_set_id.
owner_id JOINID(heap_graph_object.id) Id of object that has this reference_set_id.
owned_id JOINID(heap_graph_object.id) Id of object that is referred to.
field_name STRING The field that refers to the object. E.g. Foo.name.
field_type_name STRING The static type of the field. E.g. java.lang.String.
deobfuscated_field_name STRING The deobfuscated name, if field_name was obfuscated and a deobfuscation mapping was provided for it.
heap_graph_primitive. Primitive field values for heap graph objects

VIEW Primitive field values for heap graph objects.

This associates the object with given field_set_id with its primitive field values (for instances).

Column Type Description
id ID Unique identifier for this field entry.
field_set_id JOINID(heap_graph_object_data.field_set_id) Join key to heap_graph_object_data.field_set_id.
field_name STRING The field name. E.g. Foo.count.
field_type STRING The primitive type. E.g. int, boolean, float.
bool_value LONG Value for boolean fields (0 or 1).
byte_value LONG Value for byte fields.
char_value LONG Value for char fields (as integer codepoint).
short_value LONG Value for short fields.
int_value LONG Value for int fields.
long_value LONG Value for long fields.
float_value DOUBLE Value for float fields.
double_value DOUBLE Value for double fields.
memory_snapshot. Table with memory snapshots

VIEW Table with memory snapshots.

Column Type Description
id ID Unique identifier for this snapshot.
timestamp TIMESTAMP Time of the snapshot.
track_id JOINID(track.id) Track of this snapshot.
detail_level STRING Detail level of this snapshot.
process_memory_snapshot. Table with process memory snapshots

VIEW Table with process memory snapshots.

Column Type Description
id ID Unique identifier for this snapshot.
snapshot_id JOINID(memory_snapshot.id) Snapshot ID for this snapshot.
upid JOINID(process.id) Process for this snapshot.
memory_snapshot_node. Table with memory snapshot nodes

VIEW Table with memory snapshot nodes.

Column Type Description
id ID Unique identifier for this node.
process_snapshot_id JOINID(process_memory_snapshot.id) Process snapshot ID for to this node.
parent_node_id JOINID(memory_snapshot_node.id) Parent node for this node, optional.
path STRING Path for this node.
size LONG Size of the memory allocated to this node.
effective_size LONG Effective size used by this node.
arg_set_id ARGSETID Additional args of the node.
memory_snapshot_edge. Table with memory snapshot edge

VIEW

Column Type Description
id ID Unique identifier for this edge.
source_node_id JOINID(memory_snapshot_node.id) Source node for this edge.
target_node_id JOINID(memory_snapshot_node.id) Target node for this edge.
importance LONG Importance for this edge.
heap_graph. A list of heap graphs (heap dumps) captured during the trace

VIEW A list of heap graphs (heap dumps) captured during the trace.

Column Type Description
id ID Unique identifier for this heap graph instance.
ts TIMESTAMP Timestamp of the heap dump in nanoseconds.
upid JOINID(process.upid) Unique PID of the target.
dump_reason STRING Reason why the heap graph was dumped (e.g. OOME, periodic, manual).
heap_size LONG Total bytes allocated in the heap as reported by the VM.
truncated BOOL True if the heap dump was incomplete (missing packets).
heap_profile. A list of heap profiles (heapprofd dumps) captured during the trace

VIEW A list of heap profiles (heapprofd dumps) captured during the trace. Each row describes the profiling window a single dump represents for a single heap. Joinable with heap_profile_allocation via (upid, heap_profile_allocation.ts = ts_end).

Column Type Description
id ID Unique identifier for this heap profile instance.
ts TIMESTAMP Timestamp of the start of the profiling window in nanoseconds.
ts_end TIMESTAMP Timestamp of the end of the profiling window (i.e. when the dump was taken) in nanoseconds.
dur DURATION Duration of the profiling window in nanoseconds (ts_end - ts).
upid JOINID(process.upid) Unique PID of the target.
heap_name STRING Name of the heap this dump is for (e.g. "libc.malloc" for the native heap), or NULL if the producer did not report one.
heap_graph_thread_callsite. Callstack profiles of threads at the time the heap graph was collected

VIEW Callstack profiles of threads at the time the heap graph was collected.

Column Type Description
id ID Unique identifier for this mapping row.
heap_graph_id JOINID(heap_graph.id) The heap graph instance.
utid JOINID(thread.id) The thread ID.
callsite_id JOINID(stack_profile_callsite.id) The callsite of the leaf frame of the stacktrace.
counter_track. Tracks containing counter-like events

VIEW Tracks containing counter-like events.

Column Type Description
id ID(track.id) Unique identifier for this cpu counter track.
name STRING Name of the track.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
dimension_arg_set_id ARGSETID The dimensions of the track which uniquely identify the track within a given type.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
cpu_counter_track. Tracks containing counter-like events associated to a CPU

TABLE Tracks containing counter-like events associated to a CPU.

Column Type Description
id ID(track.id) Unique identifier for this cpu counter track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
cpu LONG The CPU that the track is associated with.
gpu_counter_track. Tracks containing counter-like events associated to a GPU

TABLE Tracks containing counter-like events associated to a GPU.

Column Type Description
id ID(track.id) Unique identifier for this gpu counter track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
ugpu LONG The unique GPU identifier (ugpu) from the gpu table.
gpu_id LONG The raw GPU number.
process_counter_track. Tracks containing counter-like events associated to a process

TABLE Tracks containing counter-like events associated to a process.

Column Type Description
id ID(track.id) Unique identifier for this process counter track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
upid LONG The upid of the process that the track is associated with.
thread_counter_track. Tracks containing counter-like events associated to a thread

TABLE Tracks containing counter-like events associated to a thread.

Column Type Description
id ID(track.id) Unique identifier for this thread counter track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id JOINID(track.id) Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
utid LONG The utid of the thread that the track is associated with.
perf_counter_track. Tracks containing counter-like events collected from Linux perf

TABLE Tracks containing counter-like events collected from Linux perf.

Column Type Description
id ID(track.id) Unique identifier for this perf counter track.
name STRING Name of the track.
type STRING The type of a track indicates the type of data the track contains. Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.
parent_id JOINID(track.id) The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API.
source_arg_set_id ARGSETID Args for this track which store information about "source" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.
machine_id JOINID(machine.id) Machine identifier
unit STRING The units of the counter. This column is rarely filled.
description STRING The description for this track. For debugging purposes only.
perf_session_id LONG The id of the perf session this counter was captured on.
cpu LONG The CPU the counter is associated with. Can be null if the counter is not associated with any CPU.
utid JOINID(thread.id) The thread the counter is associated with. Can be null if the counter is not associated with any thread.
is_timebase BOOL Whether this counter is the sampling timebase for the session.
counters. Alias of the `counter` table

VIEW Alias of the counter table.

Column Type Description
id ID Alias of counter.id.
ts TIMESTAMP Alias of counter.ts.
track_id JOINID(track.id) Alias of counter.track_id.
value DOUBLE Alias of counter.value.
arg_set_id LONG Alias of counter.arg_set_id.
name STRING Legacy column, should no longer be used.
unit STRING Legacy column, should no longer be used.
cpu. Contains information about the CPUs on the device this trace was taken on

VIEW Contains information about the CPUs on the device this trace was taken on.

Column Type Description
id ID Unique identifier for this CPU. Identical to |ucpu|, prefer using |ucpu| instead.
ucpu ID Unique identifier for this CPU. Isn't equal to |cpu| for remote machines and is equal to |cpu| for the host machine.
cpu LONG The 0-based CPU core identifier.
cluster_id LONG The cluster id is shared by CPUs in the same cluster.
processor STRING A string describing this core.
machine_id JOINID(machine.id) Machine identifier
capacity LONG Capacity of a CPU of a device, a metric which indicates the relative performance of a CPU on a device For details see: https://www.kernel.org/doc/Documentation/devicetree/bindings/arm/cpu-capacity.txt
arg_set_id ARGSETID Extra key/value pairs associated with this cpu.
cpu_available_frequencies. Contains the frequency values that the CPUs on the device are capable of running at

VIEW Contains the frequency values that the CPUs on the device are capable of running at.

Column Type Description
id ID Unique identifier for this cpu frequency.
cpu LONG The CPU for this frequency, meaningful only in single machine traces. For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
freq LONG CPU frequency in KHz.
ucpu LONG The CPU that the slice executed on (meaningful only in single machine traces). For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
sched. Contains scheduling slices with kernel thread scheduling information

VIEW Contains scheduling slices with kernel thread scheduling information. These slices are collected when the Linux "ftrace" data source is used with the "sched/switch" and "sched/wakeup*" events enabled.

The rows in this view will always have a matching row in the |thread_state| table with |thread_state.state| = 'Running'

Column Type Description
id ID Unique identifier for this scheduling slice.
ts TIMESTAMP The timestamp at the start of the slice.
dur DURATION The duration of the slice.
cpu LONG The CPU that the slice executed on (meaningful only in single machine traces). For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
utid JOINID(thread.id) The thread's unique id in the trace.
end_state STRING A string representing the scheduling state of the kernel thread at the end of the slice. The individual characters in the string mean the following: R (runnable), S (awaiting a wakeup), D (in an uninterruptible sleep), T (suspended), t (being traced), X (exiting), P (parked), W (waking), I (idle), N (not contributing to the load average), K (wakeable on fatal signals) and Z (zombie, awaiting cleanup).
priority LONG The kernel priority that the thread ran at.
ucpu LONG The unique CPU identifier that the slice executed on.
ts_end LONG Legacy column, should no longer be used.
sched_slice. Alias of `sched`

VIEW Alias of sched. Prefer using sched instead.

Column Type Description
id ID Alias of sched.id.
ts TIMESTAMP Alias of sched.ts.
dur DURATION Alias of sched.dur.
cpu LONG Alias of sched.cpu.
utid JOINID(thread.id) Alias of sched.utid.
end_state STRING Alias of sched.end_state.
priority LONG Alias of sched.priority.
ucpu LONG Alias of sched.ucpu.
thread_state. This table contains the scheduling state of every thread on the system during the trace

VIEW This table contains the scheduling state of every thread on the system during the trace.

The rows in this table which have |state| = 'Running', will have a corresponding row in the |sched_slice| table.

Column Type Description
id ID Unique identifier for this thread state.
ts TIMESTAMP The timestamp at the start of the slice.
dur DURATION The duration of the slice.
cpu LONG The CPU that the thread executed on (meaningful only in single machine traces). For multi-machine, join with the cpu table on ucpu to get the CPU identifier of each machine.
utid JOINID(thread.id) The thread's unique id in the trace.
state STRING The scheduling state of the thread. Can be "Running" or any of the states described in |sched_slice.end_state|.
io_wait LONG Indicates whether this thread was blocked on IO.
blocked_function STRING The function in the kernel this thread was blocked on.
waker_utid JOINID(thread.id) The unique thread id of the thread which caused a wakeup of this thread.
waker_id JOINID(thread_state.id) The unique thread state id which caused a wakeup of this thread.
irq_context LONG Whether the wakeup was from interrupt context or process context.
ucpu JOINID(cpu.id) The unique CPU identifier that the thread executed on.
gpu. Contains information about the GPUs on the device this trace was taken on

VIEW Contains information about the GPUs on the device this trace was taken on.

Column Type Description
id ID Unique identifier for this GPU. Identical to |ugpu|, prefer using |ugpu| instead.
ugpu ID Unique identifier for this GPU. Isn't equal to |gpu| for remote machines and is equal to |gpu| for the host machine.
gpu LONG The 0-based GPU index.
name STRING GPU name (e.g., "NVIDIA A100", "Adreno 740").
vendor STRING GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
model STRING GPU model/product identifier.
architecture STRING GPU architecture (e.g., "Ampere", "RDNA 3").
uuid STRING UUID of the GPU (16-byte device UUID, hex-encoded).
pci_bdf STRING PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
machine_id JOINID(machine.id) Machine identifier
arg_set_id ARGSETID Extra key/value pairs associated with this GPU.
trace_metrics. Lists all metrics built-into trace processor

VIEW Lists all metrics built-into trace processor.

Column Type Description
name STRING The name of the metric.
trace_bounds. Definition of `trace_bounds` table

VIEW Definition of trace_bounds table. The values are being filled by Trace Processor when parsing the trace. It is recommended to depend on the trace_start() and trace_end() functions rather than directly on trace_bounds.

Column Type Description
start_ts TIMESTAMP First ts in the trace.
end_ts TIMESTAMP End of the trace.

Functions

trace_start -> TIMESTAMP. Fetch start of the trace

Fetch start of the trace. Returns TIMESTAMP: Start of the trace.

trace_end -> TIMESTAMP. Fetch end of the trace

Fetch end of the trace. Returns TIMESTAMP: End of the trace.

trace_dur -> DURATION. Fetch duration of the trace

Fetch duration of the trace. Returns DURATION: Duration of the trace.

regexp -> BOOL. Returns whether a regular expression partially matches an input string

Returns whether a regular expression partially matches an input string. This two-argument overload is also used by the input REGEXP pattern operator and performs case-sensitive matching. Returns BOOL: Whether the pattern matches the input.

Argument Type Description
pattern STRING The regular expression pattern.
input STRING The input string to match against.
regexp -> BOOL. Returns whether a regular expression partially matches an input string

Returns whether a regular expression partially matches an input string. Returns BOOL: Whether the pattern matches the input.

Argument Type Description
pattern STRING The regular expression pattern.
input STRING The input string to match against.
flags STRING Matching flags. i enables case-insensitive matching and c enables case-sensitive matching. If both are present, the last one takes effect.
regexp_replace_simple -> STRING. Replaces all occurrences of a regular expression with a constant replacement string

Replaces all occurrences of a regular expression with a constant replacement string. Note that there is no way to substitute matching groups into the replacement, and all matching is case-sensitive. Returns STRING: The result.

Argument Type Description
input STRING The input string to match against.
regex STRING The matching regexp.
replacement STRING The replacement string to substitute in.
reverse -> STRING. Reverses a string

Reverses a string. Returns STRING: The reversed string.

Argument Type Description
input STRING The string to reverse.
base64_encode -> STRING. Encodes bytes into a base64 string

Encodes bytes into a base64 string. Returns STRING: The base64-encoded string.

Argument Type Description
input BYTES The bytes to encode.
base64_decode -> BYTES. Decodes a base64-encoded string into bytes

Decodes a base64-encoded string into bytes. Returns BYTES: The decoded bytes.

Argument Type Description
input STRING The base64-encoded string to decode.
demangle -> STRING. Demangles a C++ mangled symbol name

Demangles a C++ mangled symbol name. Returns STRING: The demangled symbol name, or NULL if demangling fails.

Argument Type Description
input STRING The mangled symbol name.
regexp_extract -> STRING. Extracts the first match of a regular expression from a string

Extracts the first match of a regular expression from a string. Returns STRING: The matched substring, or NULL if no match.

Argument Type Description
input STRING The input string to match against.
regex STRING The regular expression pattern.
unhex -> LONG. Converts a hex string (with optional 0x prefix) to an integer

Converts a hex string (with optional 0x prefix) to an integer. Returns LONG: The integer value.

Argument Type Description
input STRING The hex string to convert.
abs_time_str -> STRING. Converts a trace timestamp to an absolute ISO 8601 time string

Converts a trace timestamp to an absolute ISO 8601 time string. Returns STRING: The ISO 8601 formatted time string, or NULL if conversion fails.

Argument Type Description
ts LONG The trace timestamp (in nanoseconds).
to_monotonic -> LONG. Converts a trace timestamp to monotonic clock time

Converts a trace timestamp to monotonic clock time. Returns LONG: The monotonic clock timestamp, or NULL if conversion fails.

Argument Type Description
ts LONG The trace timestamp (in nanoseconds).
to_realtime -> LONG. Converts a trace timestamp to realtime clock time

Converts a trace timestamp to realtime clock time. Returns LONG: The realtime clock timestamp, or NULL if conversion fails.

Argument Type Description
ts LONG The trace timestamp (in nanoseconds).
to_timecode -> STRING. Converts a trace timestamp to a human-readable timecode (HH:MM:SS mmm uuu nnn)

Converts a trace timestamp to a human-readable timecode (HH:MM:SS mmm uuu nnn). Returns STRING: The formatted timecode string.

Argument Type Description
ts LONG The trace timestamp (in nanoseconds).
ln -> DOUBLE. Computes the natural logarithm of a number

Computes the natural logarithm of a number. Returns DOUBLE: The natural logarithm, or NULL if input is non-positive or NULL.

Argument Type Description
input DOUBLE The input value.
exp -> DOUBLE. Computes e raised to the power of a number

Computes e raised to the power of a number. Returns DOUBLE: The result of e^input, or NULL if input is NULL.

Argument Type Description
input DOUBLE The exponent value.
sqrt -> DOUBLE. Computes the square root of a number

Computes the square root of a number. Returns DOUBLE: The square root, or NULL if input is NULL.

Argument Type Description
input DOUBLE The input value.
slice_is_ancestor -> BOOL. Given two slice ids, returns whether the first is an ancestor of the second

Given two slice ids, returns whether the first is an ancestor of the second. Returns BOOL: Whether ancestor_id slice is an ancestor of descendant_id.

Argument Type Description
ancestor_id LONG Id of the potential ancestor slice.
descendant_id LONG Id of the potential descendant slice.

Macros

cast_int. Casts |value| to INT

Casts |value| to INT. Returns: Expr,

Argument Type Description
value Expr Query or subquery that will be cast.
cast_double. Casts |value| to DOUBLE

Casts |value| to DOUBLE. Returns: Expr,

Argument Type Description
value Expr Query or subquery that will be cast.
cast_string. Casts |value| to STRING

Casts |value| to STRING. Returns: Expr,

Argument Type Description
value Expr Query or subquery that will be cast.

Package: chrome

chrome.android_input

Module Dependencies

graph TD chrome_android_input["chrome.android_input"] class chrome_android_input currentModule slices_with_context["slices.with_context"] click slices_with_context "#slices-with_context" _self slices_with_context --> chrome_android_input chrome_chrome_scrolls["chrome.chrome_scrolls"] click chrome_chrome_scrolls "#chrome-chrome_scrolls" _self chrome_android_input --> chrome_chrome_scrolls chrome_input["chrome.input"] click chrome_input "#chrome-input" _self chrome_android_input --> chrome_input classDef currentModule fill:#e1f5ff,stroke:#01579b,stroke-width:2px

Views/Tables

chrome_deliver_android_input_event. DeliverInputEvent is the third step in the input pipeline

TABLE DeliverInputEvent is the third step in the input pipeline. It is responsible for routing the input events within browser process.

Column Type Description
ts TIMESTAMP Timestamp.
dur DURATION Touch move processing duration.
utid LONG Utid.
android_input_id STRING Input id (assigned by the system, used by InputReader and InputDispatcher)
chrome_android_input. Collects information about input reader, input dispatcher and DeliverInputEvent steps for the given Android input id

TABLE Collects information about input reader, input dispatcher and DeliverInputEvent steps for the given Android input id.

Column Type Description
android_input_id STRING Input id.
input_reader_processing_start_ts TIMESTAMP Input reader step start timestamp.
input_reader_processing_end_ts TIMESTAMP Input reader step end timestamp.
input_reader_utid LONG Input reader step utid.
input_dispatcher_processing_start_ts TIMESTAMP Input dispatcher step start timestamp.
input_dispatcher_processing_end_ts TIMESTAMP Input dispatcher step end timestamp.
input_dispatcher_utid LONG Input dispatcher step utid.
deliver_input_event_start_ts TIMESTAMP DeliverInputEvent step start timestamp.
deliver_input_event_end_ts TIMESTAMP DeliverInputEvent step end timestamp.
deliver_input_event_utid LONG DeliverInputEvent step utid.

chrome.chrome_scrolls

Module Dependencies

graph TD chrome_chrome_scrolls["chrome.chrome_scrolls"] class chrome_chrome_scrolls currentModule chrome_android_input["chrome.android_input"] click chrome_android_input "#chrome-android_input" _self chrome_android_input --> chrome_chrome_scrolls chrome_event_latency["chrome.event_latency"] click chrome_event_latency "#chrome-event_latency" _self chrome_event_latency --> chrome_chrome_scrolls chrome_graphics_pipeline["chrome.graphics_pipeline"] click chrome_graphics_pipeline "#chrome-graphics_pipeline" _self chrome_graphics_pipeline --> chrome_chrome_scrolls chrome_input["chrome.input"] click chrome_input "#chrome-input" _self chrome_input --> chrome_chrome_scrolls chrome_scroll_jank_scroll_offsets["chrome.scroll_jank.scroll_offsets"] click chrome_scroll_jank_scroll_offsets "#chrome-scroll_jank-scroll_offsets" _self chrome_scroll_jank_scroll_offsets --> chrome_chrome_scrolls chrome_chrome_scrolls_v4["chrome.chrome_scrolls_v4"] click chrome_chrome_scrolls_v4 "#chrome-chrome_scrolls_v4" _self chrome_chrome_scrolls --> chrome_chrome_scrolls_v4 chrome_scroll_jank_scroll_jank_intervals["chrome.scroll_jank.scroll_jank_intervals"] click chrome_scroll_jank_scroll_jank_intervals "#chrome-scroll_jank-scroll_jank_intervals" _self chrome_chrome_scrolls --> chrome_scroll_jank_scroll_jank_intervals chrome_scroll_jank_tagging["chrome.scroll_jank_tagging"] click chrome_scroll_jank_tagging "#chrome-scroll_jank_tagging" _self chrome_chrome_scrolls --> chrome_scroll_jank_tagging classDef currentModule fill:#e1f5ff,stroke:#01579b,stroke-width:2px

Views/Tables

chrome_scroll_update_refs. Ties together input (`LatencyInfo.Flow`) and frame (`Graphics.Pipeline`) trace events

TABLE Ties together input (LatencyInfo.Flow) and frame (Graphics.Pipeline) trace events. Only covers input events of the GESTURE_SCROLL_UPDATE_EVENT type.

Column Type Description
scroll_update_latency_id LONG Id of the Chrome input pipeline (LatencyInfo.Flow).
touch_move_latency_id LONG Id of the touch move input corresponding to this scroll update.
presentation_latency_id LONG Id of the EventLatency of the frame that the input was presented in.
surface_frame_id LONG Id of the frame pipeline (Graphics.Pipeline), pre-surface aggregation.
display_trace_id LONG Id of the frame pipeline (Graphics.Pipeline), post-surface aggregation.
chrome_scroll_update_input_pipeline. Timestamps and durations for the input-associated (before coalescing inputs into a frame) stages of a scroll

TABLE Timestamps and durations for the input-associated (before coalescing inputs into a frame) stages of a scroll.

Column Type Description
id LONG Id of the LatencyInfo.Flow slices corresponding to this scroll event.
scroll_id LONG Id of the scroll this scroll update belongs to.
presented_in_frame_id LONG Id of the frame that this input was presented in. Can be joined with chrome_scroll_update_frame_pipeline.id.
is_presented BOOL Whether this input event was presented.
is_janky BOOL Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric. This comes directly from perfetto.protos.EventLatency.is_janky_scrolled_frame.
is_inertial BOOL Whether the corresponding scroll is inertial (fling). If this is true, "generation" and "touch_move" related timestamps and durations will be null.
is_first_scroll_update_in_scroll BOOL Whether this is the first update in a scroll. First scroll update can never be janky.
is_first_scroll_update_in_frame BOOL Whether this is the first input that was presented in frame presented_in_frame_id.
generation_ts TIMESTAMP Input generation timestamp (from the Android system).
input_reader_processing_end_ts TIMESTAMP End timestamp for the InputReader step (see android_input.sql). Only populated when atrace 'input' category is enabled.
input_dispatcher_processing_end_ts TIMESTAMP End timestamp for the InputDispatcher step (see android_input.sql). Only populated when atrace 'input' category is enabled.
generation_to_browser_main_dur DURATION Duration from input generation to when the browser received the input.
browser_utid LONG Utid for the browser main thread.
touch_move_received_slice_id LONG Slice id for the STEP_SEND_INPUT_EVENT_UI slice for the touch move.
touch_move_received_ts TIMESTAMP Timestamp for the STEP_SEND_INPUT_EVENT_UI slice for the touch move.
touch_move_processing_dur DURATION Duration for processing a TouchMove event.
scroll_update_created_slice_id LONG Slice id for the STEP_SEND_INPUT_EVENT_UI slice for the gesture scroll.
scroll_update_created_ts TIMESTAMP Timestamp for the STEP_SEND_INPUT_EVENT_UI slice for the gesture scroll.
scroll_update_processing_dur DURATION Duration for creating a GestureScrollUpdate from a TouchMove event.
scroll_update_created_end_ts TIMESTAMP End timestamp for the STEP_SEND_INPUT_EVENT_UI slice for the above.
browser_to_compositor_delay_dur DURATION Duration between the browser and compositor dispatch.
compositor_utid LONG Utid for the renderer compositor thread.
compositor_dispatch_slice_id LONG Slice id for the STEP_HANDLE_INPUT_EVENT_IMPL slice.
compositor_dispatch_ts TIMESTAMP Timestamp for the STEP_HANDLE_INPUT_EVENT_IMPL slice or the containing task (if available).
compositor_dispatch_dur DURATION Duration for the compositor dispatch itself.
compositor_dispatch_end_ts TIMESTAMP End timestamp for the STEP_HANDLE_INPUT_EVENT_IMPL slice.
compositor_dispatch_to_coalesced_input_handled_dur DURATION Duration between compositor dispatch and coalescing input.
compositor_coalesced_input_handled_slice_id LONG Slice id for the STEP_DID_HANDLE_INPUT_AND_OVERSCROLL slice.
compositor_coalesced_input_handled_ts TIMESTAMP Timestamp for the STEP_DID_HANDLE_INPUT_AND_OVERSCROLL slice.
compositor_coalesced_input_handled_dur DURATION Duration for the STEP_DID_HANDLE_INPUT_AND_OVERSCROLL slice.
compositor_coalesced_input_handled_end_ts TIMESTAMP End timestamp for the STEP_DID_HANDLE_INPUT_AND_OVERSCROLL slice.
chrome_scroll_update_frame_pipeline. Timestamps and durations for the frame-associated (after coalescing inputs into a frame) stages of a scroll

TABLE Timestamps and durations for the frame-associated (after coalescing inputs into a frame) stages of a scroll.

Column Type Description
id LONG Id of the LatencyInfo.Flow slices corresponding to this scroll event.
display_trace_id LONG Id of the aggregated frame this scroll update was presented in.
vsync_interval_ms DOUBLE Vsync interval (in milliseconds).
compositor_resample_slice_id LONG Slice id for the STEP_RESAMPLE_SCROLL_EVENTS slice.
compositor_resample_ts TIMESTAMP Timestamp for the STEP_RESAMPLE_SCROLL_EVENTS slice.
compositor_receive_begin_frame_ts TIMESTAMP Timestamp for the STEP_RECEIVE_BEGIN_FRAME slice or the containing task (if available).
compositor_generate_compositor_frame_slice_id LONG Slice id for the STEP_GENERATE_COMPOSITOR_FRAME slice.
compositor_generate_compositor_frame_ts TIMESTAMP Timestamp for the STEP_GENERATE_COMPOSITOR_FRAME slice or the containing task (if available).
compositor_generate_frame_to_submit_frame_dur DURATION Duration between generating and submitting the compositor frame.
compositor_submit_compositor_frame_slice_id LONG Slice id for the STEP_SUBMIT_COMPOSITOR_FRAME slice.
compositor_submit_compositor_frame_ts TIMESTAMP Timestamp for the STEP_SUBMIT_COMPOSITOR_FRAME slice.
compositor_submit_frame_dur DURATION Duration for submitting the compositor frame (to viz).
compositor_submit_compositor_frame_end_ts TIMESTAMP End timestamp for the STEP_SUBMIT_COMPOSITOR_FRAME slice.
compositor_to_viz_delay_dur DURATION Delay when a compositor frame is sent from the renderer to viz.
viz_compositor_utid LONG Utid for the viz compositor thread.
viz_receive_compositor_frame_slice_id LONG Slice id for the STEP_RECEIVE_COMPOSITOR_FRAME slice.
viz_receive_compositor_frame_ts TIMESTAMP Timestamp for the STEP_RECEIVE_COMPOSITOR_FRAME slice or the containing task (if available).
viz_receive_compositor_frame_dur DURATION Duration of the viz work done on receiving the compositor frame.
viz_receive_compositor_frame_end_ts TIMESTAMP End timestamp for the STEP_RECEIVE_COMPOSITOR_FRAME slice.
viz_wait_for_draw_dur DURATION Duration between viz receiving the compositor frame to frame draw.
viz_draw_and_swap_slice_id LONG Slice id for the STEP_DRAW_AND_SWAP slice.
viz_draw_and_swap_ts TIMESTAMP Timestamp for the STEP_DRAW_AND_SWAP slice or the containing task (if available).
viz_draw_and_swap_dur DURATION Duration for the viz drawing/swapping work for this frame.
viz_send_buffer_swap_slice_id LONG Slice id for the STEP_SEND_BUFFER_SWAP slice.
viz_send_buffer_swap_end_ts TIMESTAMP End timestamp for the STEP_SEND_BUFFER_SWAP slice.
viz_to_gpu_delay_dur DURATION Delay between viz work on compositor thread and CompositorGpuThread.
viz_gpu_thread_utid LONG Utid for the viz CompositorGpuThread.
viz_swap_buffers_slice_id LONG Slice id for the STEP_BUFFER_SWAP_POST_SUBMIT slice.
viz_swap_buffers_ts TIMESTAMP Timestamp for the STEP_BUFFER_SWAP_POST_SUBMIT slice or the containing task (if available).
viz_swap_buffers_dur DURATION Duration of frame buffer swapping work on viz.
viz_swap_buffers_end_ts TIMESTAMP End timestamp for the STEP_BUFFER_SWAP_POST_SUBMIT slice.
viz_swap_buffers_to_latch_dur DURATION Duration from the end of the STEP_BUFFER_SWAP_POST_SUBMIT slice to EventLatency's LatchToSwapEnd step.
buffer_available_timestamp TIMESTAMP Timestamp for EventLatency's BufferAvailableToBufferReady step.
buffer_available_to_ready_dur DURATION Duration of EventLatency's BufferAvailableToBufferReady step.
buffer_ready_timestamp TIMESTAMP Timestamp for EventLatency's BufferAvailableToBufferReady step.
latch_timestamp TIMESTAMP Timestamp for EventLatency's LatchToSwapEnd step.
viz_latch_to_presentation_dur DURATION Duration of either EventLatency's LatchToSwapEnd + SwapEndToPresentationCompositorFrame steps or its LatchToPresentation step.
presentation_timestamp TIMESTAMP Presentation timestamp for the frame.
chrome_scrolls. Defines slices for all of the individual scrolls in a trace based on the LatencyInfo-based scroll definition

TABLE Defines slices for all of the individual scrolls in a trace based on the LatencyInfo-based scroll definition.

NOTE: this view of top level scrolls is based on the LatencyInfo definition of a scroll, which differs subtly from the definition based on EventLatencies. TODO(b/278684408): add support for tracking scrolls across multiple Chrome/ WebView instances. Currently gesture_scroll_id unique within an instance, but is not unique across multiple instances. Switching to an EventLatency based definition of scrolls should resolve this.

Column Type Description
id LONG The unique identifier of the scroll.
ts TIMESTAMP The start timestamp of the scroll.
dur DURATION The duration of the scroll.
gesture_scroll_begin_ts TIMESTAMP The earliest timestamp of the EventLatency slice of the GESTURE_SCROLL_BEGIN type for the corresponding scroll id.
gesture_scroll_end_ts TIMESTAMP The earliest timestamp of the EventLatency slice of the GESTURE_SCROLL_END type / the latest timestamp of the EventLatency slice of the GESTURE_SCROLL_UPDATE type for the corresponding scroll id.
is_fully_captured BOOL Whether the scroll is fully captured in the trace (i.e. did not start or end mid-scroll). For the first scroll in the trace, this requires FIRST_GESTURE_SCROLL_UPDATE to be present; for the last scroll, this requires a corresponding gesture scroll end event to be present.
chrome_scroll_update_info. Timestamps and durations for the critical path stages during scrolling

TABLE Timestamps and durations for the critical path stages during scrolling. This table covers both the input-associated (before coalescing inputs into a frame) and frame-associated (after coalescing inputs into a frame) stages of a scroll:

... | +--------------+--------------+ | | V V

+-------------------------+ +-------------------------+ | scroll_update_INPUT | |