1fb726d48Sopenharmony_ci/*
2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd.
3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License.
5fb726d48Sopenharmony_ci * You may obtain a copy of the License at
6fb726d48Sopenharmony_ci *
7fb726d48Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fb726d48Sopenharmony_ci *
9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and
13fb726d48Sopenharmony_ci * limitations under the License.
14fb726d48Sopenharmony_ci */
15fb726d48Sopenharmony_ciimport {
16fb726d48Sopenharmony_ci  GpuMemory,
17fb726d48Sopenharmony_ci  GpuMemoryComparison,
18fb726d48Sopenharmony_ci  SystemCpuSummary,
19fb726d48Sopenharmony_ci  SystemDiskIOSummary,
20fb726d48Sopenharmony_ci  SystemNetworkSummary,
21fb726d48Sopenharmony_ci} from '../../bean/AbilityMonitor';
22fb726d48Sopenharmony_ciimport { query } from '../SqlLite';
23fb726d48Sopenharmony_ciimport { CpuAbilityMonitorStruct } from '../ui-worker/ProcedureWorkerCpuAbility';
24fb726d48Sopenharmony_ciimport { MemoryAbilityMonitorStruct } from '../ui-worker/ProcedureWorkerMemoryAbility';
25fb726d48Sopenharmony_ciimport { DiskAbilityMonitorStruct } from '../ui-worker/ProcedureWorkerDiskIoAbility';
26fb726d48Sopenharmony_ciimport { NetworkAbilityMonitorStruct } from '../ui-worker/ProcedureWorkerNetworkAbility';
27fb726d48Sopenharmony_ciimport type { SnapshotStruct } from '../ui-worker/ProcedureWorkerSnapshot';
28fb726d48Sopenharmony_ci
29fb726d48Sopenharmony_ciexport const getTabCpuAbilityData = (leftNs: number, rightNs: number): Promise<Array<SystemCpuSummary>> =>
30fb726d48Sopenharmony_ci  query<SystemCpuSummary>(
31fb726d48Sopenharmony_ci    'getTabCpuAbilityData',
32fb726d48Sopenharmony_ci    `SELECT
33fb726d48Sopenharmony_ci        ( n.ts - TR.start_ts ) AS startTime,
34fb726d48Sopenharmony_ci        n.dur AS duration,
35fb726d48Sopenharmony_ci        n.total_load AS totalLoad,
36fb726d48Sopenharmony_ci        n.user_load AS userLoad,
37fb726d48Sopenharmony_ci        n.system_load AS systemLoad,
38fb726d48Sopenharmony_ci        n.process_num AS threads 
39fb726d48Sopenharmony_ci        FROM
40fb726d48Sopenharmony_ci        cpu_usage AS n,
41fb726d48Sopenharmony_ci        trace_range AS TR 
42fb726d48Sopenharmony_ci        WHERE
43fb726d48Sopenharmony_ci        ( n.ts - TR.start_ts ) >= ifnull((
44fb726d48Sopenharmony_ci        SELECT
45fb726d48Sopenharmony_ci        ( usage.ts - TR.start_ts ) 
46fb726d48Sopenharmony_ci        FROM
47fb726d48Sopenharmony_ci        cpu_usage usage,
48fb726d48Sopenharmony_ci        trace_range TR 
49fb726d48Sopenharmony_ci        WHERE
50fb726d48Sopenharmony_ci        ( usage.ts - TR.start_ts ) <= $leftNS 
51fb726d48Sopenharmony_ci        ORDER BY
52fb726d48Sopenharmony_ci        usage.ts DESC 
53fb726d48Sopenharmony_ci        LIMIT 1 
54fb726d48Sopenharmony_ci        ),0)
55fb726d48Sopenharmony_ci        AND ( n.ts - TR.start_ts ) <= $rightNS 
56fb726d48Sopenharmony_ci        ORDER BY
57fb726d48Sopenharmony_ci        startTime ASC;
58fb726d48Sopenharmony_ci    `,
59fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
60fb726d48Sopenharmony_ci  );
61fb726d48Sopenharmony_ciexport const getTabMemoryAbilityData = (
62fb726d48Sopenharmony_ci  leftNs: number,
63fb726d48Sopenharmony_ci  rightNs: number
64fb726d48Sopenharmony_ci): Promise<
65fb726d48Sopenharmony_ci  Array<{
66fb726d48Sopenharmony_ci    startTime: number;
67fb726d48Sopenharmony_ci    value: string;
68fb726d48Sopenharmony_ci    name: string;
69fb726d48Sopenharmony_ci  }>
70fb726d48Sopenharmony_ci> =>
71fb726d48Sopenharmony_ci  query(
72fb726d48Sopenharmony_ci    'getTabMemoryAbilityData',
73fb726d48Sopenharmony_ci    `SELECT
74fb726d48Sopenharmony_ci        m.ts AS startTime,
75fb726d48Sopenharmony_ci        GROUP_CONCAT( IFNULL( m.value, 0 ) ) AS value,
76fb726d48Sopenharmony_ci        GROUP_CONCAT( f.name ) AS name 
77fb726d48Sopenharmony_ci        FROM
78fb726d48Sopenharmony_ci        sys_mem_measure AS m
79fb726d48Sopenharmony_ci        INNER JOIN sys_event_filter AS f ON m.filter_id = f.id 
80fb726d48Sopenharmony_ci        AND (f.name = 'sys.mem.total' 
81fb726d48Sopenharmony_ci         or f.name = 'sys.mem.free'
82fb726d48Sopenharmony_ci         or f.name = 'sys.mem.buffers'
83fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cached' 
84fb726d48Sopenharmony_ci         or f.name = 'sys.mem.shmem'
85fb726d48Sopenharmony_ci         or f.name = 'sys.mem.slab'
86fb726d48Sopenharmony_ci         or f.name = 'sys.mem.swap.total'
87fb726d48Sopenharmony_ci         or f.name = 'sys.mem.swap.free'
88fb726d48Sopenharmony_ci         or f.name = 'sys.mem.mapped'
89fb726d48Sopenharmony_ci         or f.name = 'sys.mem.vmalloc.used'
90fb726d48Sopenharmony_ci         or f.name = 'sys.mem.page.tables'
91fb726d48Sopenharmony_ci         or f.name = 'sys.mem.kernel.stack'
92fb726d48Sopenharmony_ci         or f.name = 'sys.mem.active'
93fb726d48Sopenharmony_ci         or f.name = 'sys.mem.inactive'
94fb726d48Sopenharmony_ci         or f.name = 'sys.mem.unevictable'
95fb726d48Sopenharmony_ci         or f.name = 'sys.mem.vmalloc.total'
96fb726d48Sopenharmony_ci         or f.name = 'sys.mem.slab.unreclaimable'
97fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cma.total'
98fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cma.free'
99fb726d48Sopenharmony_ci         or f.name = 'sys.mem.kernel.reclaimable'
100fb726d48Sopenharmony_ci         or f.name = 'sys.mem.zram'
101fb726d48Sopenharmony_ci         ) 
102fb726d48Sopenharmony_ci        AND m.ts >= ifnull((
103fb726d48Sopenharmony_ci        SELECT
104fb726d48Sopenharmony_ci        m.ts AS startTime 
105fb726d48Sopenharmony_ci        FROM
106fb726d48Sopenharmony_ci        sys_mem_measure AS m
107fb726d48Sopenharmony_ci        INNER JOIN sys_event_filter AS f ON m.filter_id = f.id 
108fb726d48Sopenharmony_ci        AND m.ts <= $leftNS 
109fb726d48Sopenharmony_ci        AND (f.name = 'sys.mem.total'
110fb726d48Sopenharmony_ci         or f.name = 'sys.mem.kernel.stack'
111fb726d48Sopenharmony_ci         or f.name = 'sys.mem.free'
112fb726d48Sopenharmony_ci         or f.name = 'sys.mem.swap.free'
113fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cma.free'
114fb726d48Sopenharmony_ci         or f.name = 'sys.mem.inactive'
115fb726d48Sopenharmony_ci         or f.name = 'sys.mem.buffers'
116fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cached' 
117fb726d48Sopenharmony_ci         or f.name = 'sys.mem.shmem'
118fb726d48Sopenharmony_ci         or f.name = 'sys.mem.slab'
119fb726d48Sopenharmony_ci         or f.name = 'sys.mem.swap.total'
120fb726d48Sopenharmony_ci         or f.name = 'sys.mem.vmalloc.used'
121fb726d48Sopenharmony_ci         or f.name = 'sys.mem.page.tables'
122fb726d48Sopenharmony_ci         or f.name = 'sys.mem.active'
123fb726d48Sopenharmony_ci         or f.name = 'sys.mem.unevictable'
124fb726d48Sopenharmony_ci         or f.name = 'sys.mem.vmalloc.total'
125fb726d48Sopenharmony_ci         or f.name = 'sys.mem.slab.unreclaimable'
126fb726d48Sopenharmony_ci         or f.name = 'sys.mem.cma.total'
127fb726d48Sopenharmony_ci         or f.name = 'sys.mem.mapped'
128fb726d48Sopenharmony_ci         or f.name = 'sys.mem.kernel.reclaimable'
129fb726d48Sopenharmony_ci         or f.name = 'sys.mem.zram'
130fb726d48Sopenharmony_ci         ) 
131fb726d48Sopenharmony_ci        ORDER BY
132fb726d48Sopenharmony_ci        m.ts DESC 
133fb726d48Sopenharmony_ci        LIMIT 1 
134fb726d48Sopenharmony_ci        ),0)
135fb726d48Sopenharmony_ci        AND m.ts <= $rightNS GROUP BY m.ts;`,
136fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
137fb726d48Sopenharmony_ci  );
138fb726d48Sopenharmony_ciexport const getTabNetworkAbilityData = (leftNs: number, rightNs: number): Promise<Array<SystemNetworkSummary>> =>
139fb726d48Sopenharmony_ci  query<SystemNetworkSummary>(
140fb726d48Sopenharmony_ci    'getTabNetworkAbilityData',
141fb726d48Sopenharmony_ci    `SELECT
142fb726d48Sopenharmony_ci            ( n.ts - TR.start_ts ) AS startTime,
143fb726d48Sopenharmony_ci            n.dur AS duration,
144fb726d48Sopenharmony_ci            n.rx AS dataReceived,
145fb726d48Sopenharmony_ci            n.tx_speed AS dataReceivedSec,
146fb726d48Sopenharmony_ci            n.tx AS dataSend,
147fb726d48Sopenharmony_ci            n.rx_speed AS dataSendSec,
148fb726d48Sopenharmony_ci            n.packet_in AS packetsIn,
149fb726d48Sopenharmony_ci            n.packet_in_sec AS packetsInSec,
150fb726d48Sopenharmony_ci            n.packet_out AS packetsOut,
151fb726d48Sopenharmony_ci            n.packet_out_sec AS packetsOutSec 
152fb726d48Sopenharmony_ci            FROM
153fb726d48Sopenharmony_ci            network AS n,
154fb726d48Sopenharmony_ci            trace_range AS TR 
155fb726d48Sopenharmony_ci            WHERE
156fb726d48Sopenharmony_ci            ( n.ts - TR.start_ts ) >= ifnull((
157fb726d48Sopenharmony_ci            SELECT
158fb726d48Sopenharmony_ci            ( nn.ts - T.start_ts ) AS startTime 
159fb726d48Sopenharmony_ci            FROM
160fb726d48Sopenharmony_ci            network nn,
161fb726d48Sopenharmony_ci            trace_range T 
162fb726d48Sopenharmony_ci            WHERE
163fb726d48Sopenharmony_ci            ( nn.ts - T.start_ts ) <= $leftNS
164fb726d48Sopenharmony_ci            ORDER BY
165fb726d48Sopenharmony_ci            nn.ts DESC 
166fb726d48Sopenharmony_ci            LIMIT 1 
167fb726d48Sopenharmony_ci            ),0)  
168fb726d48Sopenharmony_ci            AND ( n.ts - TR.start_ts ) <= $rightNS 
169fb726d48Sopenharmony_ci            ORDER BY
170fb726d48Sopenharmony_ci            startTime ASC`,
171fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
172fb726d48Sopenharmony_ci  );
173fb726d48Sopenharmony_ciexport const getTabDiskAbilityData = (leftNs: number, rightNs: number): Promise<Array<SystemDiskIOSummary>> =>
174fb726d48Sopenharmony_ci  query<SystemDiskIOSummary>(
175fb726d48Sopenharmony_ci    'getTabDiskAbilityData',
176fb726d48Sopenharmony_ci    `SELECT
177fb726d48Sopenharmony_ci        ( n.ts - TR.start_ts ) AS startTime,
178fb726d48Sopenharmony_ci        n.dur AS duration,
179fb726d48Sopenharmony_ci        n.rd AS dataRead,
180fb726d48Sopenharmony_ci        n.rd_speed AS dataReadSec,
181fb726d48Sopenharmony_ci        n.wr AS dataWrite,
182fb726d48Sopenharmony_ci        n.wr_speed AS dataWriteSec,
183fb726d48Sopenharmony_ci        n.rd_count AS readsIn,
184fb726d48Sopenharmony_ci        n.rd_count_speed AS readsInSec,
185fb726d48Sopenharmony_ci        n.wr_count AS writeOut,
186fb726d48Sopenharmony_ci        n.wr_count_speed AS writeOutSec 
187fb726d48Sopenharmony_ci        FROM
188fb726d48Sopenharmony_ci        diskio AS n,
189fb726d48Sopenharmony_ci        trace_range AS TR 
190fb726d48Sopenharmony_ci        WHERE
191fb726d48Sopenharmony_ci        ( n.ts - TR.start_ts ) >= ifnull((
192fb726d48Sopenharmony_ci        SELECT
193fb726d48Sopenharmony_ci        ( nn.ts - T.start_ts ) AS startTime 
194fb726d48Sopenharmony_ci        FROM
195fb726d48Sopenharmony_ci        diskio AS nn,
196fb726d48Sopenharmony_ci        trace_range AS T 
197fb726d48Sopenharmony_ci        WHERE
198fb726d48Sopenharmony_ci        ( nn.ts - T.start_ts ) <= $leftNS 
199fb726d48Sopenharmony_ci        ORDER BY
200fb726d48Sopenharmony_ci        nn.ts DESC 
201fb726d48Sopenharmony_ci        LIMIT 1 
202fb726d48Sopenharmony_ci        ),0)
203fb726d48Sopenharmony_ci        AND ( n.ts - TR.start_ts ) <= $rightNS 
204fb726d48Sopenharmony_ci        ORDER BY
205fb726d48Sopenharmony_ci        startTime ASC;
206fb726d48Sopenharmony_ci    `,
207fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
208fb726d48Sopenharmony_ci  );
209fb726d48Sopenharmony_ci
210fb726d48Sopenharmony_ciexport const queryCpuAbilityData = (): Promise<Array<CpuAbilityMonitorStruct>> =>
211fb726d48Sopenharmony_ci  query(
212fb726d48Sopenharmony_ci    'queryCpuAbilityData',
213fb726d48Sopenharmony_ci    `select 
214fb726d48Sopenharmony_ci        (t.total_load) as value,
215fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
216fb726d48Sopenharmony_ci        from cpu_usage t, trace_range AS TR;`
217fb726d48Sopenharmony_ci  );
218fb726d48Sopenharmony_ci
219fb726d48Sopenharmony_ciexport const queryCpuAbilityUserData = (): Promise<Array<CpuAbilityMonitorStruct>> =>
220fb726d48Sopenharmony_ci  query(
221fb726d48Sopenharmony_ci    'queryCpuAbilityUserData',
222fb726d48Sopenharmony_ci    `select 
223fb726d48Sopenharmony_ci        t.user_load as value,
224fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
225fb726d48Sopenharmony_ci        from cpu_usage t, trace_range AS TR;`
226fb726d48Sopenharmony_ci  );
227fb726d48Sopenharmony_ci
228fb726d48Sopenharmony_ciexport const queryCpuAbilitySystemData = (): Promise<Array<CpuAbilityMonitorStruct>> =>
229fb726d48Sopenharmony_ci  query(
230fb726d48Sopenharmony_ci    'queryCpuAbilitySystemData',
231fb726d48Sopenharmony_ci    `select 
232fb726d48Sopenharmony_ci        t.system_load as value,
233fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
234fb726d48Sopenharmony_ci        from cpu_usage t, trace_range AS TR;`
235fb726d48Sopenharmony_ci  );
236fb726d48Sopenharmony_ci
237fb726d48Sopenharmony_ciexport const queryMemoryUsedAbilityData = (id: string): Promise<Array<MemoryAbilityMonitorStruct>> =>
238fb726d48Sopenharmony_ci  query(
239fb726d48Sopenharmony_ci    'queryMemoryUsedAbilityData',
240fb726d48Sopenharmony_ci    `select 
241fb726d48Sopenharmony_ci        t.value as value,
242fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
243fb726d48Sopenharmony_ci        from sys_mem_measure t, trace_range AS TR where t.filter_id = $id;`,
244fb726d48Sopenharmony_ci    { $id: id }
245fb726d48Sopenharmony_ci  );
246fb726d48Sopenharmony_ci
247fb726d48Sopenharmony_ciexport const queryCachedFilesAbilityData = (id: string): Promise<Array<MemoryAbilityMonitorStruct>> =>
248fb726d48Sopenharmony_ci  query(
249fb726d48Sopenharmony_ci    'queryCachedFilesAbilityData',
250fb726d48Sopenharmony_ci    `select 
251fb726d48Sopenharmony_ci        t.value as value,
252fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
253fb726d48Sopenharmony_ci        from sys_mem_measure t, trace_range AS TR where t.filter_id = $id;`,
254fb726d48Sopenharmony_ci    { $id: id }
255fb726d48Sopenharmony_ci  );
256fb726d48Sopenharmony_ci
257fb726d48Sopenharmony_ciexport const queryCompressedAbilityData = (id: string): Promise<Array<MemoryAbilityMonitorStruct>> =>
258fb726d48Sopenharmony_ci  query(
259fb726d48Sopenharmony_ci    'queryCompressedAbilityData',
260fb726d48Sopenharmony_ci    `select 
261fb726d48Sopenharmony_ci        t.value as value,
262fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
263fb726d48Sopenharmony_ci        from sys_mem_measure t, trace_range AS TR where t.filter_id = $id;`,
264fb726d48Sopenharmony_ci    { $id: id }
265fb726d48Sopenharmony_ci  );
266fb726d48Sopenharmony_ci
267fb726d48Sopenharmony_ciexport const querySwapUsedAbilityData = (id: string): Promise<Array<MemoryAbilityMonitorStruct>> =>
268fb726d48Sopenharmony_ci  query(
269fb726d48Sopenharmony_ci    'querySwapUsedAbilityData',
270fb726d48Sopenharmony_ci    `select 
271fb726d48Sopenharmony_ci        t.value as value,
272fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
273fb726d48Sopenharmony_ci        from sys_mem_measure t, trace_range AS TR where t.filter_id = $id;`,
274fb726d48Sopenharmony_ci    { $id: id }
275fb726d48Sopenharmony_ci  );
276fb726d48Sopenharmony_ci
277fb726d48Sopenharmony_ciexport const queryBytesReadAbilityData = (): Promise<Array<DiskAbilityMonitorStruct>> =>
278fb726d48Sopenharmony_ci  query(
279fb726d48Sopenharmony_ci    'queryBytesReadAbilityData',
280fb726d48Sopenharmony_ci    `select 
281fb726d48Sopenharmony_ci        t.rd_speed as value,
282fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
283fb726d48Sopenharmony_ci        from diskio t, trace_range AS TR;`
284fb726d48Sopenharmony_ci  );
285fb726d48Sopenharmony_ci
286fb726d48Sopenharmony_ciexport const queryBytesWrittenAbilityData = (): Promise<Array<DiskAbilityMonitorStruct>> =>
287fb726d48Sopenharmony_ci  query(
288fb726d48Sopenharmony_ci    'queryBytesWrittenAbilityData',
289fb726d48Sopenharmony_ci    `select 
290fb726d48Sopenharmony_ci        t.wr_speed as value,
291fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
292fb726d48Sopenharmony_ci        from diskio t, trace_range AS TR;`
293fb726d48Sopenharmony_ci  );
294fb726d48Sopenharmony_ci
295fb726d48Sopenharmony_ciexport const queryReadAbilityData = (): Promise<Array<DiskAbilityMonitorStruct>> =>
296fb726d48Sopenharmony_ci  query(
297fb726d48Sopenharmony_ci    'queryReadAbilityData',
298fb726d48Sopenharmony_ci    `select 
299fb726d48Sopenharmony_ci        t.rd_count_speed as value,
300fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
301fb726d48Sopenharmony_ci        from diskio t, trace_range AS TR;`
302fb726d48Sopenharmony_ci  );
303fb726d48Sopenharmony_ci
304fb726d48Sopenharmony_ciexport const queryWrittenAbilityData = (): Promise<Array<DiskAbilityMonitorStruct>> =>
305fb726d48Sopenharmony_ci  query(
306fb726d48Sopenharmony_ci    'queryWrittenAbilityData',
307fb726d48Sopenharmony_ci    `select 
308fb726d48Sopenharmony_ci        t.wr_count_speed as value,
309fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
310fb726d48Sopenharmony_ci        from diskio t, trace_range AS TR;`
311fb726d48Sopenharmony_ci  );
312fb726d48Sopenharmony_ci
313fb726d48Sopenharmony_ciexport const queryBytesInAbilityData = (): Promise<Array<NetworkAbilityMonitorStruct>> =>
314fb726d48Sopenharmony_ci  query(
315fb726d48Sopenharmony_ci    'queryBytesInAbilityData',
316fb726d48Sopenharmony_ci    `select 
317fb726d48Sopenharmony_ci        t.tx_speed as value,
318fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
319fb726d48Sopenharmony_ci        from network t, trace_range AS TR;`
320fb726d48Sopenharmony_ci  );
321fb726d48Sopenharmony_ci
322fb726d48Sopenharmony_ciexport const queryBytesOutAbilityData = (): Promise<Array<NetworkAbilityMonitorStruct>> =>
323fb726d48Sopenharmony_ci  query(
324fb726d48Sopenharmony_ci    'queryBytesOutAbilityData',
325fb726d48Sopenharmony_ci    `select 
326fb726d48Sopenharmony_ci        t.rx_speed as value,
327fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
328fb726d48Sopenharmony_ci        from network t, trace_range AS TR;`
329fb726d48Sopenharmony_ci  );
330fb726d48Sopenharmony_ci
331fb726d48Sopenharmony_ciexport const queryPacketsInAbilityData = (): Promise<Array<NetworkAbilityMonitorStruct>> =>
332fb726d48Sopenharmony_ci  query(
333fb726d48Sopenharmony_ci    'queryPacketsInAbilityData',
334fb726d48Sopenharmony_ci    `select 
335fb726d48Sopenharmony_ci        t.packet_in_sec as value,
336fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
337fb726d48Sopenharmony_ci        from network t, trace_range AS TR;`
338fb726d48Sopenharmony_ci  );
339fb726d48Sopenharmony_ci
340fb726d48Sopenharmony_ciexport const queryPacketsOutAbilityData = (): Promise<Array<NetworkAbilityMonitorStruct>> =>
341fb726d48Sopenharmony_ci  query(
342fb726d48Sopenharmony_ci    'queryPacketsOutAbilityData',
343fb726d48Sopenharmony_ci    `select 
344fb726d48Sopenharmony_ci        t.packet_out_sec as value,
345fb726d48Sopenharmony_ci        (t.ts - TR.start_ts) as startNS
346fb726d48Sopenharmony_ci        from network t, trace_range AS TR;`
347fb726d48Sopenharmony_ci  );
348fb726d48Sopenharmony_ciexport const queryAbilityExits = (): //@ts-ignore
349fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
350fb726d48Sopenharmony_ci  query(
351fb726d48Sopenharmony_ci    'queryAbilityExits',
352fb726d48Sopenharmony_ci    `select 
353fb726d48Sopenharmony_ci      event_name 
354fb726d48Sopenharmony_ci      from stat s 
355fb726d48Sopenharmony_ci      where s.event_name in ('trace_diskio','trace_network', 'trace_cpu_usage','sys_memory') 
356fb726d48Sopenharmony_ci      and s.stat_type ='received' and s.count > 0`
357fb726d48Sopenharmony_ci  );
358fb726d48Sopenharmony_ciexport const queryCPuAbilityMaxData = (): //@ts-ignore
359fb726d48Sopenharmony_ciPromise<Array<unknown>> =>
360fb726d48Sopenharmony_ci  query(
361fb726d48Sopenharmony_ci    'queryCPuAbilityMaxData',
362fb726d48Sopenharmony_ci    `select ifnull(max(total_load),0) as totalLoad, 
363fb726d48Sopenharmony_ci                ifnull(max(user_load),0) as userLoad,
364fb726d48Sopenharmony_ci                ifnull(max(system_load),0) as systemLoad
365fb726d48Sopenharmony_ci                from cpu_usage`
366fb726d48Sopenharmony_ci  );
367fb726d48Sopenharmony_ci//   Ability Monitor SkiaGpuMemory泳道图
368fb726d48Sopenharmony_ciexport const queryGpuMemoryAbilityData = (): Promise<Array<SnapshotStruct>> =>
369fb726d48Sopenharmony_ci  query(
370fb726d48Sopenharmony_ci    'queryGpuMemoryAbilityData',
371fb726d48Sopenharmony_ci    `SELECT
372fb726d48Sopenharmony_ci    (A.ts - B.start_ts) as startNs,
373fb726d48Sopenharmony_ci    sum(A.used_gpu_size) as value
374fb726d48Sopenharmony_ci    FROM memory_process_gpu A,trace_range B
375fb726d48Sopenharmony_ci    WHERE A.ts < B.end_ts
376fb726d48Sopenharmony_ci    GROUP by A.ts
377fb726d48Sopenharmony_ci    LIMIT 1;`
378fb726d48Sopenharmony_ci  );
379fb726d48Sopenharmony_ci
380fb726d48Sopenharmony_ci//   Ability Monitor Dma泳道图
381fb726d48Sopenharmony_ciexport const queryDmaAbilityData = (): Promise<Array<SnapshotStruct>> =>
382fb726d48Sopenharmony_ci  query(
383fb726d48Sopenharmony_ci    'queryDmaAbilityData',
384fb726d48Sopenharmony_ci    `SELECT
385fb726d48Sopenharmony_ci      (A.ts - B.start_ts) as startNs,
386fb726d48Sopenharmony_ci      sum(A.size) as value,
387fb726d48Sopenharmony_ci      E.data as expTaskComm,
388fb726d48Sopenharmony_ci      A.flag as flag
389fb726d48Sopenharmony_ci    FROM memory_dma A,trace_range B
390fb726d48Sopenharmony_ci    left join data_dict as E on E.id=A.exp_task_comm_id
391fb726d48Sopenharmony_ci    WHERE
392fb726d48Sopenharmony_ci      A.flag = 0
393fb726d48Sopenharmony_ci      AND A.ts < B.end_ts
394fb726d48Sopenharmony_ci    GROUP by A.ts
395fb726d48Sopenharmony_ci    LIMIT 1;`
396fb726d48Sopenharmony_ci  );
397fb726d48Sopenharmony_ci// Ability Monitor Purgeable泳道图
398fb726d48Sopenharmony_ciexport const queryPurgeableSysData = (
399fb726d48Sopenharmony_ci  isPin?: boolean
400fb726d48Sopenharmony_ci): //@ts-ignore
401fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
402fb726d48Sopenharmony_ci  const pinCondition = isPin ? ' AND a.ref_count > 0' : '';
403fb726d48Sopenharmony_ci  const names = isPin ? " ('sys.mem.pined.purg')" : "('sys.mem.active.purg','sys.mem.inactive.purg')";
404fb726d48Sopenharmony_ci  return query(
405fb726d48Sopenharmony_ci    'queryPurgeableSysData',
406fb726d48Sopenharmony_ci    `SELECT
407fb726d48Sopenharmony_ci      startNs,
408fb726d48Sopenharmony_ci      sum( value ) AS value
409fb726d48Sopenharmony_ci  FROM
410fb726d48Sopenharmony_ci      (
411fb726d48Sopenharmony_ci      SELECT
412fb726d48Sopenharmony_ci          m.ts - tr.start_ts AS startNs,
413fb726d48Sopenharmony_ci          sum( m.value ) AS value
414fb726d48Sopenharmony_ci      FROM
415fb726d48Sopenharmony_ci          sys_mem_measure m,
416fb726d48Sopenharmony_ci          trace_range tr
417fb726d48Sopenharmony_ci          LEFT JOIN sys_event_filter f ON f.id = m.filter_id
418fb726d48Sopenharmony_ci      WHERE
419fb726d48Sopenharmony_ci          m.ts < tr.end_ts
420fb726d48Sopenharmony_ci          AND f.name IN ${names}
421fb726d48Sopenharmony_ci      GROUP BY
422fb726d48Sopenharmony_ci          m.ts UNION ALL
423fb726d48Sopenharmony_ci      SELECT
424fb726d48Sopenharmony_ci          a.ts - tr.start_ts AS startNs,
425fb726d48Sopenharmony_ci          sum( a.size ) AS value
426fb726d48Sopenharmony_ci      FROM
427fb726d48Sopenharmony_ci          memory_ashmem a,
428fb726d48Sopenharmony_ci          trace_range tr
429fb726d48Sopenharmony_ci      WHERE
430fb726d48Sopenharmony_ci          a.ts < tr.end_ts
431fb726d48Sopenharmony_ci          AND a.flag = 0
432fb726d48Sopenharmony_ci          ${pinCondition}
433fb726d48Sopenharmony_ci          GROUP BY
434fb726d48Sopenharmony_ci              a.ts
435fb726d48Sopenharmony_ci          )
436fb726d48Sopenharmony_ci      GROUP BY startNs
437fb726d48Sopenharmony_ci      LIMIT 1`
438fb726d48Sopenharmony_ci  );
439fb726d48Sopenharmony_ci};
440fb726d48Sopenharmony_ci
441fb726d48Sopenharmony_ci//Ability Monitor Purgeable 框选 tab页
442fb726d48Sopenharmony_ciexport const querySysPurgeableTab = (
443fb726d48Sopenharmony_ci  leftNs: number,
444fb726d48Sopenharmony_ci  rightNs: number,
445fb726d48Sopenharmony_ci  dur: number,
446fb726d48Sopenharmony_ci  isPin?: boolean
447fb726d48Sopenharmony_ci): //@ts-ignore
448fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
449fb726d48Sopenharmony_ci  let pinsql = isPin ? ' AND ref_count > 0' : '';
450fb726d48Sopenharmony_ci  const names = isPin ? " ('sys.mem.pined.purg')" : "('sys.mem.active.purg','sys.mem.inactive.purg')";
451fb726d48Sopenharmony_ci  return query(
452fb726d48Sopenharmony_ci    'querySysPurgeableTab',
453fb726d48Sopenharmony_ci    `SELECT name, MAX( size ) AS maxSize,MIN( size ) AS minSize,AVG( size ) AS avgSize
454fb726d48Sopenharmony_ci    FROM
455fb726d48Sopenharmony_ci        (SELECT
456fb726d48Sopenharmony_ci          'ShmPurg' AS name,
457fb726d48Sopenharmony_ci          ts - tr.start_ts AS startTs,
458fb726d48Sopenharmony_ci          SUM( size ) AS size
459fb726d48Sopenharmony_ci        FROM
460fb726d48Sopenharmony_ci          memory_ashmem,
461fb726d48Sopenharmony_ci          trace_range tr
462fb726d48Sopenharmony_ci        WHERE flag = 0
463fb726d48Sopenharmony_ci        ${pinsql}
464fb726d48Sopenharmony_ci        GROUP BY ts UNION
465fb726d48Sopenharmony_ci        SELECT
466fb726d48Sopenharmony_ci        CASE
467fb726d48Sopenharmony_ci          WHEN
468fb726d48Sopenharmony_ci            f.name = 'sys.mem.active.purg' THEN
469fb726d48Sopenharmony_ci              'ActivePurg'
470fb726d48Sopenharmony_ci              WHEN f.name = 'sys.mem.inactive.purg' THEN
471fb726d48Sopenharmony_ci              'InActivePurg' ELSE 'PinedPurg'
472fb726d48Sopenharmony_ci            END AS name,
473fb726d48Sopenharmony_ci            m.ts - tr.start_ts AS startTs,
474fb726d48Sopenharmony_ci            m.value AS size
475fb726d48Sopenharmony_ci          FROM
476fb726d48Sopenharmony_ci            sys_mem_measure m,
477fb726d48Sopenharmony_ci            trace_range tr
478fb726d48Sopenharmony_ci            LEFT JOIN sys_event_filter f ON f.id = m.filter_id
479fb726d48Sopenharmony_ci          WHERE
480fb726d48Sopenharmony_ci            f.name IN ${names}
481fb726d48Sopenharmony_ci          ),
482fb726d48Sopenharmony_ci          trace_range tr
483fb726d48Sopenharmony_ci        WHERE ${leftNs} <= startTs + ${dur} AND ${rightNs} >= startTs
484fb726d48Sopenharmony_ci        GROUP BY name`
485fb726d48Sopenharmony_ci  );
486fb726d48Sopenharmony_ci};
487fb726d48Sopenharmony_ci
488fb726d48Sopenharmony_ci//Ability Monitor Purgeable 点选 tab页
489fb726d48Sopenharmony_ciexport const querySysPurgeableSelectionTab = (
490fb726d48Sopenharmony_ci  startNs: number,
491fb726d48Sopenharmony_ci  isPin?: boolean
492fb726d48Sopenharmony_ci): //@ts-ignore
493fb726d48Sopenharmony_ciPromise<Array<unknown>> => {
494fb726d48Sopenharmony_ci  const pinSql = isPin ? ' AND ref_count > 0' : '';
495fb726d48Sopenharmony_ci  const names = isPin ? " ('sys.mem.pined.purg')" : "('sys.mem.active.purg','sys.mem.inactive.purg')";
496fb726d48Sopenharmony_ci  return query(
497fb726d48Sopenharmony_ci    'querySysPurgeableSelectionTab',
498fb726d48Sopenharmony_ci    `SELECT
499fb726d48Sopenharmony_ci    ( CASE WHEN f.name = 'sys.mem.active.purg' THEN 'ActivePurg' WHEN f.name = 'sys.mem.inactive.purg' THEN 'InActivePurg' ELSE 'PinedPurg' END ) AS name,
500fb726d48Sopenharmony_ci    m.value AS value
501fb726d48Sopenharmony_ci    FROM
502fb726d48Sopenharmony_ci    sys_mem_measure m,
503fb726d48Sopenharmony_ci    trace_range tr
504fb726d48Sopenharmony_ci    LEFT JOIN sys_event_filter f ON f.id = m.filter_id
505fb726d48Sopenharmony_ci    WHERE
506fb726d48Sopenharmony_ci    f.name IN ${names}
507fb726d48Sopenharmony_ci    AND m.ts - tr.start_ts = ${startNs} 
508fb726d48Sopenharmony_ci    UNION
509fb726d48Sopenharmony_ci    SELECT
510fb726d48Sopenharmony_ci    'ShmPurg' AS name,
511fb726d48Sopenharmony_ci    SUM( size ) AS value
512fb726d48Sopenharmony_ci    FROM
513fb726d48Sopenharmony_ci    memory_ashmem,
514fb726d48Sopenharmony_ci    trace_range tr
515fb726d48Sopenharmony_ci    WHERE
516fb726d48Sopenharmony_ci    memory_ashmem.ts - tr.start_ts = ${startNs}
517fb726d48Sopenharmony_ci    AND flag=0
518fb726d48Sopenharmony_ci    ${pinSql}
519fb726d48Sopenharmony_ci    GROUP BY ts`
520fb726d48Sopenharmony_ci  );
521fb726d48Sopenharmony_ci};
522fb726d48Sopenharmony_ci//Ability Monitor SkiaGpuMemory 框选
523fb726d48Sopenharmony_ciexport const getTabGpuMemoryAbilityData = (leftNs: number, rightNs: number, dur: number): Promise<Array<GpuMemory>> =>
524fb726d48Sopenharmony_ci  query<GpuMemory>(
525fb726d48Sopenharmony_ci    'getTabGpuMemoryAbilityData',
526fb726d48Sopenharmony_ci    `SELECT (S.ts-TR.start_ts) as startNs,
527fb726d48Sopenharmony_ci    gpu_name_id as gpuNameId,
528fb726d48Sopenharmony_ci    MAX(S.used_gpu_size) as maxSize,
529fb726d48Sopenharmony_ci    MIN(S.used_gpu_size) as minSize,
530fb726d48Sopenharmony_ci    Avg(S.used_gpu_size) as avgSize,
531fb726d48Sopenharmony_ci    E.pid as processId,
532fb726d48Sopenharmony_ci    E.name as processName
533fb726d48Sopenharmony_ci    from trace_range as TR,memory_process_gpu as S
534fb726d48Sopenharmony_ci    left join process as E on E.ipid=S.ipid
535fb726d48Sopenharmony_ci    WHERE
536fb726d48Sopenharmony_ci    $leftNS <= startNs + ${dur}
537fb726d48Sopenharmony_ci    and
538fb726d48Sopenharmony_ci    $rightNS >= startNs
539fb726d48Sopenharmony_ci    GROUP by 
540fb726d48Sopenharmony_ci    E.pid ,S.gpu_name_id
541fb726d48Sopenharmony_ci            `,
542fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
543fb726d48Sopenharmony_ci  );
544fb726d48Sopenharmony_ci//Ability Monitor SkiaGpuMemory 点选
545fb726d48Sopenharmony_ciexport const getTabGpuMemoryAbilityClickData = (startNs: number): Promise<Array<GpuMemory>> =>
546fb726d48Sopenharmony_ci  query<GpuMemory>(
547fb726d48Sopenharmony_ci    'getTabGpuMemoryAbilityClickData',
548fb726d48Sopenharmony_ci    `SELECT
549fb726d48Sopenharmony_ci    (S.ts-TR.start_ts) as startNs,
550fb726d48Sopenharmony_ci    S.used_gpu_size as size,
551fb726d48Sopenharmony_ci    E.pid as processId,
552fb726d48Sopenharmony_ci    E.name as processName,
553fb726d48Sopenharmony_ci    A.data as gpuName
554fb726d48Sopenharmony_ci    from trace_range as TR,memory_process_gpu as S
555fb726d48Sopenharmony_ci    left join process as E on E.ipid=S.ipid
556fb726d48Sopenharmony_ci    left join data_dict as A on A.id=S.gpu_name_id
557fb726d48Sopenharmony_ci    WHERE
558fb726d48Sopenharmony_ci    startNs = ${startNs}
559fb726d48Sopenharmony_ci              `,
560fb726d48Sopenharmony_ci    { $startNs: startNs }
561fb726d48Sopenharmony_ci  );
562fb726d48Sopenharmony_ci//Ability Monitor Gpu Memory 点选比较
563fb726d48Sopenharmony_ciexport const getTabGpuMemoryComparisonData = (startNs: number): Promise<Array<GpuMemoryComparison>> =>
564fb726d48Sopenharmony_ci  query<GpuMemoryComparison>(
565fb726d48Sopenharmony_ci    'getTabGpuMemoryComparisonData',
566fb726d48Sopenharmony_ci    `SELECT
567fb726d48Sopenharmony_ci      (S.ts-TR.start_ts) as startNs,
568fb726d48Sopenharmony_ci      sum(S.used_gpu_size) as value,
569fb726d48Sopenharmony_ci      E.pid as processId,
570fb726d48Sopenharmony_ci      S.gpu_name_id as gpuNameId,
571fb726d48Sopenharmony_ci      E.name as processName
572fb726d48Sopenharmony_ci      from trace_range as TR,memory_process_gpu as S
573fb726d48Sopenharmony_ci      left join process as E on E.ipid=S.ipid
574fb726d48Sopenharmony_ci      WHERE
575fb726d48Sopenharmony_ci      startNs = ${startNs}
576fb726d48Sopenharmony_ci      GROUP by
577fb726d48Sopenharmony_ci      E.pid, S.gpu_name_id
578fb726d48Sopenharmony_ci                `,
579fb726d48Sopenharmony_ci    { $startNs: startNs }
580fb726d48Sopenharmony_ci  );
581