• 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
16INCLUDE PERFETTO MODULE viz.summary.slices;
17
18CREATE PERFETTO TABLE _sched_summary AS
19SELECT
20  utid,
21  max(dur) AS max_running_dur,
22  sum(dur) AS sum_running_dur,
23  count() AS running_count
24FROM sched
25WHERE
26  NOT utid IN (
27    SELECT
28      utid
29    FROM thread
30    WHERE
31      is_idle
32  ) AND dur != -1
33GROUP BY
34  utid;
35
36CREATE PERFETTO TABLE _thread_track_summary AS
37SELECT
38  utid,
39  sum(cnt) AS slice_count
40FROM thread_track
41JOIN _slice_track_summary
42  USING (id)
43GROUP BY
44  utid;
45
46CREATE PERFETTO TABLE _perf_sample_summary AS
47SELECT
48  utid,
49  count() AS perf_sample_cnt
50FROM perf_sample
51WHERE
52  callsite_id IS NOT NULL
53GROUP BY
54  utid;
55
56CREATE PERFETTO TABLE _instruments_sample_summary AS
57SELECT
58  utid,
59  count() AS instruments_sample_cnt
60FROM instruments_sample
61WHERE
62  callsite_id IS NOT NULL
63GROUP BY
64  utid;
65
66CREATE PERFETTO TABLE _thread_available_info_summary AS
67WITH
68  raw AS (
69    SELECT
70      utid,
71      ss.max_running_dur,
72      ss.sum_running_dur,
73      ss.running_count,
74      (
75        SELECT
76          slice_count
77        FROM _thread_track_summary
78        WHERE
79          utid = t.utid
80      ) AS slice_count,
81      (
82        SELECT
83          perf_sample_cnt
84        FROM _perf_sample_summary
85        WHERE
86          utid = t.utid
87      ) AS perf_sample_count,
88      (
89        SELECT
90          instruments_sample_cnt
91        FROM _instruments_sample_summary
92        WHERE
93          utid = t.utid
94      ) AS instruments_sample_count
95    FROM thread AS t
96    LEFT JOIN _sched_summary AS ss
97      USING (utid)
98  )
99SELECT
100  utid,
101  coalesce(max_running_dur, 0) AS max_running_dur,
102  coalesce(sum_running_dur, 0) AS sum_running_dur,
103  coalesce(running_count, 0) AS running_count,
104  coalesce(slice_count, 0) AS slice_count,
105  coalesce(perf_sample_count, 0) AS perf_sample_count,
106  coalesce(instruments_sample_count, 0) AS instruments_sample_count
107FROM raw AS r
108WHERE
109  NOT (
110    r.max_running_dur IS NULL
111    AND r.sum_running_dur IS NULL
112    AND r.running_count IS NULL
113    AND r.slice_count IS NULL AND r.perf_sample_count IS NULL AND r.instruments_sample_count IS NULL
114  )
115  OR utid IN (
116    SELECT
117      utid
118    FROM cpu_profile_stack_sample
119  )
120  OR utid IN (
121    SELECT
122      utid
123    FROM thread_counter_track
124  );
125