• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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