PerfettoSQL Prelude

Tables diagram

Tracks tables

graph TD subgraph Tracks TrackTable["track"] CounterTrackTable["counter_track"] CpuTrackTable["cpu_track"] GpuTrackTable["gpu_track"] UidTrackTable["uid_track"] GpuWorkPeriodTrackTable["gpu_work_period_track"] LinuxDeviceTrackTable["linux_device_track"] ProcessTrackTable["process_track"] ThreadTrackTable["thread_track"] end TrackTable["track"] -. parent_id .-> TrackTable["track"] TrackTable["track"] -. source_arg_set_id .-> ArgTable["args"] TrackTable["track"] -. machine_id .-> MachineTable["machine"] CounterTrackTable["counter_track"] --> TrackTable["track"] CpuTrackTable["cpu_track"] --> TrackTable["track"] GpuTrackTable["gpu_track"] --> TrackTable["track"] UidTrackTable["uid_track"] --> TrackTable["track"] GpuWorkPeriodTrackTable["gpu_work_period_track"] --> UidTrackTable["uid_track"] LinuxDeviceTrackTable["linux_device_track"] --> TrackTable["track"] ProcessTrackTable["process_track"] --> TrackTable["track"] ProcessTrackTable["process_track"] -. upid .-> ProcessTable["process"] ThreadTrackTable["thread_track"] --> TrackTable["track"] ThreadTrackTable["thread_track"] -. utid .-> ThreadTable["thread"] click TrackTable "#track" click TrackTable "#track" click ArgTable "#args" click MachineTable "#machine" click CounterTrackTable "#counter_track" click CpuTrackTable "#cpu_track" click GpuTrackTable "#gpu_track" click UidTrackTable "#uid_track" click GpuWorkPeriodTrackTable "#gpu_work_period_track" click LinuxDeviceTrackTable "#linux_device_track" click ProcessTrackTable "#process_track" click ProcessTable "#process" click ThreadTrackTable "#thread_track" click ThreadTable "#thread"

Events tables

graph TD subgraph Events CounterTable["counter"] SliceTable["slice"] RawTable["__intrinsic_raw"] FtraceEventTable["__intrinsic_ftrace_event"] SchedSliceTable["__intrinsic_sched_slice"] SpuriousSchedWakeupTable["spurious_sched_wakeup"] ThreadStateTable["__intrinsic_thread_state"] end 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["__intrinsic_raw"] -. utid .-> ThreadTable["thread"] RawTable["__intrinsic_raw"] -. arg_set_id .-> ArgTable["args"] RawTable["__intrinsic_raw"] -. ucpu .-> CpuTable["__intrinsic_cpu"] FtraceEventTable["__intrinsic_ftrace_event"] --> RawTable["__intrinsic_raw"] SchedSliceTable["__intrinsic_sched_slice"] -. ucpu .-> CpuTable["__intrinsic_cpu"] ThreadStateTable["__intrinsic_thread_state"] -. waker_id .-> ThreadStateTable["__intrinsic_thread_state"] ThreadStateTable["__intrinsic_thread_state"] -. ucpu .-> CpuTable["__intrinsic_cpu"] click CounterTable "#counter" click CounterTrackTable "#counter_track" click SliceTable "#slice" click TrackTable "#track" click SliceTable "#slice" click ArgTable "#args" click RawTable "#__intrinsic_raw" click ThreadTable "#thread" click ArgTable "#args" click CpuTable "#__intrinsic_cpu" click FtraceEventTable "#__intrinsic_ftrace_event" click SchedSliceTable "#__intrinsic_sched_slice" click CpuTable "#__intrinsic_cpu" click SpuriousSchedWakeupTable "#spurious_sched_wakeup" click ThreadStateTable "#__intrinsic_thread_state" click ThreadStateTable "#__intrinsic_thread_state" click CpuTable "#__intrinsic_cpu"

Android tables

graph TD subgraph Android AndroidLogTable["android_logs"] AndroidDumpstateTable["android_dumpstate"] AndroidGameInterventionListTable["android_game_intervention_list"] AndroidKeyEventsTable["__intrinsic_android_key_events"] AndroidMotionEventsTable["__intrinsic_android_motion_events"] AndroidInputEventDispatchTable["__intrinsic_android_input_event_dispatch"] end AndroidLogTable["android_logs"] -. utid .-> ThreadTable["thread"] AndroidKeyEventsTable["__intrinsic_android_key_events"] -. arg_set_id .-> ArgTable["args"] AndroidMotionEventsTable["__intrinsic_android_motion_events"] -. arg_set_id .-> ArgTable["args"] AndroidInputEventDispatchTable["__intrinsic_android_input_event_dispatch"] -. event_id .-> AndroidMotionEventsTable["__intrinsic_android_motion_events"] AndroidInputEventDispatchTable["__intrinsic_android_input_event_dispatch"] -. arg_set_id .-> ArgTable["args"] click AndroidLogTable "#android_logs" click ThreadTable "#thread" click AndroidDumpstateTable "#android_dumpstate" click AndroidGameInterventionListTable "#android_game_intervention_list" click AndroidKeyEventsTable "#__intrinsic_android_key_events" click ArgTable "#args" click AndroidMotionEventsTable "#__intrinsic_android_motion_events" click ArgTable "#args" click AndroidInputEventDispatchTable "#__intrinsic_android_input_event_dispatch" click AndroidMotionEventsTable "#__intrinsic_android_motion_events" click ArgTable "#args"

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"] ExperimentalFlamegraphTable["experimental_flamegraph"] HeapProfileAllocationTable["heap_profile_allocation"] PerfSessionTable["__intrinsic_perf_session"] 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"] ExperimentalFlamegraphTable["experimental_flamegraph"] -. parent_id .-> ExperimentalFlamegraphTable["experimental_flamegraph"] HeapProfileAllocationTable["heap_profile_allocation"] -. callsite_id .-> StackProfileCallsiteTable["stack_profile_callsite"] PerfSampleTable["perf_sample"] -. callsite_id .-> StackProfileCallsiteTable["stack_profile_callsite"] PerfSampleTable["perf_sample"] -. perf_session_id .-> PerfSessionTable["__intrinsic_perf_session"] 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 ExperimentalFlamegraphTable "#experimental_flamegraph" click ExperimentalFlamegraphTable "#experimental_flamegraph" click HeapProfileAllocationTable "#heap_profile_allocation" click StackProfileCallsiteTable "#stack_profile_callsite" click PerfSessionTable "#__intrinsic_perf_session" click PerfSampleTable "#perf_sample" click StackProfileCallsiteTable "#stack_profile_callsite" click PerfSessionTable "#__intrinsic_perf_session" click ProfilerSmapsTable "#profiler_smaps" click SymbolTable "#stack_profile_symbol"

Chrome tables

graph TD subgraph Chrome ExpMissingChromeProcTable["experimental_missing_chrome_processes"] end click ExpMissingChromeProcTable "#experimental_missing_chrome_processes"

Counter Tracks tables

graph TD subgraph Counter Tracks PerfCounterTrackTable["perf_counter_track"] CpuCounterTrackTable["cpu_counter_track"] EnergyCounterTrackTable["energy_counter_track"] UidCounterTrackTable["uid_counter_track"] EnergyPerUidCounterTrackTable["energy_per_uid_counter_track"] GpuCounterTrackTable["gpu_counter_track"] IrqCounterTrackTable["irq_counter_track"] ProcessCounterTrackTable["process_counter_track"] SoftirqCounterTrackTable["softirq_counter_track"] ThreadCounterTrackTable["thread_counter_track"] end PerfCounterTrackTable["perf_counter_track"] --> CounterTrackTable["counter_track"] PerfCounterTrackTable["perf_counter_track"] -. perf_session_id .-> PerfSessionTable["__intrinsic_perf_session"] CpuCounterTrackTable["cpu_counter_track"] --> CounterTrackTable["counter_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"] IrqCounterTrackTable["irq_counter_track"] --> CounterTrackTable["counter_track"] ProcessCounterTrackTable["process_counter_track"] --> CounterTrackTable["counter_track"] ProcessCounterTrackTable["process_counter_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"] click PerfCounterTrackTable "#perf_counter_track" click PerfSessionTable "#__intrinsic_perf_session" click CpuCounterTrackTable "#cpu_counter_track" click EnergyCounterTrackTable "#energy_counter_track" click UidCounterTrackTable "#uid_counter_track" click EnergyPerUidCounterTrackTable "#energy_per_uid_counter_track" click GpuCounterTrackTable "#gpu_counter_track" click IrqCounterTrackTable "#irq_counter_track" click ProcessCounterTrackTable "#process_counter_track" click ProcessTable "#process" click SoftirqCounterTrackTable "#softirq_counter_track" click ThreadCounterTrackTable "#thread_counter_track" click ThreadTable "#thread"

jit tables

graph TD subgraph jit JitCodeTable["__intrinsic_jit_code"] JitFrameTable["__intrinsic_jit_frame"] end JitFrameTable["__intrinsic_jit_frame"] -. jit_code_id .-> JitCodeTable["__intrinsic_jit_code"] JitFrameTable["__intrinsic_jit_frame"] -. frame_id .-> StackProfileFrameTable["stack_profile_frame"] click JitCodeTable "#__intrinsic_jit_code" click JitFrameTable "#__intrinsic_jit_frame" click JitCodeTable "#__intrinsic_jit_code" click StackProfileFrameTable "#stack_profile_frame"

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"

Metadata tables

graph TD subgraph Metadata MachineTable["machine"] ProcessTable["process"] ThreadTable["thread"] FiledescriptorTable["filedescriptor"] MetadataTable["metadata"] end ProcessTable["process"] -. parent_upid .-> ProcessTable["process"] ProcessTable["process"] -. uid .-> PackageListTable["package_list"] ProcessTable["process"] -. arg_set_id .-> ArgTable["args"] ProcessTable["process"] -. machine_id .-> MachineTable["machine"] ThreadTable["thread"] -. upid .-> ProcessTable["process"] ThreadTable["thread"] -. machine_id .-> MachineTable["machine"] click MachineTable "#machine" click ProcessTable "#process" click ProcessTable "#process" click PackageListTable "#package_list" click ArgTable "#args" click MachineTable "#machine" click ThreadTable "#thread" click ProcessTable "#process" click MachineTable "#machine" click FiledescriptorTable "#filedescriptor" click MetadataTable "#metadata"

Proto tables

graph TD subgraph Proto ExperimentalProtoPathTable["experimental_proto_path"] ExperimentalProtoContentTable["experimental_proto_content"] end ExperimentalProtoPathTable["experimental_proto_path"] -. parent_id .-> ExperimentalProtoPathTable["experimental_proto_path"] ExperimentalProtoContentTable["experimental_proto_content"] -. path_id .-> ExperimentalProtoPathTable["experimental_proto_path"] click ExperimentalProtoPathTable "#experimental_proto_path" click ExperimentalProtoPathTable "#experimental_proto_path" click ExperimentalProtoContentTable "#experimental_proto_content" click ExperimentalProtoPathTable "#experimental_proto_path"

Slice tables

graph TD subgraph Slice ActualFrameTimelineSliceTable["actual_frame_timeline_slice"] AndroidNetworkPacketsTable["__intrinsic_android_network_packets"] ExpectedFrameTimelineSliceTable["expected_frame_timeline_slice"] ExperimentalFlatSliceTable["experimental_flat_slice"] GpuSliceTable["gpu_slice"] GraphicsFrameSliceTable["frame_slice"] end ActualFrameTimelineSliceTable["actual_frame_timeline_slice"] --> SliceTable["slice"] AndroidNetworkPacketsTable["__intrinsic_android_network_packets"] --> 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 ActualFrameTimelineSliceTable "#actual_frame_timeline_slice" click AndroidNetworkPacketsTable "#__intrinsic_android_network_packets" 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"

v8 tables

graph TD subgraph v8 V8IsolateTable["__intrinsic_v8_isolate"] V8JsScriptTable["__intrinsic_v8_js_script"] V8WasmScriptTable["__intrinsic_v8_wasm_script"] V8JsFunctionTable["__intrinsic_v8_js_function"] V8JsCodeTable["__intrinsic_v8_js_code"] V8InternalCodeTable["__intrinsic_v8_internal_code"] V8WasmCodeTable["__intrinsic_v8_wasm_code"] V8RegexpCodeTable["__intrinsic_v8_regexp_code"] end V8JsScriptTable["__intrinsic_v8_js_script"] -. v8_isolate_id .-> V8IsolateTable["__intrinsic_v8_isolate"] V8WasmScriptTable["__intrinsic_v8_wasm_script"] -. v8_isolate_id .-> V8IsolateTable["__intrinsic_v8_isolate"] V8JsFunctionTable["__intrinsic_v8_js_function"] -. v8_js_script_id .-> V8JsScriptTable["__intrinsic_v8_js_script"] V8JsCodeTable["__intrinsic_v8_js_code"] -. jit_code_id .-> JitCodeTable["__intrinsic_jit_code"] V8JsCodeTable["__intrinsic_v8_js_code"] -. v8_js_function_id .-> V8JsFunctionTable["__intrinsic_v8_js_function"] V8InternalCodeTable["__intrinsic_v8_internal_code"] -. jit_code_id .-> JitCodeTable["__intrinsic_jit_code"] V8InternalCodeTable["__intrinsic_v8_internal_code"] -. v8_isolate_id .-> V8IsolateTable["__intrinsic_v8_isolate"] V8WasmCodeTable["__intrinsic_v8_wasm_code"] -. jit_code_id .-> JitCodeTable["__intrinsic_jit_code"] V8WasmCodeTable["__intrinsic_v8_wasm_code"] -. v8_isolate_id .-> V8IsolateTable["__intrinsic_v8_isolate"] V8WasmCodeTable["__intrinsic_v8_wasm_code"] -. v8_wasm_script_id .-> V8WasmScriptTable["__intrinsic_v8_wasm_script"] V8RegexpCodeTable["__intrinsic_v8_regexp_code"] -. jit_code_id .-> JitCodeTable["__intrinsic_jit_code"] V8RegexpCodeTable["__intrinsic_v8_regexp_code"] -. v8_isolate_id .-> V8IsolateTable["__intrinsic_v8_isolate"] click V8IsolateTable "#__intrinsic_v8_isolate" click V8JsScriptTable "#__intrinsic_v8_js_script" click V8IsolateTable "#__intrinsic_v8_isolate" click V8WasmScriptTable "#__intrinsic_v8_wasm_script" click V8IsolateTable "#__intrinsic_v8_isolate" click V8JsFunctionTable "#__intrinsic_v8_js_function" click V8JsScriptTable "#__intrinsic_v8_js_script" click V8JsCodeTable "#__intrinsic_v8_js_code" click JitCodeTable "#__intrinsic_jit_code" click V8JsFunctionTable "#__intrinsic_v8_js_function" click V8InternalCodeTable "#__intrinsic_v8_internal_code" click JitCodeTable "#__intrinsic_jit_code" click V8IsolateTable "#__intrinsic_v8_isolate" click V8WasmCodeTable "#__intrinsic_v8_wasm_code" click JitCodeTable "#__intrinsic_jit_code" click V8IsolateTable "#__intrinsic_v8_isolate" click V8WasmScriptTable "#__intrinsic_v8_wasm_script" click V8RegexpCodeTable "#__intrinsic_v8_regexp_code" click JitCodeTable "#__intrinsic_jit_code" click V8IsolateTable "#__intrinsic_v8_isolate"

Winscope tables

graph TD subgraph Winscope ProtoLogTable["protolog"] InputMethodClientsTable["__intrinsic_inputmethod_clients"] InputMethodManagerServiceTable["__intrinsic_inputmethod_manager_service"] InputMethodServiceTable["__intrinsic_inputmethod_service"] SurfaceFlingerLayersSnapshotTable["surfaceflinger_layers_snapshot"] SurfaceFlingerLayerTable["surfaceflinger_layer"] SurfaceFlingerTransactionsTable["surfaceflinger_transactions"] ViewCaptureTable["__intrinsic_viewcapture"] WindowManagerShellTransitionsTable["window_manager_shell_transitions"] WindowManagerShellTransitionHandlersTable["window_manager_shell_transition_handlers"] WindowManagerTable["__intrinsic_windowmanager"] end SurfaceFlingerLayerTable["surfaceflinger_layer"] -. snapshot_id .-> SurfaceFlingerLayersSnapshotTable["surfaceflinger_layers_snapshot"] click ProtoLogTable "#protolog" click InputMethodClientsTable "#__intrinsic_inputmethod_clients" click InputMethodManagerServiceTable "#__intrinsic_inputmethod_manager_service" click InputMethodServiceTable "#__intrinsic_inputmethod_service" click SurfaceFlingerLayersSnapshotTable "#surfaceflinger_layers_snapshot" click SurfaceFlingerLayerTable "#surfaceflinger_layer" click SurfaceFlingerLayersSnapshotTable "#surfaceflinger_layers_snapshot" click SurfaceFlingerTransactionsTable "#surfaceflinger_transactions" click ViewCaptureTable "#__intrinsic_viewcapture" click WindowManagerShellTransitionsTable "#window_manager_shell_transitions" click WindowManagerShellTransitionHandlersTable "#window_manager_shell_transition_handlers" click WindowManagerTable "#__intrinsic_windowmanager"

Misc tables

graph TD subgraph Misc FlowTable["flow"] ArgTable["args"] ClockSnapshotTable["clock_snapshot"] CpuTable["__intrinsic_cpu"] CpuFreqTable["__intrinsic_cpu_freq"] GpuCounterGroupTable["gpu_counter_group"] PackageListTable["package_list"] VulkanMemoryAllocationsTable["vulkan_memory_allocations"] end FlowTable["flow"] -. slice_out .-> SliceTable["slice"] FlowTable["flow"] -. slice_in .-> SliceTable["slice"] ClockSnapshotTable["clock_snapshot"] -. machine_id .-> MachineTable["machine"] CpuTable["__intrinsic_cpu"] -. machine_id .-> MachineTable["machine"] CpuFreqTable["__intrinsic_cpu_freq"] -. ucpu .-> CpuTable["__intrinsic_cpu"] GpuCounterGroupTable["gpu_counter_group"] -. track_id .-> TrackTable["track"] click FlowTable "#flow" click SliceTable "#slice" click SliceTable "#slice" click ArgTable "#args" click ClockSnapshotTable "#clock_snapshot" click MachineTable "#machine" click CpuTable "#__intrinsic_cpu" click MachineTable "#machine" click CpuFreqTable "#__intrinsic_cpu_freq" click CpuTable "#__intrinsic_cpu" click GpuCounterGroupTable "#gpu_counter_group" click TrackTable "#track" click PackageListTable "#package_list" click VulkanMemoryAllocationsTable "#vulkan_memory_allocations"

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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

gpu_track

Extends track

Tracks associated 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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

uid_track

Extends track

Tracks associated to a UID.

Column Type Description
uid int32_t The uid associated with this track.
Columns inherited from track
id TrackTable::Id Unique identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

gpu_work_period_track

Extends uid_track

Tracks containing gpu_work_period events.

Column Type Description
gpu_id uint32_t The identifier for the GPU.
Columns inherited from uid_track
uid int32_t The uid associated with this track.
Columns inherited from track
id TrackTable::Id Unique identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

linux_device_track

Extends track

Slice data corresponding to runtime power state transitions associated with Linux devices (where a Linux device is anything managed by a Linux driver). The name of each track corresponds to the device name as recognized by the linux kernel running on the system.

Column Type Description
Columns inherited from track
id TrackTable::Id Unique identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

Events

counter

Column Type Description
id CounterTable::Id Unique identifier 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 identifier 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.

__intrinsic_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 identifier for this __intrinsic_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.
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.
ucpu CpuTable::Id The unique CPU indentifier
Joinable with __intrinsic_cpu.id

__intrinsic_ftrace_event

Extends __intrinsic_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 __intrinsic_raw
id RawTable::Id Unique identifier for this __intrinsic_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.
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.
ucpu CpuTable::Id The unique CPU indentifier
Joinable with __intrinsic_cpu.id

__intrinsic_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 identifier for this __intrinsic_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).
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.
ucpu CpuTable::Id The unique CPU identifier that the slice executed on
Joinable with __intrinsic_cpu.id

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 identifier 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.

__intrinsic_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 identifier for this __intrinsic_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).
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.
waker_id ThreadStateTable::Id
optional
The unique thread state id which caused a wakeup of this thread
Joinable with __intrinsic_thread_state.id
irq_context uint32_t
optional
Whether the wakeup was from interrupt context or process context.
ucpu CpuTable::Id
optional
The unique CPU identifier that the thread executed on
Joinable with __intrinsic_cpu.id

Android

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 identifier 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 identifier 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.

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 identifier 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.

__intrinsic_android_key_events

Contains Android KeyEvents processed by the system

Column Type Description
id AndroidKeyEventsTable::Id Unique identifier for this __intrinsic_android_key_events.
type string The name of the "most-specific" child table containing this row.
event_id uint32_t The randomly-generated ID associated with each input event processed by Android Framework, used to track the event through the input pipeline.
ts int64_t The timestamp of when the input event was processed by the system.
arg_set_id uint32_t Details of the key event parsed from the proto message
Joinable with args.arg_set_id

__intrinsic_android_motion_events

Contains Android MotionEvents processed by the system

Column Type Description
id AndroidMotionEventsTable::Id Unique identifier for this __intrinsic_android_motion_events.
type string The name of the "most-specific" child table containing this row.
event_id uint32_t The randomly-generated ID associated with each input event processed by Android Framework, used to track the event through the input pipeline.
ts int64_t The timestamp of when the input event was processed by the system.
arg_set_id uint32_t Details of the motion event parsed from the proto message
Joinable with args.arg_set_id

__intrinsic_android_input_event_dispatch

Contains records of Android input events being dispatched to input windows by the Android Framework.

Column Type Description
id AndroidInputEventDispatchTable::Id Unique identifier for this __intrinsic_android_input_event_dispatch.
type string The name of the "most-specific" child table containing this row.
event_id uint32_t The id of the input event that was dispatched
Joinable with __intrinsic_android_motion_events.event_id
arg_set_id uint32_t Details of the dispatched event parsed from the proto message
Joinable with args.arg_set_id
vsync_id int64_t The id of the vsync during which the Framework made the decision to dispatch this input event, used to identify the state of the input windows when the dispatching decision was made.
window_id int32_t The id of the window to which the event was dispatched.

ART Heap Graphs

heap_graph_class

Column Type Description
id HeapGraphClassTable::Id Unique identifier 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.
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 identifier for this heap_graph_object.
type string The name of the "most-specific" child table containing this row.
upid uint32_t Unique PID 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 identifier 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
The deobfuscated name, if field_name was obfuscated and a deobfuscation mapping was provided for it.

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 identifier 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 identifier 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
Deobfuscated name of the function this location is in.

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 identifier 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 identifier 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 identifier 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

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 ExperimentalFlamegraphTable::Id Unique identifier for this experimental_flamegraph.
type string The name of the "most-specific" child table containing this row.
ts int64_t
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 ExperimentalFlamegraphTable::Id
optional
Joinable with experimental_flamegraph.id
source_file string
optional
line_number uint32_t
optional

heap_profile_allocation

Allocations that happened at a callsite.

NOTE: this table is not sorted by timestamp intentionanlly - see b/193757386 for details.

This is generated by heapprofd.

Column Type Description
id HeapProfileAllocationTable::Id Unique identifier 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 unique PID 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.

__intrinsic_perf_session

Perf sessions.

Column Type Description
id PerfSessionTable::Id Unique identifier for this __intrinsic_perf_session.
type string The name of the "most-specific" child table containing this row.
cmdline string
optional
Command line used to collect the data.

perf_sample

Samples from the traced_perf profiler.

Column Type Description
id PerfSampleTable::Id Unique identifier 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
optional
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 PerfSessionTable::Id Distinguishes samples from different profiling streams (i.e. multiple data sources)
Joinable with __intrinsic_perf_session.id

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 identifier for this profiler_smaps.
type string The name of the "most-specific" child table containing this row.
upid uint32_t The unique PID 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 identifier 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.

Chrome

experimental_missing_chrome_processes

Experimental table, subject to arbitrary breaking changes.

Column Type Description
id ExpMissingChromeProcTable::Id Unique identifier 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

Counter Tracks

perf_counter_track

Extends counter_track

Sampled counters' values for samples in the perf_sample table.

Column Type Description
perf_session_id PerfSessionTable::Id id of a distict profiling stream Joinable with __intrinsic_perf_session.id
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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.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 identifier 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
machine_id MachineTable::Id
optional
Machine identifier, non-null for tracks on a remote machine
Joinable with machine.id

jit

__intrinsic_jit_code

Represents a jitted code snippet

Column Type Description
id JitCodeTable::Id Unique identifier for this __intrinsic_jit_code.
type string The name of the "most-specific" child table containing this row.
create_ts int64_t Time this code was created / allocated
estimated_delete_ts int64_t
optional
Time this code was destroyed / deallocated. This is an upper bound, as we can only detect deletions indirectly when new code is allocated overlapping existing one.
utid uint32_t Thread that generated the code
start_address int64_t Start address for the generated code
size int64_t Size in bytes of the generated code
function_name string Function name
native_code_base64 string
optional
Jitted code base64 encoded
jit_code_id JitCodeTable::Id Alias for id. Makes joins easier

__intrinsic_jit_frame

Represents a jitted frame

Column Type Description
id JitFrameTable::Id Unique identifier for this __intrinsic_jit_frame.
type string The name of the "most-specific" child table containing this row.
jit_code_id JitCodeTable::Id Jitted code snipped the frame is in Joinable with __intrinsic_jit_code.id
frame_id StackProfileFrameTable::Id Jitted frame Joinable with stack_profile_frame.id

Memory Snapshots

memory_snapshot

Column Type Description
id MemorySnapshotTable::Id Unique identifier 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 identifier 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 identifier 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 identifier 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

Metadata

machine

Contains raw machine_id of trace packets emitted from remote machines.

Column Type Description
id MachineTable::Id Unique identifier for this machine.
type string The name of the "most-specific" child table containing this row.
raw_id uint32_t Raw machine identifier in the trace packet, non-zero for remote machines.

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
machine_id MachineTable::Id
optional
Machine identifier, non-null for processes on a remote machine
Joinable with machine.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.
machine_id MachineTable::Id
optional
Machine identifier, non-null for threads on a remote machine
Joinable with machine.id

filedescriptor

Contains information of filedescriptors collected during the trace

Column Type Description
id FiledescriptorTable::Id Unique identifier 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 identifier 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

Proto

experimental_proto_path

Experimental table, subject to arbitrary breaking changes.

Column Type Description
id ExperimentalProtoPathTable::Id Unique identifier 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 identifier 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

Slice

actual_frame_timeline_slice

Extends 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.

Column Type Description
display_frame_token int64_t Display frame token (vsync id).
surface_frame_token int64_t Surface frame token (vsync id), null if this is a display frame.
upid uint32_t 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 int32_t Whether the frame finishes on time.
gpu_composition int32_t 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.
Columns inherited from slice
id SliceTable::Id Unique identifier 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.

__intrinsic_android_network_packets

Extends slice

This table contains details on Android Network activity.

Column Type Description
iface string The name of the network interface used
direction string The direction of traffic (Received or Transmitted)
packet_transport string The transport protocol of packets in this event
packet_length int64_t The length (in bytes) of packets in this event
packet_count int64_t The number of packets contained in this event
socket_tag uint32_t The Android network tag of the socket
socket_tag_str string The socket tag formatted as a hex string
socket_uid uint32_t The Linux user id of the socket
local_port uint32_t
optional
The local udp/tcp port
remote_port uint32_t
optional
The remote udp/tcp port
packet_icmp_type uint32_t
optional
The 1-byte ICMP type identifier
packet_icmp_code uint32_t
optional
The 1-byte ICMP code identifier
packet_tcp_flags uint32_t
optional
The TCP flags as an integer bitmask (FIN=0x1, SYN=0x2, etc)
packet_tcp_flags_str string
optional
The TCP flags formatted as a string bitmask (e.g. "f...a..." for FIN & ACK)
Columns inherited from slice
id SliceTable::Id Unique identifier 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

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

Column Type Description
display_frame_token int64_t Display frame token (vsync id).
surface_frame_token int64_t Surface frame token (vsync id), null if this is a display frame.
upid uint32_t Unique process id of the app that generates the surface frame.
layer_name string Layer name if this is a surface frame.
Columns inherited from slice
id SliceTable::Id Unique identifier 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 identifier 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
upid uint32_t
optional
Unique process id of the app that generates this gpu render stage event.
render_subpasses string
Columns inherited from slice
id SliceTable::Id Unique identifier 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 identifier 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.

v8

__intrinsic_v8_isolate

Represents one Isolate instance

Column Type Description
id V8IsolateTable::Id Unique identifier for this __intrinsic_v8_isolate.
type string The name of the "most-specific" child table containing this row.
upid uint32_t Process the isolate was created in.
internal_isolate_id int32_t Internal id used by the v8 engine. Unique in a process.
embedded_blob_code_start_address int64_t Absolute start address of the embedded code blob.
embedded_blob_code_size int64_t Size in bytes of the embedded code blob.
code_range_base_address int64_t
optional
If this Isolate defines a CodeRange its base address is stored here
code_range_size int64_t
optional
If this Isolate defines a CodeRange its size is stored here
shared_code_range uint32_t
optional
Whether the code range for this Isolate is shared with others in the same process. There is at max one such shared code range per process.
embedded_blob_code_copy_start_address int64_t
optional
Used when short builtin calls are enabled, where embedded builtins are copied into the CodeRange so calls can be nearer.

__intrinsic_v8_js_script

Represents one Javascript script

Column Type Description
id V8JsScriptTable::Id Unique identifier for this __intrinsic_v8_js_script.
type string The name of the "most-specific" child table containing this row.
v8_isolate_id V8IsolateTable::Id V8 Isolate Joinable with __intrinsic_v8_isolate.id
internal_script_id int32_t Script id used by the V8 engine
script_type string
name string
source string
optional
Actual contents of the script.

__intrinsic_v8_wasm_script

Represents one WASM script

Column Type Description
id V8WasmScriptTable::Id Unique identifier for this __intrinsic_v8_wasm_script.
type string The name of the "most-specific" child table containing this row.
v8_isolate_id V8IsolateTable::Id V8 Isolate Joinable with __intrinsic_v8_isolate.id
internal_script_id int32_t Script id used by the V8 engine
url string URL of the source
source string
optional
Actual contents of the script.

__intrinsic_v8_js_function

Represents a v8 Javascript function

Column Type Description
id V8JsFunctionTable::Id Unique identifier for this __intrinsic_v8_js_function.
type string The name of the "most-specific" child table containing this row.
name string
v8_js_script_id V8JsScriptTable::Id Script where the function is defined
Joinable with v8_js_script.id
is_toplevel uint32_t Whether this function represents the top level script
kind string Function kind (e.g. regular function or constructor)
line uint32_t
optional
Line in script where function is defined. Starts at 1
col uint32_t
optional
Column in script where function is defined. Starts at 1

__intrinsic_v8_js_code

Represents a v8 code snippet for a Javascript function. A given function can have multiple code snippets (e.g. for different compilation tiers, or as the function moves around the heap)

Column Type Description
id V8JsCodeTable::Id Unique identifier for this __intrinsic_v8_js_code.
type string The name of the "most-specific" child table containing this row.
jit_code_id JitCodeTable::Id
optional
Set for all tiers except IGNITION
Joinable with __intrinsic_jit_code.id
v8_js_function_id V8JsFunctionTable::Id JS function for this snippet
Joinable with __intrinsic_v8_js_function.id
tier string Compilation tier
bytecode_base64 string
optional
Set only for the IGNITION tier (base64 encoded)

__intrinsic_v8_internal_code

Represents a v8 code snippet for a v8 internal function.

Column Type Description
id V8InternalCodeTable::Id Unique identifier for this __intrinsic_v8_internal_code.
type string The name of the "most-specific" child table containing this row.
jit_code_id JitCodeTable::Id Associated JitCode
Joinable with __intrinsic_jit_code.id
v8_isolate_id V8IsolateTable::Id V8 Isolate this code was created in
Joinable with __intrinsic_v8_isolate.id
function_name string Function name.
code_type string Type of internal function (e.g. BYTECODE_HANDLER, BUILTIN)

__intrinsic_v8_wasm_code

Represents the code associated to a WASM function

Column Type Description
id V8WasmCodeTable::Id Unique identifier for this __intrinsic_v8_wasm_code.
type string The name of the "most-specific" child table containing this row.
jit_code_id JitCodeTable::Id Associated JitCode
Joinable with __intrinsic_jit_code.id
v8_isolate_id V8IsolateTable::Id V8 Isolate this code was created in
Joinable with __intrinsic_v8_isolate.id
v8_wasm_script_id V8WasmScriptTable::Id Script where the function is defined
Joinable with v8_wasm_script.id
function_name string Function name.
tier string Compilation tier
code_offset_in_module int32_t Offset into the WASM module where the function starts

__intrinsic_v8_regexp_code

Represents the code associated to a regular expression

Column Type Description
id V8RegexpCodeTable::Id Unique identifier for this __intrinsic_v8_regexp_code.
type string The name of the "most-specific" child table containing this row.
jit_code_id JitCodeTable::Id Associated JitCode
Joinable with __intrinsic_jit_code.id
v8_isolate_id V8IsolateTable::Id V8 Isolate this code was created in
Joinable with __intrinsic_v8_isolate.id
pattern string The pattern the this regular expression was compiled from

Winscope

protolog

Protolog

Column Type Description
id ProtoLogTable::Id Unique identifier for this protolog.
type string The name of the "most-specific" child table containing this row.
ts int64_t 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

__intrinsic_inputmethod_clients

InputMethod clients

Column Type Description
id InputMethodClientsTable::Id Unique identifier for this __intrinsic_inputmethod_clients.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the dump was triggered
arg_set_id uint32_t Extra args parsed from the proto message

__intrinsic_inputmethod_manager_service

InputMethod manager service

Column Type Description
id InputMethodManagerServiceTable::Id Unique identifier for this __intrinsic_inputmethod_manager_service.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the dump was triggered
arg_set_id uint32_t Extra args parsed from the proto message

__intrinsic_inputmethod_service

InputMethod service

Column Type Description
id InputMethodServiceTable::Id Unique identifier for this __intrinsic_inputmethod_service.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the dump was triggered
arg_set_id uint32_t Extra args parsed from the proto message

surfaceflinger_layers_snapshot

SurfaceFlinger layers snapshot

Column Type Description
id SurfaceFlingerLayersSnapshotTable::Id Unique identifier for this surfaceflinger_layers_snapshot.
type string The name of the "most-specific" child table containing this row.
ts int64_t Timestamp of the snapshot
arg_set_id uint32_t Extra args parsed from the proto message

surfaceflinger_layer

SurfaceFlinger layer

Column Type Description
id SurfaceFlingerLayerTable::Id Unique identifier for this surfaceflinger_layer.
type string The name of the "most-specific" child table containing this row.
snapshot_id SurfaceFlingerLayersSnapshotTable::Id The snapshot that generated this layer Joinable with surfaceflinger_layers_snapshot.id
arg_set_id uint32_t Extra args parsed from the proto message

surfaceflinger_transactions

SurfaceFlinger transactions. Each row contains a set of transactions that SurfaceFlinger committed together.

Column Type Description
id SurfaceFlingerTransactionsTable::Id Unique identifier for this surfaceflinger_transactions.
type string The name of the "most-specific" child table containing this row.
ts int64_t Timestamp of the transactions commit
arg_set_id uint32_t Extra args parsed from the proto message

__intrinsic_viewcapture

ViewCapture

Column Type Description
id ViewCaptureTable::Id Unique identifier for this __intrinsic_viewcapture.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the views were captured
arg_set_id uint32_t Extra args parsed from the proto message

window_manager_shell_transitions

Window Manager Shell Transitions

Column Type Description
id WindowManagerShellTransitionsTable::Id Unique identifier for this window_manager_shell_transitions.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the transition started playing
transition_id int64_t The id of the transition
arg_set_id uint32_t Extra args parsed from the proto message

window_manager_shell_transition_handlers

Window Manager Shell Transition Handlers

Column Type Description
id WindowManagerShellTransitionHandlersTable::Id Unique identifier for this window_manager_shell_transition_handlers.
type string The name of the "most-specific" child table containing this row.
handler_id int64_t The id of the handler
handler_name string The name of the handler

__intrinsic_windowmanager

WindowManager

Column Type Description
id WindowManagerTable::Id Unique identifier for this __intrinsic_windowmanager.
type string The name of the "most-specific" child table containing this row.
ts int64_t The timestamp the state snapshot was captured
arg_set_id uint32_t Extra args parsed from the proto message

Misc

flow

Column Type Description
id FlowTable::Id Unique identifier for this flow.
type string The name of the "most-specific" child table containing this row.
slice_out SliceTable::Id Id of the slice that this flow flows out of
Joinable with slice.id
slice_in SliceTable::Id If of the slice that this flow flows into
Joinable with slice.id
trace_id int64_t
optional
Ids (raw values passed from the trace) of flows originating, passing through, or ending at this event. They are global within a trace. NULL if flow was "implicitly created", e.g came from Trace Processor inferring a link between binder transaction slices.
arg_set_id uint32_t

args

Column Type Description
id ArgTable::Id Unique identifier 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 identifier 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)
machine_id MachineTable::Id
optional
Machine identifier, non-null for clock snapshots on a remote machine
Joinable with machine.id

__intrinsic_cpu

Contains information of processes seen during the trace

Column Type Description
id CpuTable::Id Unique identifier for this __intrinsic_cpu.
type string The name of the "most-specific" child table containing this row.
cpu uint32_t
optional
the index (0-based) of the CPU core on the device
cluster_id uint32_t the cluster id is shared by CPUs in the same cluster
processor string a string describing this core
machine_id MachineTable::Id
optional
Machine identifier, non-null for CPUs on a remote machine
Joinable with machine.id
capacity uint32_t
optional
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

__intrinsic_cpu_freq

Column Type Description
id CpuFreqTable::Id Unique identifier for this __intrinsic_cpu_freq.
type string The name of the "most-specific" child table containing this row.
ucpu CpuTable::Id Joinable with __intrinsic_cpu.id
freq uint32_t

gpu_counter_group

Column Type Description
id GpuCounterGroupTable::Id Unique identifier 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 identifier 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 identifier 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