• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required BY applicable law OR agreed to in writing, software
10 * distributed under the License IS distributed ON an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express OR implied.
12 * See the License for the specific language governing permissions AND
13 * limitations under the License.
14 */
15
16const cpuSql: Array<DebugSql> = [
17  {
18    sql:
19      'SELECT B.pid AS processId,B.cpu,B.tid,B.itid AS id,B.dur,B.ts - TR.start_ts AS startTime,B.arg_setid AS ' +
20      'argSetID FROM thread_state AS B LEFT JOIN trace_range AS TR WHERE B.itid IS NOT NULL;',
21    title: 'Cpu chart',
22  },
23  {
24    sql:
25      'SELECT cpu,value,IFNULL(dur,tb.end_ts - c.ts) dur,ts-tb.start_ts AS startNS FROM measure c,trace_range tb ' +
26      "INNER JOIN cpu_measure_filter t ON c.filter_id = t.id WHERE (name = 'cpufreq' OR name='cpu_frequency');",
27    title: 'Cpu Frequency chart',
28  },
29  {
30    sql: 'SELECT (A.ts - B.start_ts) AS startTs,IFNULL(dur,B.end_ts - A.ts) dur,value FROM measure A,trace_range B;',
31    title: 'Cpu State chart',
32  },
33  {
34    sql:
35      'SELECT ts - T.start_ts AS startNs,dur,max(value) AS max,min(value) AS min FROM measure,trace_range ' +
36      'T GROUP BY ts;',
37    title: 'Cpu Freq Limit chart',
38  },
39  {
40    sql:
41      'SELECT TS.pid AS pid,TS.tid AS tid,TS.cpu,SUM((TS.ts - TR.start_ts + TS.dur) - (TS.ts - TR.start_ts)) ' +
42      'wallDuration,count(TS.tid) AS occurrences FROM thread_state AS TS LEFT JOIN trace_range AS TR GROUP BY TS.cpu,' +
43      'TS.pid,TS.tid ORDER BY wallDuration DESC;',
44    title: 'CPU By Thread table',
45  },
46  {
47    sql:
48      'SELECT B.pid AS pid, SUM(B.dur) AS wallDuration,AVG(B.dur) AS avgDuration,count(B.tid) AS occurrences FROM ' +
49      'thread_state AS B LEFT JOIN trace_range AS TR GROUP BY B.pid ORDER BY wallDuration DESC;',
50    title: 'CPU By Process table',
51  },
52  {
53    sql:
54      'SELECT cpu,SUM(A.dur) / CAST(B.end_ts - B.start_ts AS float) AS usage FROM thread_state A,trace_range B ' +
55      'WHERE (A.ts - B.start_ts) > 0 AND A.dur > 0 GROUP BY cpu;',
56    title: 'CPU Usage table',
57  },
58  {
59    sql:
60      'SELECT B.pid,B.tid,B.state,SUM(B.dur) AS wallDuration,AVG(IFNULL(B.dur,0)) AS ' +
61      'avgDuration,count(B.tid) AS occurrences FROM thread_state AS B LEFT JOIN trace_range AS TR ' +
62      'GROUP BY B.pid, B.tid, B.state ORDER BY wallDuration DESC;',
63    title: 'Thread States table',
64  },
65  {
66    sql:
67      'SELECT value, filter_id AS filterId, ts, f.cpu FROM measure LEFT JOIN cpu_measure_filter AS f ON ' +
68      'f.id=filter_id ORDER BY ts ASC;',
69    title: 'Cpu State/Cpu Frequency table',
70  },
71];
72
73const threadSql: Array<DebugSql> = [
74  {
75    sql:
76      'SELECT  ta.cpu,dur, ts-TR.start_ts AS startTime FROM thread_state ta LEFT JOIN trace_range AS TR ' +
77      'WHERE ta.cpu IS NOT NULL;',
78    title: 'Process chart',
79  },
80];
81
82const memory: Array<DebugSql> = [
83  {
84    sql:
85      'SELECT startNs, SUM( value ) AS value FROM ( SELECT m.ts - tr.start_ts AS startNs,SUM( m.value ) AS value ' +
86      'FROM sys_mem_measure m,trace_range tr LEFT JOIN sys_event_filter f ON f.id = m.filter_id WHERE m.ts < tr.end_ts ' +
87      'GROUP BY m.ts UNION ALL SELECT a.ts - tr.start_ts AS startNs,SUM( a.size ) AS value FROM memory_ashmem a,' +
88      'trace_range tr WHERE a.ts < tr.end_ts AND a.flag = 0 GROUP BY a.ts) GROUP BY startNs;',
89    title: 'Ability Monitor purgeable chart',
90  },
91  {
92    sql:
93      'SELECT (A.ts - B.start_ts) AS startNs,SUM(A.size) AS value,E.data AS expTaskComm, A.flag AS flag ' +
94      'FROM memory_dma A,trace_range B LEFT JOIN data_dict AS E ON E.id=A.exp_task_comm_id WHERE A.flag = 0 ' +
95      'AND A.ts < B.end_ts GROUP BY A.ts;',
96    title: 'Ability Monitor DMA chart',
97  },
98  {
99    sql:
100      'SELECT (A.ts - B.start_ts) AS startNs, SUM(A.used_gpu_size) AS value FROM memory_process_gpu A,trace_range B ' +
101      'WHERE A.ts < B.end_ts GROUP BY A.ts;',
102    title: 'Ability Monitor gpu memory chart',
103  },
104  {
105    sql:
106      "SELECT (A.timestamp - B.start_ts) AS startNs, SUM(dirty) * 1024 AS value, 'dirty' AS name " +
107      'FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP BY A.timestamp;',
108    title: 'VM Tracker Smaps chart(dirty)',
109  },
110  {
111    sql:
112      "SELECT (A.timestamp - B.start_ts) AS startNs, SUM(swapped) * 1024 AS value, 'swapped' AS name " +
113      'FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP BY A.timestamp;',
114    title: 'VM Tracker Smaps chart(swapped)',
115  },
116  {
117    sql:
118      "SELECT (A.timestamp - B.start_ts) AS startNs, SUM(resident_size) * 1024 AS value, 'resident_size' AS name " +
119      'FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP BY A.timestamp;',
120    title: 'VM Tracker Smaps chart(resident_size)',
121  },
122  {
123    sql:
124      "SELECT (A.timestamp - B.start_ts) AS startNs, SUM(pss) * 1024 AS value, 'pss' AS name " +
125      'FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP BY A.timestamp;',
126    title: 'VM Tracker Smaps chart(pss)',
127  },
128  {
129    sql:
130      'SELECT (A.timestamp - B.start_ts) AS startNs, SUM(private_clean + private_dirty) * 1024 AS value,' +
131      "'private_clean + private_dirty' AS name FROM smaps A,trace_range B WHERE A.timestamp " +
132      '< B.end_ts GROUP BY A.timestamp;',
133    title: 'VM Tracker Smaps chart(private_clean + private_dirty)',
134  },
135  {
136    sql:
137      'SELECT (A.ts - B.start_ts) AS startNs,SUM(A.size) AS value FROM memory_ashmem A,trace_range B ' +
138      'WHERE A.ts < B.end_ts AND flag = 0 GROUP BY A.ts;',
139    title: 'VM Tracker SHM chart',
140  },
141  {
142    sql:
143      'SELECT (A.ts - B.start_ts) AS startNs,SUM(A.size) AS value,A.flag AS flag,A.ipid AS ipid,E.data AS ' +
144      'expTaskComm FROM memory_dma A,trace_range B LEFT JOIN data_dict AS E ON E.id=A.exp_task_comm_id ' +
145      'WHERE A.flag = 0 AND A.ts < B.end_ts GROUP BY A.ts;',
146    title: 'VM Tracker Dma chart',
147  },
148  {
149    sql:
150      'SELECT startNs, SUM( value ) AS value FROM (SELECT m.ts - tr.start_ts AS startNs,SUM(m.value) AS value ' +
151      'FROM process_measure m, trace_range tr LEFT JOIN process_measure_filter f ON f.id = m.filter_id ' +
152      'WHERE m.ts < tr.end_ts GROUP BY m.ts UNION ALL SELECT a.ts - tr.start_ts AS startNs,SUM( a.pss ) AS value ' +
153      'FROM memory_ashmem a,trace_range tr WHERE a.ts < tr.end_ts AND a.flag = 0 GROUP BY a.ts) GROUP BY startNs;',
154    title: 'VM Tracker purgeable chart',
155  },
156  {
157    sql:
158      'SELECT (ts - start_ts) startNs,SUM(value) value FROM process_measure, trace_range ' +
159      "WHERE filter_id = (SELECT id FROM process_measure_filter WHERE name = 'mem.gl_pss')AND ts " +
160      'BETWEEN start_ts AND end_ts GROUP BY ts;',
161    title: 'VM Tracker gpu GL chart',
162  },
163  {
164    sql:
165      'SELECT (A.ts - B.start_ts) AS startNs,SUM(A.used_gpu_size) AS value,A.ipid AS ipid ' +
166      'FROM memory_process_gpu A,trace_range B WHERE A.ts < B.end_ts GROUP BY A.ts;',
167    title: 'VM Tracker gpu memory chart',
168  },
169  {
170    sql:
171      'SELECT DISTINCT module_name_id id,data FROM memory_window_gpu A, trace_range TR LEFT JOIN data_dict B ' +
172      'ON A.module_name_id = B.id WHERE window_name_id = 0 AND A.ts < TR.end_ts;',
173    title: 'VM Tracker gpu total type chart',
174  },
175  {
176    sql:
177      'SELECT DISTINCT A.window_name_id AS id,B.data, NULL AS pid FROM memory_window_gpu A, trace_range tr ' +
178      'LEFT JOIN data_dict B ON A.window_name_id = B.id WHERE window_name_id != 0 AND A.ts < tr.end_ts UNION ALL ' +
179      'SELECT DISTINCT A.module_name_id id, B.data, A.window_name_id pid FROM memory_window_gpu A, trace_range TR ' +
180      'LEFT JOIN data_dict B ON A.module_name_id = B.id WHERE window_name_id != 0 AND A.ts < TR.end_ts;',
181    title: 'VM Tracker gpu window type chart',
182  },
183];
184
185const bioSql: Array<DebugSql> = [
186  {
187    sql:
188      'SELECT name,B.ipid,pid FROM (SELECT DISTINCT ipid FROM bio_latency_sample A,trace_range B WHERE A.start_ts ' +
189      'BETWEEN B.start_ts AND B.end_ts) A LEFT JOIN process B ON A.ipid = B.ipid;',
190    title: 'Disk IO process chart',
191  },
192  {
193    sql:
194      'SELECT (A.start_ts -B.start_ts) AS startNS,(A.start_ts - B.start_ts + A.latency_dur) AS endNS,latency_dur ' +
195      'AS dur FROM bio_latency_sample A,trace_range B WHERE startNS > 0 ORDER BY A.start_ts;',
196    title: 'Disk IO latency chart',
197  },
198];
199
200const frameTimeSql: Array<DebugSql> = [
201  {
202    sql:
203      "SELECT sf.id,'frameTime' AS frameType,fs.ipid,fs.vsync AS name,fs.dur AS app_dur,(sf.ts + sf.dur - fs.ts) " +
204      'AS dur,(fs.ts - TR.start_ts) AS ts,fs.type,fs.flag,pro.pid,pro.name AS cmdline,(sf.ts - TR.start_ts) AS rs_ts,' +
205      'sf.vsync AS rs_vsync,sf.dur AS rs_dur,sf.ipid AS rs_ipid,proc.pid AS rs_pid,proc.name AS rs_name FROM ' +
206      'frame_slice AS fs LEFT JOIN process AS pro ON pro.id = fs.ipid LEFT JOIN frame_slice AS sf ON fs.dst = sf.id ' +
207      'LEFT JOIN process AS proc ON proc.id = sf.ipid LEFT JOIN trace_range TR WHERE fs.dst IS NOT NULL AND fs.type ' +
208      "= 1 UNION SELECT -1 AS id,'frameTime' AS frameType,fs.ipid,fs.vsync  AS name,fs.dur AS app_dur,fs.dur," +
209      '(fs.ts - TR.start_ts) AS ts,fs.type,fs.flag, pro.pid,pro.name AS cmdline,NULL AS rs_ts,NULL AS rs_vsync,' +
210      'NULL AS rs_dur,NULL AS rs_ipid,NULL AS rs_pid,NULL AS rs_name FROM frame_slice AS fs LEFT JOIN process AS pro' +
211      " ON pro.id = fs.ipid LEFT JOIN trace_range TR WHERE fs.dst IS NULL AND pro.name NOT LIKE '%render_service%' " +
212      'AND fs.type = 1 ORDER BY ts;',
213    title: 'Expected timeline chart',
214  },
215  {
216    sql:
217      "SELECT sf.id,'frameTime' AS frameType,fs.ipid,fs.vsync AS name,fs.dur AS app_dur,(sf.ts + sf.dur - fs.ts) " +
218      'AS dur,(fs.ts - TR.start_ts) AS ts,fs.type,(CASE WHEN (sf.flag == 1 OR fs.flag == 1) THEN 1  WHEN (sf.flag == ' +
219      '3 OR fs.flag == 3 ) THEN 3 ELSE 0 end) AS jank_tag,pro.pid,pro.name AS cmdline,(sf.ts - TR.start_ts) ' +
220      'AS rs_ts,sf.vsync AS rs_vsync,sf.dur AS rs_dur,sf.ipid AS rs_ipid,proc.pid AS rs_pid, proc.name AS rs_name ' +
221      'FROM frame_slice AS fs LEFT JOIN process AS pro ON pro.id = fs.ipid LEFT JOIN frame_slice AS sf ON fs.dst = ' +
222      'sf.id LEFT JOIN process AS proc ON proc.id = sf.ipid LEFT JOIN trace_range TR WHERE fs.dst IS NOT NULL AND ' +
223      "fs.type = 0 AND fs.flag <> 2 UNION SELECT -1 AS id,'frameTime' AS frameType,fs.ipid,fs.vsync AS name," +
224      'fs.dur AS app_dur,fs.dur,(fs.ts - TR.start_ts) AS ts,fs.type,fs.flag AS jank_tag,pro.pid,pro.name AS ' +
225      'cmdline,NULL AS rs_ts,NULL AS rs_vsync,NULL AS rs_dur,NULL AS rs_ipid,NULL AS rs_pid,NULL AS rs_name FROM ' +
226      'frame_slice AS fs LEFT JOIN process AS pro ON pro.id = fs.ipid LEFT JOIN trace_range TR WHERE fs.dst IS NULL ' +
227      "AND pro.name NOT LIKE '%render_service%' AND fs.type = 0 AND fs.flag <> 2 ORDER BY ts;",
228    title: 'Actual timeline chart',
229  },
230];
231
232const appStartUpSql: Array<DebugSql> = [
233  {
234    sql:
235      'SELECT P.pid,A.tid,A.call_id AS itid,(CASE WHEN A.start_time < B.start_ts THEN 0 ELSE (A.start_time - ' +
236      'B.start_ts) end) AS startTs,(CASE WHEN A.start_time < B.start_ts THEN (A.end_time - B.start_ts) WHEN ' +
237      'A.end_time = -1 THEN 0 ELSE (A.end_time - A.start_time) end) AS dur,A.start_name AS startName FROM ' +
238      'app_startup A,trace_range B LEFT JOIN process P ON A.ipid = P.ipid ORDER BY start_name;',
239    title: 'App start up chart',
240  },
241];
242
243const animationSql: Array<DebugSql> = [
244  {
245    sql:
246      'SELECT a.id AS animationId,(CASE WHEN a.input_time NOT NULL THEN (a.input_time - R.start_ts) ' +
247      'ELSE (a.start_point- R.start_ts) END) AS ts,(a.start_point - R.start_ts) AS dynamicStartTs,(a.end_point ' +
248      '- R.start_ts) AS dynamicEndTs FROM animation AS a,trace_range AS R ORDER BY ts;',
249    title: 'Animation chart',
250  },
251  {
252    sql:
253      'SELECT d.id,d.x,d.y,d.width,d.height,d.alpha,d.name AS appName,(d.end_time - R.start_ts) AS ts ' +
254      'FROM dynamic_frame AS d,trace_range AS R ORDER BY d.end_time;',
255    title: 'Animation effect curve chart',
256  },
257  {
258    sql:
259      'SELECT d.id,d.width AS currentFrameWidth,d.height AS currentFrameHeight,d.name AS nameId,(d.end_time ' +
260      '- R.start_ts) AS currentTs,d.x,d.y FROM dynamic_frame AS d,trace_range AS R ORDER BY d.end_time;',
261    title: 'Frame spacing chart',
262  },
263];
264
265export function getAllSql(): Array<DebugSql> {
266  return [...cpuSql, ...threadSql, ...memory, ...bioSql, ...frameTimeSql, ...appStartUpSql, ...animationSql];
267}
268
269export interface DebugSql {
270  sql: string;
271  title: string;
272}
273