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_ci//   VM Tracker Dma泳道图
16fb726d48Sopenharmony_ciimport { Dma, DmaComparison } from '../../bean/AbilityMonitor';
17fb726d48Sopenharmony_ciimport { query } from '../SqlLite';
18fb726d48Sopenharmony_ciimport { SnapshotStruct } from '../ui-worker/ProcedureWorkerSnapshot';
19fb726d48Sopenharmony_ci
20fb726d48Sopenharmony_ciexport const queryDmaSampsData = (process: number): Promise<Array<SnapshotStruct>> =>
21fb726d48Sopenharmony_ci  query(
22fb726d48Sopenharmony_ci    'queryDmaSampsData',
23fb726d48Sopenharmony_ci    `SELECT 
24fb726d48Sopenharmony_ci      (A.ts - B.start_ts) as startNs,
25fb726d48Sopenharmony_ci      sum(A.size) as value,
26fb726d48Sopenharmony_ci      A.flag as flag,
27fb726d48Sopenharmony_ci      A.ipid as ipid,
28fb726d48Sopenharmony_ci      E.data as expTaskComm
29fb726d48Sopenharmony_ci      FROM memory_dma A,trace_range B 
30fb726d48Sopenharmony_ci      left join data_dict as E on E.id=A.exp_task_comm_id
31fb726d48Sopenharmony_ci    WHERE
32fb726d48Sopenharmony_ci      A.flag = 0
33fb726d48Sopenharmony_ci      AND  $pid = A.ipid
34fb726d48Sopenharmony_ci      AND A.ts < B.end_ts
35fb726d48Sopenharmony_ci    GROUP by A.ts;`,
36fb726d48Sopenharmony_ci    { $pid: process }
37fb726d48Sopenharmony_ci  );
38fb726d48Sopenharmony_ci
39fb726d48Sopenharmony_ciexport const queryisExistsDmaData = (process: number): Promise<Array<SnapshotStruct>> =>
40fb726d48Sopenharmony_ci  query(
41fb726d48Sopenharmony_ci    'queryisExistsDmaData',
42fb726d48Sopenharmony_ci    `SELECT EXISTS (
43fb726d48Sopenharmony_ci        SELECT 1
44fb726d48Sopenharmony_ci        FROM memory_dma A,trace_range B
45fb726d48Sopenharmony_ci        left join data_dict as E on E.id=A.exp_task_comm_id
46fb726d48Sopenharmony_ci        WHERE A.flag = 0
47fb726d48Sopenharmony_ci        AND  $pid = A.ipid
48fb726d48Sopenharmony_ci        AND A.ts < B.end_ts
49fb726d48Sopenharmony_ci        GROUP by A.ts
50fb726d48Sopenharmony_ci    ) AS data_exists`,
51fb726d48Sopenharmony_ci    { $pid: process }
52fb726d48Sopenharmony_ci  );
53fb726d48Sopenharmony_ci
54fb726d48Sopenharmony_ci//Ability Monitor Dma 框选
55fb726d48Sopenharmony_ciexport const getTabDmaAbilityData = (leftNs: number, rightNs: number, dur: number): Promise<Array<Dma>> =>
56fb726d48Sopenharmony_ci  query<Dma>(
57fb726d48Sopenharmony_ci    'getTabDmaAbilityData',
58fb726d48Sopenharmony_ci    `SELECT (S.ts-TR.start_ts) as startNs,
59fb726d48Sopenharmony_ci        MAX(S.size) as maxSize,
60fb726d48Sopenharmony_ci        MIN(S.size) as minSize,
61fb726d48Sopenharmony_ci        Avg(S.size) as avgSize,
62fb726d48Sopenharmony_ci        E.pid as processId,
63fb726d48Sopenharmony_ci        E.name as processName
64fb726d48Sopenharmony_ci    from trace_range as TR,memory_dma as S
65fb726d48Sopenharmony_ci    left join process as E on E.ipid=S.ipid
66fb726d48Sopenharmony_ci    WHERE
67fb726d48Sopenharmony_ci      $leftNS <= startNs + ${dur} and $rightNS >= startNs
68fb726d48Sopenharmony_ci      and flag = 0
69fb726d48Sopenharmony_ci    GROUP by E.pid
70fb726d48Sopenharmony_ci              `,
71fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs }
72fb726d48Sopenharmony_ci  );
73fb726d48Sopenharmony_ci
74fb726d48Sopenharmony_ci//VM Tracker Dma 框选
75fb726d48Sopenharmony_ciexport const getTabDmaVmTrackerData = (
76fb726d48Sopenharmony_ci  leftNs: number,
77fb726d48Sopenharmony_ci  rightNs: number,
78fb726d48Sopenharmony_ci  processId: number,
79fb726d48Sopenharmony_ci  dur: number
80fb726d48Sopenharmony_ci): Promise<Array<Dma>> =>
81fb726d48Sopenharmony_ci  query<Dma>(
82fb726d48Sopenharmony_ci    'getTabDmaVmTrackerData',
83fb726d48Sopenharmony_ci    `SELECT (S.ts-TR.start_ts) as startNs,
84fb726d48Sopenharmony_ci      MAX(S.size) as maxSize,
85fb726d48Sopenharmony_ci      MIN(S.size) as minSize,
86fb726d48Sopenharmony_ci      Avg(S.size) as avgSize
87fb726d48Sopenharmony_ci    from trace_range as TR,memory_dma as S
88fb726d48Sopenharmony_ci    left join data_dict as C on C.id=S.exp_task_comm_id
89fb726d48Sopenharmony_ci    where
90fb726d48Sopenharmony_ci      $leftNS <= startNs + ${dur} and $rightNS >= startNs
91fb726d48Sopenharmony_ci      and flag = 0
92fb726d48Sopenharmony_ci    and
93fb726d48Sopenharmony_ci        $pid = S.ipid
94fb726d48Sopenharmony_ci              `,
95fb726d48Sopenharmony_ci    { $leftNS: leftNs, $rightNS: rightNs, $pid: processId }
96fb726d48Sopenharmony_ci  );
97fb726d48Sopenharmony_ci
98fb726d48Sopenharmony_ci//Ability Monitor Dma 点选
99fb726d48Sopenharmony_ciexport const getTabDmaAbilityClickData = (startNs: number): Promise<Array<Dma>> =>
100fb726d48Sopenharmony_ci  query<Dma>(
101fb726d48Sopenharmony_ci    'getTabDmaAbilityClickData',
102fb726d48Sopenharmony_ci    `SELECT
103fb726d48Sopenharmony_ci  (S.ts-TR.start_ts) as startNs,
104fb726d48Sopenharmony_ci    S.fd as fd,
105fb726d48Sopenharmony_ci    S.size as size,
106fb726d48Sopenharmony_ci    S.ino as ino,
107fb726d48Sopenharmony_ci    S.exp_pid as expPid,
108fb726d48Sopenharmony_ci    buf_name_id as bufName,
109fb726d48Sopenharmony_ci    exp_name_id as expName,
110fb726d48Sopenharmony_ci    exp_task_comm_id as expTaskComm,
111fb726d48Sopenharmony_ci    E.pid as processId,
112fb726d48Sopenharmony_ci    E.name as processName,
113fb726d48Sopenharmony_ci    S.flag as flag
114fb726d48Sopenharmony_ci    from trace_range as TR,memory_dma as S
115fb726d48Sopenharmony_ci    left join process as E on E.ipid=S.ipid
116fb726d48Sopenharmony_ci    WHERE
117fb726d48Sopenharmony_ci    startNs = ${startNs}
118fb726d48Sopenharmony_ci              `,
119fb726d48Sopenharmony_ci    { $startNs: startNs }
120fb726d48Sopenharmony_ci  );
121fb726d48Sopenharmony_ci
122fb726d48Sopenharmony_ci//VM Tracker Dma 点选
123fb726d48Sopenharmony_ciexport const getTabDmaVMTrackerClickData = (startNs: number, processId: number): Promise<Array<Dma>> =>
124fb726d48Sopenharmony_ci  query<Dma>(
125fb726d48Sopenharmony_ci    'getTabDmaVMTrackerClickData',
126fb726d48Sopenharmony_ci    `SELECT
127fb726d48Sopenharmony_ci    (S.ts-TR.start_ts) as startNs,
128fb726d48Sopenharmony_ci    S.fd as fd,
129fb726d48Sopenharmony_ci    S.size as size,
130fb726d48Sopenharmony_ci    S.ino as ino,
131fb726d48Sopenharmony_ci    S.exp_pid as expPid,
132fb726d48Sopenharmony_ci    buf_name_id as bufName,
133fb726d48Sopenharmony_ci    exp_name_id as expName,
134fb726d48Sopenharmony_ci    exp_task_comm_id as expTaskComm,
135fb726d48Sopenharmony_ci    S.flag as flag
136fb726d48Sopenharmony_ci    from trace_range as TR,memory_dma as S
137fb726d48Sopenharmony_ci    WHERE
138fb726d48Sopenharmony_ci    startNs = ${startNs}
139fb726d48Sopenharmony_ci    AND
140fb726d48Sopenharmony_ci    $pid = S.ipid
141fb726d48Sopenharmony_ci              `,
142fb726d48Sopenharmony_ci    { $startNs: startNs, $pid: processId }
143fb726d48Sopenharmony_ci  );
144fb726d48Sopenharmony_ci
145fb726d48Sopenharmony_ci//Ability Monitor Dma 点选比较
146fb726d48Sopenharmony_ciexport const getTabDmaAbilityComparisonData = (startNs: number): Promise<Array<DmaComparison>> =>
147fb726d48Sopenharmony_ci  query<DmaComparison>(
148fb726d48Sopenharmony_ci    'getTabDmaAbilityComparisonData',
149fb726d48Sopenharmony_ci    `SELECT
150fb726d48Sopenharmony_ci      (S.ts-TR.start_ts) as startNs,
151fb726d48Sopenharmony_ci      sum(S.size) as value,
152fb726d48Sopenharmony_ci      E.pid as processId,
153fb726d48Sopenharmony_ci      E.name as processName
154fb726d48Sopenharmony_ci      from trace_range as TR,memory_dma as S
155fb726d48Sopenharmony_ci      left join process as E on E.ipid=S.ipid
156fb726d48Sopenharmony_ci      WHERE
157fb726d48Sopenharmony_ci      startNs = ${startNs}
158fb726d48Sopenharmony_ci      GROUP by
159fb726d48Sopenharmony_ci      E.pid
160fb726d48Sopenharmony_ci                `,
161fb726d48Sopenharmony_ci    { $startNs: startNs }
162fb726d48Sopenharmony_ci  );
163fb726d48Sopenharmony_ci
164fb726d48Sopenharmony_ci//VM Tracker Dma 点选比较
165fb726d48Sopenharmony_ciexport const getTabDmaVmTrackerComparisonData = (startNs: number, processId: number): Promise<Array<DmaComparison>> =>
166fb726d48Sopenharmony_ci  query<DmaComparison>(
167fb726d48Sopenharmony_ci    'getTabDmaVmTrackerComparisonData',
168fb726d48Sopenharmony_ci    `SELECT
169fb726d48Sopenharmony_ci    (S.ts-TR.start_ts) as startNs,
170fb726d48Sopenharmony_ci    sum(S.size) as value
171fb726d48Sopenharmony_ci    from trace_range as TR,memory_dma as S
172fb726d48Sopenharmony_ci    WHERE
173fb726d48Sopenharmony_ci    startNs = ${startNs}
174fb726d48Sopenharmony_ci    AND
175fb726d48Sopenharmony_ci    $pid = S.ipid
176fb726d48Sopenharmony_ci                `,
177fb726d48Sopenharmony_ci    { $startNs: startNs, $pid: processId }
178fb726d48Sopenharmony_ci  );
179