1-- 2-- Copyright 2024 The Android Open Source Project 3-- 4-- Licensed under the Apache License, Version 2.0 (the "License"); 5-- you may not use this file except in compliance with the License. 6-- You may obtain a copy of the License at 7-- 8-- https://www.apache.org/licenses/LICENSE-2.0 9-- 10-- Unless required by applicable law or agreed to in writing, software 11-- distributed under the License is distributed on an "AS IS" BASIS, 12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13-- See the License for the specific language governing permissions and 14-- limitations under the License. 15 16-- All thread slices with data about thread, thread track and process. 17-- Where possible, use available view functions which filter this view. 18CREATE PERFETTO VIEW thread_slice( 19 -- Slice 20 id JOINID(slice.id), 21 -- Alias for `slice.type`. 22 type STRING, 23 -- Alias for `slice.ts`. 24 ts TIMESTAMP, 25 -- Alias for `slice.dur`. 26 dur DURATION, 27 -- Alias for `slice.category`. 28 category STRING, 29 -- Alias for `slice.name`. 30 name STRING, 31 -- Alias for `slice.track_id`. 32 track_id JOINID(track.id), 33 -- Alias for `thread_track.name`. 34 track_name STRING, 35 -- Alias for `thread.name`. 36 thread_name STRING, 37 -- Alias for `thread.utid`. 38 utid JOINID(thread.id), 39 -- Alias for `thread.tid`. 40 tid LONG, 41 -- Alias for `thread.is_main_thread`. 42 is_main_thread BOOL, 43 -- Alias for `process.name`. 44 process_name STRING, 45 -- Alias for `process.upid`. 46 upid JOINID(process.id), 47 -- Alias for `process.pid`. 48 pid LONG, 49 -- Alias for `slice.depth`. 50 depth LONG, 51 -- Alias for `slice.parent_id`. 52 parent_id JOINID(slice.id), 53 -- Alias for `slice.arg_set_id`. 54 arg_set_id ARGSETID, 55 -- Alias for `slice.thread_ts`. 56 thread_ts TIMESTAMP, 57 -- Alias for `slice.thread_dur`. 58 thread_dur LONG 59) AS 60SELECT 61 slice.id, 62 slice.type, 63 slice.ts, 64 slice.dur, 65 slice.category, 66 slice.name, 67 slice.track_id, 68 thread_track.name AS track_name, 69 thread.name AS thread_name, 70 thread.utid, 71 thread.tid, 72 thread.is_main_thread, 73 process.name AS process_name, 74 process.upid, 75 process.pid, 76 slice.depth, 77 slice.parent_id, 78 slice.arg_set_id, 79 slice.thread_ts, 80 slice.thread_dur 81FROM slice 82JOIN thread_track ON slice.track_id = thread_track.id 83JOIN thread USING (utid) 84LEFT JOIN process USING (upid); 85 86-- All process slices with data about process track and process. 87-- Where possible, use available view functions which filter this view. 88CREATE PERFETTO VIEW process_slice( 89 -- Slice 90 id JOINID(slice.id), 91 -- Alias for `slice.type`. 92 type STRING, 93 -- Alias for `slice.ts`. 94 ts TIMESTAMP, 95 -- Alias for `slice.dur`. 96 dur DURATION, 97 -- Alias for `slice.category`. 98 category STRING, 99 -- Alias for `slice.name`. 100 name STRING, 101 -- Alias for `slice.track_id`. 102 track_id JOINID(track.id), 103 -- Alias for `process_track.name`. 104 track_name STRING, 105 -- Alias for `process.name`. 106 process_name STRING, 107 -- Alias for `process.upid`. 108 upid JOINID(process.id), 109 -- Alias for `process.pid`. 110 pid LONG, 111 -- Alias for `slice.depth`. 112 depth LONG, 113 -- Alias for `slice.parent_id`. 114 parent_id JOINID(slice.id), 115 -- Alias for `slice.arg_set_id`. 116 arg_set_id ARGSETID, 117 -- Alias for `slice.thread_ts`. 118 thread_ts TIMESTAMP, 119 -- Alias for `slice.thread_dur`. 120 thread_dur LONG 121) AS 122SELECT 123 slice.id, 124 slice.type, 125 slice.ts, 126 slice.dur, 127 slice.category, 128 slice.name, 129 slice.track_id, 130 process_track.name AS track_name, 131 process.name AS process_name, 132 process.upid, 133 process.pid, 134 slice.depth, 135 slice.parent_id, 136 slice.arg_set_id, 137 slice.thread_ts, 138 slice.thread_dur 139FROM slice 140JOIN process_track ON slice.track_id = process_track.id 141JOIN process USING (upid);