Tables diagram

Tracks tables

graph TD subgraph Tracks TrackTable["track"] CounterTrackTable["counter_track"] CpuCounterTrackTable["cpu_counter_track"] CpuTrackTable["cpu_track"] EnergyCounterTrackTable["energy_counter_track"] UidCounterTrackTable["uid_counter_track"] EnergyPerUidCounterTrackTable["energy_per_uid_counter_track"] GpuCounterTrackTable["gpu_counter_track"] GpuTrackTable["gpu_track"] IrqCounterTrackTable["irq_counter_track"] PerfCounterTrackTable["perf_counter_track"] ProcessCounterTrackTable["process_counter_track"] ProcessTrackTable["process_track"] SoftirqCounterTrackTable["softirq_counter_track"] ThreadCounterTrackTable["thread_counter_track"] ThreadTrackTable["thread_track"] end TrackTable["track"] -. parent_id .-> TrackTable["track"] TrackTable["track"] -. source_arg_set_id .-> ArgTable["args"] CounterTrackTable["counter_track"] --> TrackTable["track"] CpuCounterTrackTable["cpu_counter_track"] --> CounterTrackTable["counter_track"] CpuTrackTable["cpu_track"] --> TrackTable["track"] EnergyCounterTrackTable["energy_counter_track"] --> CounterTrackTable["counter_track"] UidCounterTrackTable["uid_counter_track"] --> CounterTrackTable["counter_track"] EnergyPerUidCounterTrackTable["energy_per_uid_counter_track"] --> UidCounterTrackTable["uid_counter_track"] GpuCounterTrackTable["gpu_counter_track"] --> CounterTrackTable["counter_track"] GpuTrackTable["gpu_track"] --> TrackTable["track"] IrqCounterTrackTable["irq_counter_track"] --> CounterTrackTable["counter_track"] PerfCounterTrackTable["perf_counter_track"] --> CounterTrackTable["counter_track"] ProcessCounterTrackTable["process_counter_track"] --> CounterTrackTable["counter_track"] ProcessCounterTrackTable["process_counter_track"] -. upid .-> ProcessTable["process"] ProcessTrackTable["process_track"] --> TrackTable["track"] ProcessTrackTable["process_track"] -. upid .-> ProcessTable["process"] SoftirqCounterTrackTable["softirq_counter_track"] --> CounterTrackTable["counter_track"] ThreadCounterTrackTable["thread_counter_track"] --> CounterTrackTable["counter_track"] ThreadCounterTrackTable["thread_counter_track"] -. utid .-> ThreadTable["thread"] ThreadTrackTable["thread_track"] --> TrackTable["track"] ThreadTrackTable["thread_track"] -. utid .-> ThreadTable["thread"] click TrackTable "#track" click TrackTable "#track" click ArgTable "#args" click CounterTrackTable "#counter_track" click CpuCounterTrackTable "#cpu_counter_track" click CpuTrackTable "#cpu_track" click EnergyCounterTrackTable "#energy_counter_track" click UidCounterTrackTable "#uid_counter_track" click EnergyPerUidCounterTrackTable "#energy_per_uid_counter_track" click GpuCounterTrackTable "#gpu_counter_track" click GpuTrackTable "#gpu_track" click IrqCounterTrackTable "#irq_counter_track" click PerfCounterTrackTable "#perf_counter_track" click ProcessCounterTrackTable "#process_counter_track" click ProcessTable "#process" click ProcessTrackTable "#process_track" click ProcessTable "#process" click SoftirqCounterTrackTable "#softirq_counter_track" click ThreadCounterTrackTable "#thread_counter_track" click ThreadTable "#thread" click ThreadTrackTable "#thread_track" click ThreadTable "#thread"

Events tables

graph TD subgraph Events AndroidLogTable["android_logs"] AndroidDumpstateTable["android_dumpstate"] CounterTable["counter"] SliceTable["slice"] RawTable["raw"] FtraceEventTable["ftrace_event"] SchedSliceTable["sched_slice"] SpuriousSchedWakeupTable["spurious_sched_wakeup"] ThreadStateTable["thread_state"] ActualFrameTimelineSliceTable["actual_frame_timeline_slice"] ExpectedFrameTimelineSliceTable["expected_frame_timeline_slice"] ExperimentalFlatSliceTable["experimental_flat_slice"] GpuSliceTable["gpu_slice"] GraphicsFrameSliceTable["frame_slice"] end AndroidLogTable["android_logs"] -. utid .-> ThreadTable["thread"] CounterTable["counter"] -. track_id .-> CounterTrackTable["counter_track"] SliceTable["slice"] -. track_id .-> TrackTable["track"] SliceTable["slice"] -. parent_id .-> SliceTable["slice"] SliceTable["slice"] -. arg_set_id .-> ArgTable["args"] RawTable["raw"] -. utid .-> ThreadTable["thread"] RawTable["raw"] -. arg_set_id .-> ArgTable["args"] FtraceEventTable["ftrace_event"] --> RawTable["raw"] ActualFrameTimelineSliceTable["actual_frame_timeline_slice"] --> SliceTable["slice"] ExpectedFrameTimelineSliceTable["expected_frame_timeline_slice"] --> SliceTable["slice"] ExperimentalFlatSliceTable["experimental_flat_slice"] -. track_id .-> TrackTable["track"] ExperimentalFlatSliceTable["experimental_flat_slice"] -. arg_set_id .-> ArgTable["args"] ExperimentalFlatSliceTable["experimental_flat_slice"] -. source_id .-> SliceTable["slice"] GpuSliceTable["gpu_slice"] --> SliceTable["slice"] GraphicsFrameSliceTable["frame_slice"] --> SliceTable["slice"] click AndroidLogTable "#android_logs" click ThreadTable "#thread" click AndroidDumpstateTable "#android_dumpstate" click CounterTable "#counter" click CounterTrackTable "#counter_track" click SliceTable "#slice" click TrackTable "#track" click SliceTable "#slice" click ArgTable "#args" click RawTable "#raw" click ThreadTable "#thread" click ArgTable "#args" click FtraceEventTable "#ftrace_event" click SchedSliceTable "#sched_slice" click SpuriousSchedWakeupTable "#spurious_sched_wakeup" click ThreadStateTable "#thread_state" click ActualFrameTimelineSliceTable "#actual_frame_timeline_slice" click ExpectedFrameTimelineSliceTable "#expected_frame_timeline_slice" click ExperimentalFlatSliceTable "#experimental_flat_slice" click TrackTable "#track" click ArgTable "#args" click SliceTable "#slice" click GpuSliceTable "#gpu_slice" click GraphicsFrameSliceTable "#frame_slice"

ART Heap Graphs tables

graph TD subgraph ART Heap Graphs HeapGraphClassTable["heap_graph_class"] HeapGraphObjectTable["heap_graph_object"] HeapGraphReferenceTable["heap_graph_reference"] end HeapGraphClassTable["heap_graph_class"] -. superclass_id .-> HeapGraphClassTable["heap_graph_class"] HeapGraphObjectTable["heap_graph_object"] -. type_id .-> HeapGraphClassTable["heap_graph_class"] HeapGraphReferenceTable["heap_graph_reference"] -. owner_id .-> HeapGraphObjectTable["heap_graph_object"] HeapGraphReferenceTable["heap_graph_reference"] -. owned_id .-> HeapGraphObjectTable["heap_graph_object"] click HeapGraphClassTable "#heap_graph_class" click HeapGraphClassTable "#heap_graph_class" click HeapGraphObjectTable "#heap_graph_object" click HeapGraphClassTable "#heap_graph_class" click HeapGraphReferenceTable "#heap_graph_reference" click HeapGraphObjectTable "#heap_graph_object" click HeapGraphObjectTable "#heap_graph_object"

Callstack profilers tables

graph TD subgraph Callstack profilers StackProfileMappingTable["stack_profile_mapping"] StackProfileFrameTable["stack_profile_frame"] StackProfileCallsiteTable["stack_profile_callsite"] StackSampleTable["stack_sample"] CpuProfileStackSampleTable["cpu_profile_stack_sample"] ExperimentalFlamegraphNodesTable["experimental_flamegraph_nodes"] HeapProfileAllocationTable["heap_profile_allocation"] PerfSampleTable["perf_sample"] ProfilerSmapsTable["profiler_smaps"] SymbolTable["stack_profile_symbol"] end StackProfileFrameTable["stack_profile_frame"] -. mapping .-> StackProfileMappingTable["stack_profile_mapping"] StackProfileCallsiteTable["stack_profile_callsite"] -. parent_id .-> StackProfileCallsiteTable["stack_profile_callsite"] StackProfileCallsiteTable["stack_profile_callsite"] -. frame_id .-> StackProfileFrameTable["stack_profile_frame"] StackSampleTable["stack_sample"] -. callsite_id .-> StackProfileCallsiteTable["stack_profile_callsite"] CpuProfileStackSampleTable["cpu_profile_stack_sample"] --> StackSampleTable["stack_sample"] ExperimentalFlamegraphNodesTable["experimental_flamegraph_nodes"] -. parent_id .-> ExperimentalFlamegraphNodesTable["experimental_flamegraph_nodes"] HeapProfileAllocationTable["heap_profile_allocation"] -. callsite_id .-> StackProfileCallsiteTable["stack_profile_callsite"] PerfSampleTable["perf_sample"] -. callsite_id .-> StackProfileCallsiteTable["stack_profile_callsite"] click StackProfileMappingTable "#stack_profile_mapping" click StackProfileFrameTable "#stack_profile_frame" click StackProfileMappingTable "#stack_profile_mapping" click StackProfileCallsiteTable "#stack_profile_callsite" click StackProfileCallsiteTable "#stack_profile_callsite" click StackProfileFrameTable "#stack_profile_frame" click StackSampleTable "#stack_sample" click StackProfileCallsiteTable "#stack_profile_callsite" click CpuProfileStackSampleTable "#cpu_profile_stack_sample" click ExperimentalFlamegraphNodesTable "#experimental_flamegraph_nodes" click ExperimentalFlamegraphNodesTable "#experimental_flamegraph_nodes" click HeapProfileAllocationTable "#heap_profile_allocation" click StackProfileCallsiteTable "#stack_profile_callsite" click PerfSampleTable "#perf_sample" click StackProfileCallsiteTable "#stack_profile_callsite" click ProfilerSmapsTable "#profiler_smaps" click SymbolTable "#stack_profile_symbol"

Memory Snapshots tables

graph TD subgraph Memory Snapshots MemorySnapshotTable["memory_snapshot"] ProcessMemorySnapshotTable["process_memory_snapshot"] MemorySnapshotNodeTable["memory_snapshot_node"] MemorySnapshotEdgeTable["memory_snapshot_edge"] end MemorySnapshotTable["memory_snapshot"] -. track_id .-> TrackTable["track"] ProcessMemorySnapshotTable["process_memory_snapshot"] -. snapshot_id .-> MemorySnapshotTable["memory_snapshot"] MemorySnapshotNodeTable["memory_snapshot_node"] -. process_snapshot_id .-> ProcessMemorySnapshotTable["process_memory_snapshot"] MemorySnapshotNodeTable["memory_snapshot_node"] -. parent_node_id .-> MemorySnapshotNodeTable["memory_snapshot_node"] MemorySnapshotEdgeTable["memory_snapshot_edge"] -. source_node_id .-> MemorySnapshotNodeTable["memory_snapshot_node"] MemorySnapshotEdgeTable["memory_snapshot_edge"] -. target_node_id .-> MemorySnapshotNodeTable["memory_snapshot_node"] click MemorySnapshotTable "#memory_snapshot" click TrackTable "#track" click ProcessMemorySnapshotTable "#process_memory_snapshot" click MemorySnapshotTable "#memory_snapshot" click MemorySnapshotNodeTable "#memory_snapshot_node" click ProcessMemorySnapshotTable "#process_memory_snapshot" click MemorySnapshotNodeTable "#memory_snapshot_node" click MemorySnapshotEdgeTable "#memory_snapshot_edge" click MemorySnapshotNodeTable "#memory_snapshot_node" click MemorySnapshotNodeTable "#memory_snapshot_node"

Misc tables

graph TD subgraph Misc ProcessTable["process"] ThreadTable["thread"] AndroidGameInterventionListTable["android_game_intervention_list"] FlowTable["flow"] ArgTable["args"] ClockSnapshotTable["clock_snapshot"] CpuTable["cpu"] CpuFreqTable["cpu_freq"] ExpMissingChromeProcTable["experimental_missing_chrome_processes"] FiledescriptorTable["filedescriptor"] MetadataTable["metadata"] GpuCounterGroupTable["gpu_counter_group"] PackageListTable["package_list"] VulkanMemoryAllocationsTable["vulkan_memory_allocations"] ExperimentalProtoPathTable["experimental_proto_path"] ExperimentalProtoContentTable["experimental_proto_content"] end ProcessTable["process"] -. parent_upid .-> ProcessTable["process"] ProcessTable["process"] -. uid .-> PackageListTable["package_list"] ProcessTable["process"] -. arg_set_id .-> ArgTable["args"] ThreadTable["thread"] -. upid .-> ProcessTable["process"] FlowTable["flow"] -. slice_out .-> SliceTable["slice"] FlowTable["flow"] -. slice_in .-> SliceTable["slice"] CpuFreqTable["cpu_freq"] -. cpu_id .-> CpuTable["cpu"] GpuCounterGroupTable["gpu_counter_group"] -. track_id .-> TrackTable["track"] ExperimentalProtoPathTable["experimental_proto_path"] -. parent_id .-> ExperimentalProtoPathTable["experimental_proto_path"] ExperimentalProtoContentTable["experimental_proto_content"] -. path_id .-> ExperimentalProtoPathTable["experimental_proto_path"] click ProcessTable "#process" click ProcessTable "#process" click PackageListTable "#package_list" click ArgTable "#args" click ThreadTable "#thread" click ProcessTable "#process" click AndroidGameInterventionListTable "#android_game_intervention_list" click FlowTable "#flow" click SliceTable "#slice" click SliceTable "#slice" click ArgTable "#args" click ClockSnapshotTable "#clock_snapshot" click CpuTable "#cpu" click CpuFreqTable "#cpu_freq" click CpuTable "#cpu" click ExpMissingChromeProcTable "#experimental_missing_chrome_processes" click FiledescriptorTable "#filedescriptor" click MetadataTable "#metadata" click GpuCounterGroupTable "#gpu_counter_group" click TrackTable "#track" click PackageListTable "#package_list" click VulkanMemoryAllocationsTable "#vulkan_memory_allocations" click ExperimentalProtoPathTable "#experimental_proto_path" click ExperimentalProtoPathTable "#experimental_proto_path" click ExperimentalProtoContentTable "#experimental_proto_content" click ExperimentalProtoPathTable "#experimental_proto_path"

Tracks

track

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 TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

counter_track

Extends track

Tracks containing counter-like events. See https://perfetto.dev/docs/analysis/trace-processor#events for a defintion and examples of counters.

Column Type Description
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

cpu_counter_track

Extends counter_track

Tracks containing counter-like events associated to a CPU.

Column Type Description
cpu uint32_t The CPU this track is associated with
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

cpu_track

Extends track

Tracks which are associated to a single CPU

Column Type Description
cpu uint32_t The CPU associated with this track
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

energy_counter_track

Extends counter_track

Energy consumers' values for energy descriptors in energy_estimation_breakdown packet

Column Type Description
consumer_id int32_t id of a distinct energy consumer
consumer_type string type of energy consumer
ordinal int32_t ordinal of energy consumer
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

uid_counter_track

Extends counter_track

The uid associated with this track

Column Type Description
uid int32_t uid of process for which breakdowns are emitted
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

energy_per_uid_counter_track

Extends uid_counter_track

Energy consumer values for per uid in uid_counter_track

Column Type Description
consumer_id int32_t id of the consumer process
Columns inherited from uid_counter_track
uid int32_t uid of process for which breakdowns are emitted
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

gpu_counter_track

Extends counter_track

Tracks containing counter-like events associated to a GPU

Column Type Description
gpu_id uint32_t The identifier for the GPU.
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

gpu_track

Extends track

Tracks assocaited to a GPU.

Column Type Description
scope string The scope for the track. For debugging purposes only.
description string The description of the track. For debugging purposes only.
context_id int64_t
optional
The context id for the GPU this track is associated to.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

irq_counter_track

Extends counter_track

Tracks containing counter-like events associated to an hardirq

Column Type Description
irq int32_t The identifier for the hardirq.
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

perf_counter_track

Extends counter_track

Sampled counters' values for samples in the perf_sample table.

Column Type Description
perf_session_id uint32_t id of a distict profiling stream
cpu uint32_t the core the sample was taken on
is_timebase uint32_t If true, indicates this counter was the sampling timebase for this perf_session_id
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

process_counter_track

Extends counter_track

Tracks containing counter-like events associated to a process.

Column Type Description
upid uint32_t The process associated with this track Joinable with process.upid
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

process_track

Extends track

Tracks which are associated to the process given by the |upid| column

Column Type Description
upid uint32_t The process associated with this track
Joinable with process.upid
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

softirq_counter_track

Extends counter_track

Tracks containing counter-like events associated to a softirq

Column Type Description
softirq int32_t The identifier for the softirq.
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

thread_counter_track

Extends counter_track

Tracks containing counter-like events associated to a thread.

Column Type Description
utid uint32_t The thread associated with this track Joinable with thread.utid
Columns inherited from counter_track
unit string The units of the counter. This column is rarely filled.
description string The description for this track. For debugging purposes only.
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

thread_track

Extends track

Tracks which are associated to the thread given by the |utid| column

Column Type Description
utid uint32_t The thread associated with this track Joinable with thread.utid
Columns inherited from track
id TrackTable::Id Unique idenitifier for this track.
type string The name of the "most-specific" child table containing this row.
name string Name of the track; can be null for some types of tracks (e.g
thread tracks).
parent_id TrackTable::Id
optional
The track which is the "parent" of this track. Only non-null for tracks created using Perfetto's track_event API
Joinable with track.id
source_arg_set_id uint32_t
optional
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
Joinable with args.arg_set_id

Events

android_logs

Log entries from Android logcat.

NOTE: this table is not sorted by timestamp. This is why we omit the sorted flag on the ts column.

Column Type Description
id AndroidLogTable::Id Unique idenitifier for this android_logs.
type string The name of the "most-specific" child table containing this row.
ts int64_t Timestamp of log entry.
utid ThreadTable::Id Thread writing the log entry
Joinable with thread.id
prio uint32_t Priority of the log. 3=DEBUG, 4=INFO, 5=WARN, 6=ERROR.
tag string
optional
Tag of the log entry.
msg string Content of the log entry.

android_dumpstate

Dumpsys entries from Android dumpstate.

Column Type Description
id AndroidDumpstateTable::Id Unique idenitifier for this android_dumpstate.
type string The name of the "most-specific" child table containing this row.
section string
optional
name of the dumpstate section.
service string
optional
name of the dumpsys service. Only present when dumpstate=="dumpsys", NULL otherwise.
line string line-by-line contents of the section/service, one row per line.

counter

Column Type Description
id CounterTable::Id Unique idenitifier for this counter.
type string The name of the "most-specific" child table containing this row.
ts int64_t
track_id CounterTrackTable::Id Joinable with counter_track.id
value double
arg_set_id uint32_t
optional

slice

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

Column Type Description
id SliceTable::Id Unique idenitifier for this slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
depth uint32_t The depth of the slice in the current stack of slices.
stack_id int64_t A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.
parent_stack_id int64_t The stack_id for the parent of this slice. Rarely useful.
parent_id SliceTable::Id
optional
The id of the parent (i.e. immediate ancestor) slice for this slice Joinable with slice.id
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
thread_ts int64_t
optional
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 int64_t
optional
' 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 int64_t
optional
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 int64_t
optional
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.

raw

Contains 'raw' events from the trace for some types of events. This table only exists for debugging purposes and should not be relied on in production usecases (i.e. metrics, standard library etc).

Column Type Description
id RawTable::Id Unique idenitifier for this raw.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp of this event.
name string The name of the event. For ftrace events, this will be the ftrace event name.
cpu uint32_t The CPU this event was emitted on.
utid ThreadTable::Id The thread this event was emitted on
Joinable with thread.id
arg_set_id uint32_t The set of key/value pairs associated with this event
Joinable with args.arg_set_id
common_flags uint32_t Ftrace event flags for this event. Currently only emitted for sched_waking events.

ftrace_event

Extends raw

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
Columns inherited from raw
id RawTable::Id Unique idenitifier for this raw.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp of this event.
name string The name of the event. For ftrace events, this will be the ftrace event name.
cpu uint32_t The CPU this event was emitted on.
utid ThreadTable::Id The thread this event was emitted on
Joinable with thread.id
arg_set_id uint32_t The set of key/value pairs associated with this event
Joinable with args.arg_set_id
common_flags uint32_t Ftrace event flags for this event. Currently only emitted for sched_waking events.

sched_slice

This table holds 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 table will always have a matching row in the |thread_state| table with |thread_state.state| = 'Running'

Column Type Description
id SchedSliceTable::Id Unique idenitifier for this sched_slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
cpu uint32_t The CPU that the slice executed on.
utid uint32_t 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 int32_t The kernel priority that the thread ran at.

spurious_sched_wakeup

This table contains the scheduling wakeups that occurred while a thread was not blocked, i.e. running or runnable. Such wakeups are not tracked in the |thread_state_table|.

Column Type Description
id SpuriousSchedWakeupTable::Id Unique idenitifier for this spurious_sched_wakeup.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
thread_state_id int64_t The id of the row in the thread_state table that this row is associated with.
irq_context uint32_t
optional
Whether the wakeup was from interrupt context or process context.
utid uint32_t The thread's unique id in the trace..
waker_utid uint32_t The unique thread id of the thread which caused a wakeup of this thread.

thread_state

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 ThreadStateTable::Id Unique idenitifier for this thread_state.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
cpu uint32_t
optional
The CPU that the slice executed on.
utid uint32_t 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 uint32_t
optional
Indicates whether this thread was blocked on IO.
blocked_function string
optional
The function in the kernel this thread was blocked on.
waker_utid uint32_t
optional
The unique thread id of the thread which caused a wakeup of this thread.
irq_context uint32_t
optional
Whether the wakeup was from interrupt context or process context.

actual_frame_timeline_slice

Extends slice

Column Type Description
display_frame_token int64_t
surface_frame_token int64_t
upid uint32_t
layer_name string
present_type string
on_time_finish int32_t
gpu_composition int32_t
jank_type string
prediction_type string
jank_tag string
Columns inherited from slice
id SliceTable::Id Unique idenitifier for this slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
depth uint32_t The depth of the slice in the current stack of slices.
stack_id int64_t A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.
parent_stack_id int64_t The stack_id for the parent of this slice. Rarely useful.
parent_id SliceTable::Id
optional
The id of the parent (i.e. immediate ancestor) slice for this slice Joinable with slice.id
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
thread_ts int64_t
optional
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 int64_t
optional
' 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 int64_t
optional
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 int64_t
optional
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.

expected_frame_timeline_slice

Extends slice

Column Type Description
display_frame_token int64_t
surface_frame_token int64_t
upid uint32_t
layer_name string
Columns inherited from slice
id SliceTable::Id Unique idenitifier for this slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
depth uint32_t The depth of the slice in the current stack of slices.
stack_id int64_t A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.
parent_stack_id int64_t The stack_id for the parent of this slice. Rarely useful.
parent_id SliceTable::Id
optional
The id of the parent (i.e. immediate ancestor) slice for this slice Joinable with slice.id
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
thread_ts int64_t
optional
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 int64_t
optional
' 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 int64_t
optional
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 int64_t
optional
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.

experimental_flat_slice

An experimental table which "flattens" stacks of slices to contain only the "deepest" slice at any point in time on each track.

Column Type Description
id ExperimentalFlatSliceTable::Id Unique idenitifier for this experimental_flat_slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
source_id SliceTable::Id
optional
The id of the slice which this row originated from
Joinable with slice.id

gpu_slice

Extends slice

Column Type Description
context_id int64_t
optional
render_target int64_t
optional
render_target_name string
render_pass int64_t
optional
render_pass_name string
command_buffer int64_t
optional
command_buffer_name string
frame_id uint32_t
optional
submission_id uint32_t
optional
hw_queue_id int64_t
optional
render_subpasses string
Columns inherited from slice
id SliceTable::Id Unique idenitifier for this slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
depth uint32_t The depth of the slice in the current stack of slices.
stack_id int64_t A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.
parent_stack_id int64_t The stack_id for the parent of this slice. Rarely useful.
parent_id SliceTable::Id
optional
The id of the parent (i.e. immediate ancestor) slice for this slice Joinable with slice.id
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
thread_ts int64_t
optional
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 int64_t
optional
' 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 int64_t
optional
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 int64_t
optional
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.

frame_slice

Extends slice

Column Type Description
frame_number uint32_t
layer_name string
queue_to_acquire_time int64_t
acquire_to_latch_time int64_t
latch_to_present_time int64_t
Columns inherited from slice
id SliceTable::Id Unique idenitifier for this slice.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp at the start of the slice (in nanoseconds).
dur int64_t The duration of the slice (in nanoseconds).
track_id TrackTable::Id The id of the track this slice is located on
Joinable with track.id
category string
optional
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
optional
The name of the slice. The name describes what was happening during the slice.
depth uint32_t The depth of the slice in the current stack of slices.
stack_id int64_t A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.
parent_stack_id int64_t The stack_id for the parent of this slice. Rarely useful.
parent_id SliceTable::Id
optional
The id of the parent (i.e. immediate ancestor) slice for this slice Joinable with slice.id
arg_set_id uint32_t The id of the argument set associated with this slice Joinable with args.arg_set_id
thread_ts int64_t
optional
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 int64_t
optional
' 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 int64_t
optional
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 int64_t
optional
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.

ART Heap Graphs

heap_graph_class

Column Type Description
id HeapGraphClassTable::Id Unique idenitifier for this heap_graph_class.
type string The name of the "most-specific" child table containing this row.
name string (potentially obfuscated) name of the class.
deobfuscated_name string
optional
if class name was obfuscated and deobfuscation map for it provided, the deobfuscated name.
location string
optional
the APK / Dex / JAR file the class is contained in
classloader_id should really be HeapGraphObject::id, but that would create a loop, which is currently not possible
TODO(lalitm): resolve this
superclass_id HeapGraphClassTable::Id
optional
Joinable with heap_graph_class.id
classloader_id uint32_t
optional
kind string

heap_graph_object

The objects on the Dalvik heap.

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

Column Type Description
id HeapGraphObjectTable::Id Unique idenitifier for this heap_graph_object.
type string The name of the "most-specific" child table containing this row.
upid uint32_t UniquePid of the target.
graph_sample_ts int64_t timestamp this dump was taken at.
self_size int64_t size this object uses on the Java Heap.
native_size int64_t approximate amount of native memory used by this object, as reported by libcore.util.NativeAllocationRegistry.size.
reference_set_id uint32_t
optional
join key with heap_graph_reference containing all objects referred in this object's fields.
reachable int32_t bool whether this object is reachable from a GC root. If false, this object is uncollected garbage.
type_id HeapGraphClassTable::Id class this object is an instance of
Joinable with heap_graph_class.id
root_type string
optional
if not NULL, this object is a GC root.

heap_graph_reference

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 HeapGraphReferenceTable::Id Unique idenitifier for this heap_graph_reference.
type string The name of the "most-specific" child table containing this row.
reference_set_id uint32_t join key to heap_graph_object.
owner_id HeapGraphObjectTable::Id id of object that has this reference_set_id
Joinable with heap_graph_object.id
owned_id HeapGraphObjectTable::Id
optional
id of object that is referred to
Joinable with heap_graph_object.id
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
optional
if field_name was obfuscated and a deobfuscation mapping was provided for it, the deobfuscated name.

Callstack profilers

stack_profile_mapping

A mapping (binary / library) in a process. This is generated by the stack profilers: heapprofd and traced_perf.

Column Type Description
id StackProfileMappingTable::Id Unique idenitifier for this stack_profile_mapping.
type string The name of the "most-specific" child table containing this row.
build_id string hex-encoded Build ID of the binary / library.
exact_offset int64_t
start_offset int64_t
start int64_t start of the mapping in the process' address space.
end int64_t end of the mapping in the process' address space.
load_bias int64_t
name string filename of the binary / library.

stack_profile_frame

A frame on the callstack. This is a location in a program. This is generated by the stack profilers: heapprofd and traced_perf.

Column Type Description
id StackProfileFrameTable::Id Unique idenitifier for this stack_profile_frame.
type string The name of the "most-specific" child table containing this row.
name string name of the function this location is in.
mapping StackProfileMappingTable::Id the mapping (library / binary) this location is in
Joinable with stack_profile_mapping.id
rel_pc int64_t the program counter relative to the start of the mapping.
symbol_set_id uint32_t
optional
if the profile was offline symbolized, the offline symbol information of this frame.
deobfuscated_name string
optional

stack_profile_callsite

A callsite. This is a list of frames that were on the stack. This is generated by the stack profilers: heapprofd and traced_perf.

Column Type Description
id StackProfileCallsiteTable::Id Unique idenitifier for this stack_profile_callsite.
type string The name of the "most-specific" child table containing this row.
depth uint32_t distance from the bottom-most frame of the callstack.
parent_id StackProfileCallsiteTable::Id
optional
parent frame on the callstack. NULL for the bottom-most
Joinable with stack_profile_callsite.id
frame_id StackProfileFrameTable::Id frame at this position in the callstack
Joinable with stack_profile_frame.id

stack_sample

Root table for timestamped stack samples.

Column Type Description
id StackSampleTable::Id Unique idenitifier for this stack_sample.
type string The name of the "most-specific" child table containing this row.
ts int64_t timestamp of the sample.
callsite_id StackProfileCallsiteTable::Id unwound callstack
Joinable with stack_profile_callsite.id

cpu_profile_stack_sample

Extends stack_sample

Samples from the Chromium stack sampler.

Column Type Description
utid uint32_t thread that was active when the sample was taken.
process_priority int32_t
Columns inherited from stack_sample
id StackSampleTable::Id Unique idenitifier for this stack_sample.
type string The name of the "most-specific" child table containing this row.
ts int64_t timestamp of the sample.
callsite_id StackProfileCallsiteTable::Id unwound callstack
Joinable with stack_profile_callsite.id

experimental_flamegraph_nodes

Table used to render flamegraphs. This gives cumulative sizes of nodes in the flamegraph.

WARNING: This is experimental and the API is subject to change.

Column Type Description
id ExperimentalFlamegraphNodesTable::Id Unique idenitifier for this experimental_flamegraph_nodes.
type string The name of the "most-specific" child table containing this row.
depth uint32_t
name string
map_name string
count int64_t
cumulative_count int64_t
size int64_t
cumulative_size int64_t
alloc_count int64_t
cumulative_alloc_count int64_t
alloc_size int64_t
cumulative_alloc_size int64_t
parent_id ExperimentalFlamegraphNodesTable::Id
optional
Joinable with experimental_flamegraph_nodes.id
source_file string
optional
line_number uint32_t
optional
upid_group string
optional

heap_profile_allocation

Allocations that happened at a callsite.

NOTE: this table is not sorted by timestamp intentionanlly - see b/193757386 for details. TODO(b/193757386): readd the sorted flag once this bug is fixed.

This is generated by heapprofd.

Column Type Description
id HeapProfileAllocationTable::Id Unique idenitifier for this heap_profile_allocation.
type string The name of the "most-specific" child table containing this row.
ts int64_t the timestamp the allocations happened at. heapprofd batches allocations and frees, and all data from a dump will have the same timestamp.
upid uint32_t the UniquePID of the allocating process.
heap_name string
callsite_id StackProfileCallsiteTable::Id the callsite the allocation happened at
Joinable with stack_profile_callsite.id
count int64_t if positive: number of allocations that happened at this callsite. if negative: number of allocations that happened at this callsite that were freed.
size int64_t if positive: size of allocations that happened at this callsite. if negative: size of allocations that happened at this callsite that were freed.

perf_sample

Samples from the traced_perf profiler.

Column Type Description
id PerfSampleTable::Id Unique idenitifier for this perf_sample.
type string The name of the "most-specific" child table containing this row.
ts int64_t timestamp of the sample.
utid uint32_t sampled thread..
cpu uint32_t the core the sampled thread was running on.
cpu_mode string execution state (userspace/kernelspace) of the sampled thread.
callsite_id StackProfileCallsiteTable::Id
optional
if set, unwound callstack of the sampled thread
Joinable with stack_profile_callsite.id
unwind_error string
optional
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 uint32_t distinguishes samples from different profiling streams (i.e. multiple data sources).

profiler_smaps

The profiler smaps contains the memory stats for virtual memory ranges captured by the heap profiler.

Column Type Description
id ProfilerSmapsTable::Id Unique idenitifier for this profiler_smaps.
type string The name of the "most-specific" child table containing this row.
upid uint32_t The UniquePID of the process.
ts int64_t Timestamp of the snapshot. Multiple rows will have the same timestamp.
path string The mmaped file, as per /proc/pid/smaps.
size_kb int64_t Total size of the mapping.
private_dirty_kb int64_t KB of this mapping that are private dirty RSS.
swap_kb int64_t KB of this mapping that are in swap.
file_name string
start_address int64_t
module_timestamp int64_t
module_debugid string
module_debug_path string
protection_flags int64_t
private_clean_resident_kb int64_t
shared_dirty_resident_kb int64_t
shared_clean_resident_kb int64_t
locked_kb int64_t
proportional_resident_kb int64_t

stack_profile_symbol

Symbolization data for a frame. Rows with the same symbol_set_id describe one callframe, with the most-inlined symbol having id == symbol_set_id.

For instance, if the function foo has an inlined call to the function bar, which has an inlined call to baz, the stack_profile_symbol table would look like this.

|id|symbol_set_id|name |source_file|line_number| |--|-------------|-------------|-----------|-----------| |1 | 1 |baz |foo.cc | 36 | |2 | 1 |bar |foo.cc | 30 | |3 | 1 |foo |foo.cc | 60 |
Column Type Description
id SymbolTable::Id Unique idenitifier for this stack_profile_symbol.
type string The name of the "most-specific" child table containing this row.
symbol_set_id uint32_t
name string name of the function.
source_file string name of the source file containing the function.
line_number uint32_t line number of the frame in the source file. This is the exact line for the corresponding program counter, not the beginning of the function.

Memory Snapshots

memory_snapshot

Column Type Description
id MemorySnapshotTable::Id Unique idenitifier for this memory_snapshot.
type string The name of the "most-specific" child table containing this row.
timestamp int64_t
track_id TrackTable::Id Joinable with track.id
detail_level string

process_memory_snapshot

Column Type Description
id ProcessMemorySnapshotTable::Id Unique idenitifier for this process_memory_snapshot.
type string The name of the "most-specific" child table containing this row.
snapshot_id MemorySnapshotTable::Id Joinable with memory_snapshot.id
upid uint32_t

memory_snapshot_node

Column Type Description
id MemorySnapshotNodeTable::Id Unique idenitifier for this memory_snapshot_node.
type string The name of the "most-specific" child table containing this row.
process_snapshot_id ProcessMemorySnapshotTable::Id Joinable with process_memory_snapshot.id
parent_node_id MemorySnapshotNodeTable::Id
optional
Joinable with memory_snapshot_node.id
path string
size int64_t
effective_size int64_t
arg_set_id uint32_t
optional

memory_snapshot_edge

Column Type Description
id MemorySnapshotEdgeTable::Id Unique idenitifier for this memory_snapshot_edge.
type string The name of the "most-specific" child table containing this row.
source_node_id MemorySnapshotNodeTable::Id Joinable with memory_snapshot_node.id
target_node_id MemorySnapshotNodeTable::Id Joinable with memory_snapshot_node.id
importance uint32_t

Misc

process

Contains information of processes seen during the trace

Column Type Description
upid ProcessTable::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 uint32_t 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
optional
The name of the process. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).
start_ts int64_t
optional
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 int64_t
optional
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 ProcessTable::Id
optional
The upid of the process which caused this process to be spawned
Joinable with process.upid
uid uint32_t
optional
The Unix user id of the process
Joinable with package_list.uid
android_appid uint32_t
optional
Android appid of this process.
cmdline string
optional
/proc/cmdline for this process.
arg_set_id uint32_t Extra args for this process
Joinable with args.arg_set_id

thread

Contains information of threads seen during the trace

Column Type Description
utid ThreadTable::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 uint32_t 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
optional
The name of the thread. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).
start_ts int64_t
optional
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 int64_t
optional
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 ProcessTable::Id
optional
The process hosting this thread
Joinable with process.upid
is_main_thread uint32_t
optional
Boolean indicating if this thread is the main thread in the process.

android_game_intervention_list

A table presenting all game modes and interventions of games installed on the system. This is generated by the game_mode_intervention data-source.

Column Type Description
id AndroidGameInterventionListTable::Id Unique idenitifier for this android_game_intervention_list.
type string The name of the "most-specific" child table containing this row.
package_name string name of the pakcage, e.g. com.google.android.gm.
uid int64_t UID processes of this package runs as.
current_mode int32_t current game mode the game is running at.
standard_mode_supported int32_t bool whether standard mode is supported.
standard_mode_downscale double
optional
resolution downscaling factor of standard mode.
standard_mode_use_angle int32_t
optional
bool whether ANGLE is used in standard mode.
standard_mode_fps double
optional
frame rate that the game is throttled at in standard mode.
perf_mode_supported int32_t bool whether performance mode is supported.
perf_mode_downscale double
optional
resolution downscaling factor of performance mode.
perf_mode_use_angle int32_t
optional
bool whether ANGLE is used in performance mode.
perf_mode_fps double
optional
frame rate that the game is throttled at in performance mode.
battery_mode_supported int32_t bool whether battery mode is supported.
battery_mode_downscale double
optional
resolution downscaling factor of battery mode.
battery_mode_use_angle int32_t
optional
bool whether ANGLE is used in battery mode.
battery_mode_fps double
optional
frame rate that the game is throttled at in battery mode.

flow

Column Type Description
id FlowTable::Id Unique idenitifier for this flow.
type string The name of the "most-specific" child table containing this row.
slice_out SliceTable::Id Joinable with slice.id
slice_in SliceTable::Id Joinable with slice.id
arg_set_id uint32_t

args

Column Type Description
id ArgTable::Id Unique idenitifier for this args.
type string The name of the "most-specific" child table containing this row.
arg_set_id uint32_t
flat_key string
key string
int_value int64_t
optional
string_value string
optional
real_value double
optional
value_type string

clock_snapshot

Contains all the mapping between clock snapshots and trace time.

NOTE: this table is not sorted by timestamp; this is why we omit the sorted flag on the ts column.

Column Type Description
id ClockSnapshotTable::Id Unique idenitifier for this clock_snapshot.
type string The name of the "most-specific" child table containing this row.
ts int64_t timestamp of the snapshot in trace time.
clock_id int64_t id of the clock (corresponds to the id in the trace).
clock_name string
optional
the name of the clock for builtin clocks or null otherwise.
clock_value int64_t timestamp of the snapshot in clock time.
snapshot_id uint32_t the index of this snapshot (only useful for debugging)

cpu

Contains information of processes seen during the trace

Column Type Description
id CpuTable::Id Unique idenitifier for this cpu.
type string The name of the "most-specific" child table containing this row.
cluster_id uint32_t the cluster id is shared by CPUs in the same cluster
processor string a string describing this core

cpu_freq

Column Type Description
id CpuFreqTable::Id Unique idenitifier for this cpu_freq.
type string The name of the "most-specific" child table containing this row.
cpu_id CpuTable::Id Joinable with cpu.id
freq uint32_t

experimental_missing_chrome_processes

Experimental table, subject to arbitrary breaking changes.

Column Type Description
id ExpMissingChromeProcTable::Id Unique idenitifier for this experimental_missing_chrome_processes.
type string The name of the "most-specific" child table containing this row.
upid uint32_t
reliable_from int64_t
optional

filedescriptor

Contains information of filedescriptors collected during the trace

Column Type Description
id FiledescriptorTable::Id Unique idenitifier for this filedescriptor.
type string The name of the "most-specific" child table containing this row.
ufd int64_t Unique fd. This is != the OS fd
This is a monotonic number associated to each filedescriptor. The OS assigned fd cannot be used as primary key because fds are recycled by most kernels.
fd int64_t 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 |ufd| instead.
ts int64_t
optional
The timestamp for when the fd was collected.
upid uint32_t
optional
The upid of the process which opened the filedescriptor.
path string
optional
The path to the file or device backing the fd In case this was a socket the path will be the port number.

metadata

Column Type Description
id MetadataTable::Id Unique idenitifier for this metadata.
type string The name of the "most-specific" child table containing this row.
name string
key_type string
int_value int64_t
optional
str_value string
optional

gpu_counter_group

Column Type Description
id GpuCounterGroupTable::Id Unique idenitifier for this gpu_counter_group.
type string The name of the "most-specific" child table containing this row.
group_id int32_t
track_id TrackTable::Id Joinable with track.id

package_list

Metadata about packages installed on the system. This is generated by the packages_list data-source.

Column Type Description
id PackageListTable::Id Unique idenitifier for this package_list.
type string The name of the "most-specific" child table containing this row.
package_name string name of the package, e.g. com.google.android.gm.
uid int64_t UID processes of this package run as.
debuggable int32_t bool whether this app is debuggable.
profileable_from_shell int32_t bool whether this app is profileable.
version_code int64_t versionCode from the APK.

vulkan_memory_allocations

Column Type Description
id VulkanMemoryAllocationsTable::Id Unique idenitifier for this vulkan_memory_allocations.
type string The name of the "most-specific" child table containing this row.
arg_set_id uint32_t
optional
source string
operation string
timestamp int64_t
upid uint32_t
optional
device int64_t
optional
device_memory int64_t
optional
memory_type uint32_t
optional
heap uint32_t
optional
function_name string
optional
object_handle int64_t
optional
memory_address int64_t
optional
memory_size int64_t
optional
scope string

experimental_proto_path

Experimental table, subject to arbitrary breaking changes.

Column Type Description
id ExperimentalProtoPathTable::Id Unique idenitifier for this experimental_proto_path.
type string The name of the "most-specific" child table containing this row.
parent_id ExperimentalProtoPathTable::Id
optional
Joinable with experimental_proto_path.id
field_type string
field_name string
optional
arg_set_id uint32_t
optional

experimental_proto_content

Column Type Description
id ExperimentalProtoContentTable::Id Unique idenitifier for this experimental_proto_content.
type string The name of the "most-specific" child table containing this row.
path string
path_id ExperimentalProtoPathTable::Id Joinable with experimental_proto_path.id
total_size int64_t
size int64_t
count int64_t