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