• 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//  VM Tracker Gpu Resourcet泳道图
16import type {SnapshotStruct} from "../ui-worker/ProcedureWorkerSnapshot";
17import {query} from "../SqlLite";
18
19export const queryGpuResourceData = (categoryNameId: number): Promise<Array<SnapshotStruct>> =>
20  query(
21    'queryGpuResourceData',
22    `SELECT
23    subquery1.startNs,
24    IFNULL(subquery1.totalSize, 0) as aSize,
25    IFNULL(subquery2.size, 0) as bSize,
26    (IFNULL(subquery1.totalSize, 0) - IFNULL(subquery2.size, 0)) AS value
27  FROM
28    (SELECT (ts - start_ts) AS startNs,SUM(total_size) AS totalSize
29     FROM memory_profile, trace_range
30     WHERE ts between start_ts and end_ts
31     GROUP BY ts) AS subquery1
32   LEFT JOIN
33    (SELECT (ts - start_ts) AS startNs, SUM(size) AS size
34     FROM memory_window_gpu, trace_range
35     WHERE ts between start_ts and end_ts
36    AND category_name_id = ${categoryNameId}
37     GROUP BY ts) AS subquery2
38  ON subquery1.startNs = subquery2.startNs`
39  );
40export const queryisExistsGpuResourceData = (categoryNameId: number): Promise<Array<SnapshotStruct>> =>
41  query(
42    'queryisExistsGpuResourceData',
43    `SELECT EXISTS (
44      SELECT 1
45    FROM
46      (SELECT (ts - start_ts) AS startNs
47      FROM memory_profile, trace_range
48      WHERE ts between start_ts and end_ts
49      GROUP BY ts) AS subquery1
50    LEFT JOIN
51      (SELECT (ts - start_ts) AS startNs
52      FROM memory_window_gpu, trace_range
53      WHERE ts between start_ts and end_ts
54      AND category_name_id = ${categoryNameId}
55      GROUP BY ts) AS subquery2
56    ON subquery1.startNs = subquery2.startNs
57    ) AS data_exists
58    `
59  );
60
61//  VM Tracker Gpu Resource Tab页
62export const queryGpuResourceTabData = (
63  startNs: number
64): Promise<Array<{ startNs: number; channelId: number; totalSize: number }>> =>
65  query(
66    'queryGpuResourceTabData',
67    `SELECT (ts - start_ts) as startNs, channel_id as channelId, sum(total_size) as totalSize
68    FROM memory_profile, trace_range
69    WHERE (ts - start_ts) = ${startNs}
70    GROUP by ts, channelId`
71  );
72
73
74export const queryGpuTotalType = (): Promise<Array<{ id: number; data: string }>> =>
75  query(
76    'queryGpuTotalType',
77    `
78    select distinct module_name_id id,data
79    from memory_window_gpu A, trace_range TR left join data_dict B on A.module_name_id = B.id
80    where window_name_id = 0
81    and A.ts < TR.end_ts
82  `
83  );
84
85export const queryGpuDataByTs = (
86  ts: number,
87  window: number,
88  module: number | null
89): Promise<
90  Array<{
91    windowNameId: number;
92    windowId: number;
93    moduleId: number;
94    categoryId: number;
95    size: number;
96  }>
97> => {
98  let condition =
99    module === null
100      ? `and window_name_id = ${window}`
101      : `and window_name_id = ${window} and module_name_id = ${module}`;
102  let sql = `select window_name_id as windowNameId,
103       window_id as windowId,
104       module_name_id as moduleId,
105       category_name_id as categoryId,
106       size
107       from memory_window_gpu, trace_range
108       where ts - start_ts = ${ts} ${condition}
109        `;
110  return query('queryGpuDataByTs', sql);
111};
112
113export const queryGpuTotalData = (moduleId: number | null): Promise<Array<{ startNs: number; value: number }>> => {
114  let moduleCondition = moduleId === null ? '' : `and module_name_id = ${moduleId}`;
115  let sql = `
116  select (ts - start_ts) startNs, sum(size) value
117    from memory_window_gpu,trace_range
118    where window_name_id = 0 ${moduleCondition}
119    and ts< end_ts
120    group by ts;
121  `;
122  return query('queryGpuTotalData', sql);
123};
124
125// GL 或 Graph 泳道图
126export const queryGpuData = (ipid: number, name: string): Promise<Array<{ startNs: number; value: number }>> => {
127  let sql = `
128    select (ts - start_ts) startNs,sum(value) value
129  from process_measure, trace_range
130  where filter_id = (
131      select id
132      from process_measure_filter
133      where name = ${name} and ipid = ${ipid}
134      )
135  and ts between start_ts and end_ts
136  group by ts;
137    `;
138  return query('queryGpuData', sql);
139};
140// 判断VM Tracker Gl或 Graph泳道图是否有数据
141export const queryisExistsGpuData = (
142  ipid: number,
143  name: string
144): Promise<Array<{ startNs: number; value: number }>> => {
145  let sql = `
146   SELECT EXISTS (
147      SELECT 1
148      FROM process_measure, trace_range
149      WHERE filter_id = (
150         SELECT id
151         FROM process_measure_filter
152         WHERE name = ${name} AND ipid = ${ipid}
153         )
154         AND ts BETWEEN start_ts AND end_ts
155   ) AS data_exists;
156     `;
157  return query('queryGpuData', sql);
158};
159
160// GL 或 Graph 框选Tab页
161export const queryGpuDataTab = (
162  ipid: number,
163  leftNs: number,
164  rightNs: number,
165  interval: number,
166  name: string
167): Promise<Array<{ startTs: number; size: number }>> => {
168  let sql = `
169    select (ts - start_ts) startTs,sum(value) * 1024 size
170  from process_measure, trace_range
171  where filter_id = (
172      select id
173      from process_measure_filter
174      where name = ${name} and ipid = ${ipid}
175      )
176  and not ((startTs + ${interval} < ${leftNs}) or (startTs > ${rightNs}))
177  group by ts;
178    `;
179  return query('queryGpuGLDataByRange', sql);
180};
181
182export const queryGpuDataByRange = (
183  leftNs: number,
184  rightNs: number,
185  interval: number
186): Promise<
187  Array<{
188    startTs: number;
189    windowId: number;
190    moduleId: number;
191    categoryId: number;
192    avgSize: number;
193    maxSize: number;
194    minSize: number;
195  }>
196> => {
197  let sql = `select (ts - start_ts) startTs,
198    window_name_id windowId,
199    module_name_id moduleId,
200    category_name_id categoryId,
201    avg(size) avgSize,
202    max(size) maxSize,
203    min(size) minSize
204  from memory_window_gpu,trace_range
205  where not ((startTs + ${interval} < ${leftNs}) or (startTs > ${rightNs}))
206  group by window_name_id,module_name_id,category_name_id
207  order by avgSize DESC;
208  `;
209  return query('queryGpuWindowData', sql);
210};
211
212export const queryGpuWindowData = (
213  windowId: number,
214  moduleId: number | null
215): Promise<Array<{ startNs: number; value: number }>> => {
216  let moduleCondition = moduleId === null ? '' : `and module_name_id = ${moduleId}`;
217  let sql = `
218  select (ts - start_ts) startNs, sum(size) value
219    from memory_window_gpu,trace_range
220    where window_name_id = ${windowId} ${moduleCondition}
221    and ts < end_ts
222    group by ts;
223  `;
224  return query('queryGpuWindowData', sql);
225};
226
227export const queryGpuWindowType = (): Promise<Array<{ id: number; data: string; pid: number }>> =>
228  query(
229    'queryGpuWindowType',
230    `
231  select distinct A.window_name_id as id,B.data, null as pid
232from memory_window_gpu A, trace_range tr left join data_dict B on A.window_name_id = B.id
233where window_name_id != 0
234and A.ts < tr.end_ts
235union all
236select distinct A.module_name_id id, B.data, A.window_name_id pid
237from memory_window_gpu A, trace_range TR left join data_dict B on A.module_name_id = B.id
238where window_name_id != 0
239and A.ts < TR.end_ts
240  `
241  );
242export const queryGpuDur = (id: number): Promise<any> =>
243  query(
244    'queryGpuDur',
245    `
246        SELECT dur AS gpu_dur
247        FROM gpu_slice
248        WHERE frame_row = $id;`,
249    { $id: id }
250  );