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. 17CREATE PERFETTO VIEW thread_slice ( 18 -- Slice 19 id ID(slice.id), 20 -- Alias for `slice.ts`. 21 ts TIMESTAMP, 22 -- Alias for `slice.dur`. 23 dur DURATION, 24 -- Alias for `slice.category`. 25 category STRING, 26 -- Alias for `slice.name`. 27 name STRING, 28 -- Alias for `slice.track_id`. 29 track_id JOINID(track.id), 30 -- Alias for `thread_track.name`. 31 track_name STRING, 32 -- Alias for `thread.name`. 33 thread_name STRING, 34 -- Alias for `thread.utid`. 35 utid JOINID(thread.id), 36 -- Alias for `thread.tid`. 37 tid LONG, 38 -- Alias for `thread.is_main_thread`. 39 is_main_thread BOOL, 40 -- Alias for `process.name`. 41 process_name STRING, 42 -- Alias for `process.upid`. 43 upid JOINID(process.id), 44 -- Alias for `process.pid`. 45 pid LONG, 46 -- Alias for `slice.depth`. 47 depth LONG, 48 -- Alias for `slice.parent_id`. 49 parent_id JOINID(slice.id), 50 -- Alias for `slice.arg_set_id`. 51 arg_set_id ARGSETID, 52 -- Alias for `slice.thread_ts`. 53 thread_ts TIMESTAMP, 54 -- Alias for `slice.thread_dur`. 55 thread_dur LONG 56) AS 57SELECT 58 slice.id, 59 slice.ts, 60 slice.dur, 61 slice.category, 62 slice.name, 63 slice.track_id, 64 thread_track.name AS track_name, 65 thread.name AS thread_name, 66 thread.utid, 67 thread.tid, 68 thread.is_main_thread, 69 process.name AS process_name, 70 process.upid, 71 process.pid, 72 slice.depth, 73 slice.parent_id, 74 slice.arg_set_id, 75 slice.thread_ts, 76 slice.thread_dur 77FROM slice 78JOIN thread_track 79 ON slice.track_id = thread_track.id 80JOIN thread 81 USING (utid) 82LEFT JOIN process 83 USING (upid); 84 85-- All process slices with data about process track and process. 86CREATE PERFETTO VIEW process_slice ( 87 -- Slice 88 id ID(slice.id), 89 -- Alias for `slice.ts`. 90 ts TIMESTAMP, 91 -- Alias for `slice.dur`. 92 dur DURATION, 93 -- Alias for `slice.category`. 94 category STRING, 95 -- Alias for `slice.name`. 96 name STRING, 97 -- Alias for `slice.track_id`. 98 track_id JOINID(track.id), 99 -- Alias for `process_track.name`. 100 track_name STRING, 101 -- Alias for `process.name`. 102 process_name STRING, 103 -- Alias for `process.upid`. 104 upid JOINID(process.id), 105 -- Alias for `process.pid`. 106 pid LONG, 107 -- Alias for `slice.depth`. 108 depth LONG, 109 -- Alias for `slice.parent_id`. 110 parent_id JOINID(slice.id), 111 -- Alias for `slice.arg_set_id`. 112 arg_set_id ARGSETID, 113 -- Alias for `slice.thread_ts`. 114 thread_ts TIMESTAMP, 115 -- Alias for `slice.thread_dur`. 116 thread_dur LONG 117) AS 118SELECT 119 slice.id, 120 slice.ts, 121 slice.dur, 122 slice.category, 123 slice.name, 124 slice.track_id, 125 process_track.name AS track_name, 126 process.name AS process_name, 127 process.upid, 128 process.pid, 129 slice.depth, 130 slice.parent_id, 131 slice.arg_set_id, 132 slice.thread_ts, 133 slice.thread_dur 134FROM slice 135JOIN process_track 136 ON slice.track_id = process_track.id 137JOIN process 138 USING (upid); 139 140-- All the slices in the trace associated to a thread or a process along 141-- with contextual information about them (e.g. thread name, process name, tid etc). 142CREATE PERFETTO VIEW thread_or_process_slice ( 143 -- Slice 144 id JOINID(slice.id), 145 -- Alias for `slice.ts`. 146 ts TIMESTAMP, 147 -- Alias for `slice.dur`. 148 dur DURATION, 149 -- Alias for `slice.category`. 150 category STRING, 151 -- Alias for `slice.name`. 152 name STRING, 153 -- Alias for `slice.track_id`. 154 track_id JOINID(track.id), 155 -- Alias for `track.name`. 156 track_name STRING, 157 -- Alias for `thread.name`. 158 thread_name STRING, 159 -- Alias for `thread.utid`. 160 utid JOINID(thread.id), 161 -- Alias for `thread.tid` 162 tid LONG, 163 -- Alias for `process.name`. 164 process_name STRING, 165 -- Alias for `process.upid`. 166 upid JOINID(process.id), 167 -- Alias for `process.pid`. 168 pid LONG, 169 -- Alias for `slice.depth`. 170 depth LONG, 171 -- Alias for `slice.parent_id`. 172 parent_id JOINID(slice.id), 173 -- Alias for `slice.arg_set_id`. 174 arg_set_id ARGSETID 175) AS 176SELECT 177 slice.id, 178 slice.ts, 179 slice.dur, 180 slice.category, 181 slice.name, 182 slice.track_id, 183 thread_track.name AS track_name, 184 thread.name AS thread_name, 185 thread.utid, 186 thread.tid, 187 process.name AS process_name, 188 process.upid AS upid, 189 process.pid AS pid, 190 slice.depth, 191 slice.parent_id, 192 slice.arg_set_id 193FROM slice 194JOIN thread_track 195 ON slice.track_id = thread_track.id 196JOIN thread 197 USING (utid) 198LEFT JOIN process 199 USING (upid) 200UNION ALL 201SELECT 202 slice.id, 203 slice.ts, 204 slice.dur, 205 slice.category, 206 slice.name, 207 slice.track_id, 208 process_track.name AS track_name, 209 NULL AS thread_name, 210 NULL AS utid, 211 NULL AS tid, 212 process.name AS process_name, 213 process.upid AS upid, 214 process.pid AS pid, 215 slice.depth, 216 slice.parent_id, 217 slice.arg_set_id 218FROM slice 219JOIN process_track 220 ON slice.track_id = process_track.id 221JOIN process 222 USING (upid); 223