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:
- Acting as a way of sharing and commonly written queries without needing to copy/paste large amounts of SQL.
- 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:
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
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
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 | |