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 { query } from '../SqlLite'; 16fb726d48Sopenharmony_ciimport { Smaps } from '../../bean/SmapsStruct'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ciexport const querySmapsExits = (): Promise<Array<unknown>> => 19fb726d48Sopenharmony_ci query( 20fb726d48Sopenharmony_ci 'querySmapsExits', 21fb726d48Sopenharmony_ci `select 22fb726d48Sopenharmony_ci event_name 23fb726d48Sopenharmony_ci from stat s 24fb726d48Sopenharmony_ci where s.event_name = 'trace_smaps' 25fb726d48Sopenharmony_ci and s.stat_type ='received' and s.count > 0` 26fb726d48Sopenharmony_ci ); 27fb726d48Sopenharmony_ci 28fb726d48Sopenharmony_ciexport const querySmapsData = (columnName: string): Promise<Array<unknown>> => 29fb726d48Sopenharmony_ci query( 30fb726d48Sopenharmony_ci 'querySmapsCounterData', 31fb726d48Sopenharmony_ci `SELECT 32fb726d48Sopenharmony_ci (A.timestamp - B.start_ts) as startNs, 33fb726d48Sopenharmony_ci sum(${columnName}) * 1024 as value, 34fb726d48Sopenharmony_ci $columnName as name 35fb726d48Sopenharmony_ci FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP by A.timestamp;`, 36fb726d48Sopenharmony_ci { $columnName: columnName } 37fb726d48Sopenharmony_ci ); 38fb726d48Sopenharmony_ci 39fb726d48Sopenharmony_ciexport const querySmapsDataMax = (columnName: string): Promise<Array<unknown>> => 40fb726d48Sopenharmony_ci query( 41fb726d48Sopenharmony_ci 'querySmapsDataMax', 42fb726d48Sopenharmony_ci ` 43fb726d48Sopenharmony_ci SELECT 44fb726d48Sopenharmony_ci (A.timestamp - B.start_ts) as startNS, 45fb726d48Sopenharmony_ci sum(${columnName}) as max_value 46fb726d48Sopenharmony_ci FROM smaps A,trace_range B GROUP by A.timestamp order by max_value desc LIMIT 1` 47fb726d48Sopenharmony_ci ); 48fb726d48Sopenharmony_ci 49fb726d48Sopenharmony_ciexport const getTabSmapsMaxSize = (leftNs: number, rightNs: number, dur: number): 50fb726d48Sopenharmony_ci Promise<Array<unknown>> => 51fb726d48Sopenharmony_ci query<Smaps>( 52fb726d48Sopenharmony_ci 'getTabSmapsMaxRss', 53fb726d48Sopenharmony_ci ` 54fb726d48Sopenharmony_ci SELECT 55fb726d48Sopenharmony_ci (A.timestamp - B.start_ts) as startNS, 56fb726d48Sopenharmony_ci sum(virtaul_size) *1024 as max_value 57fb726d48Sopenharmony_ci FROM smaps A,trace_range B where startNS <= $rightNs and (startNS+$dur)>=$leftNs`, 58fb726d48Sopenharmony_ci { $rightNs: rightNs, $leftNs: leftNs, $dur: dur } 59fb726d48Sopenharmony_ci ); 60fb726d48Sopenharmony_ci 61fb726d48Sopenharmony_ciexport const getTabSmapsData = (leftNs: number, rightNs: number, dur: number): 62fb726d48Sopenharmony_ci Promise<Array<Smaps>> => 63fb726d48Sopenharmony_ci query<Smaps>( 64fb726d48Sopenharmony_ci 'getTabSmapsData', 65fb726d48Sopenharmony_ci ` 66fb726d48Sopenharmony_ci SELECT 67fb726d48Sopenharmony_ci (A.timestamp - t.start_ts) AS startNs, 68fb726d48Sopenharmony_ci start_addr as startAddr, 69fb726d48Sopenharmony_ci end_addr as endAddr, 70fb726d48Sopenharmony_ci A.type, 71fb726d48Sopenharmony_ci resident_size * 1024 AS rss, 72fb726d48Sopenharmony_ci protection_id as pid, 73fb726d48Sopenharmony_ci pss * 1024 as pss,virtaul_size * 1024 AS size,reside,A.path_id AS path, 74fb726d48Sopenharmony_ci shared_clean * 1024 as sharedClean, 75fb726d48Sopenharmony_ci shared_dirty * 1024 as sharedDirty, 76fb726d48Sopenharmony_ci private_clean * 1024 as privateClean, 77fb726d48Sopenharmony_ci private_dirty * 1024 as privateDirty,swap * 1024 as swap,swap_pss * 1024 as swapPss 78fb726d48Sopenharmony_ci FROM smaps A, 79fb726d48Sopenharmony_ci trace_range AS t 80fb726d48Sopenharmony_ci WHERE (startNs) <= $rightNs and (startNs+$dur) >=$leftNs`, 81fb726d48Sopenharmony_ci { $rightNs: rightNs, $leftNs: leftNs, $dur: dur }, 82fb726d48Sopenharmony_ci ); 83fb726d48Sopenharmony_ciexport const getTabSmapsSampleData = (leftNs: number): Promise<Array<Smaps>> => 84fb726d48Sopenharmony_ci query<Smaps>( 85fb726d48Sopenharmony_ci 'getTabSmapsSampleData', 86fb726d48Sopenharmony_ci ` 87fb726d48Sopenharmony_ci SELECT 88fb726d48Sopenharmony_ci (A.timestamp - t.start_ts) AS startNs, 89fb726d48Sopenharmony_ci start_addr as startAddr, 90fb726d48Sopenharmony_ci end_addr as endAddr, 91fb726d48Sopenharmony_ci A.type, 92fb726d48Sopenharmony_ci resident_size * 1024 AS rss, 93fb726d48Sopenharmony_ci protection_id as pid, 94fb726d48Sopenharmony_ci pss * 1024 as pss,virtaul_size * 1024 AS size,reside,A.path_id AS path, 95fb726d48Sopenharmony_ci shared_clean * 1024 as sharedClean, 96fb726d48Sopenharmony_ci shared_dirty * 1024 as sharedDirty, 97fb726d48Sopenharmony_ci private_clean * 1024 as privateClean, 98fb726d48Sopenharmony_ci private_dirty * 1024 as privateDirty,swap * 1024 as swap,swap_pss * 1024 as swapPss 99fb726d48Sopenharmony_ci FROM smaps A, 100fb726d48Sopenharmony_ci trace_range AS t 101fb726d48Sopenharmony_ci WHERE (startNs) = ${leftNs}`, 102fb726d48Sopenharmony_ci { $leftNs: leftNs }, 103fb726d48Sopenharmony_ci ); 104fb726d48Sopenharmony_ci// VM Tracker Smaps Record Tab页 105fb726d48Sopenharmony_ciexport const querySmapsRecordTabData = ( 106fb726d48Sopenharmony_ci startNs: number, 107fb726d48Sopenharmony_ci ipid: number, 108fb726d48Sopenharmony_ci pixelmapId: number, 109fb726d48Sopenharmony_ci typeId: number 110fb726d48Sopenharmony_ci): Promise<Array<{ name: string; size: number }>> => 111fb726d48Sopenharmony_ci query( 112fb726d48Sopenharmony_ci 'querySmapsRecordTabData', 113fb726d48Sopenharmony_ci `select 'RenderServiceCpu' as name, IFNULL(sum(mem_size), 0) as size 114fb726d48Sopenharmony_ci from memory_rs_image, trace_range tr 115fb726d48Sopenharmony_ci where ipid = ${ipid} and (ts - tr.start_ts) = ${startNs} and type_id = ${pixelmapId} 116fb726d48Sopenharmony_ci union all 117fb726d48Sopenharmony_ci select 'SkiaCpu' as name, total_size as size from memory_cpu,trace_range 118fb726d48Sopenharmony_ci where (ts - start_ts) = ${startNs} 119fb726d48Sopenharmony_ci union all 120fb726d48Sopenharmony_ci select 'GLESHostCache' as name, 0 121fb726d48Sopenharmony_ci union all 122fb726d48Sopenharmony_ci select 'VirtaulSize' as name, sum(virtaul_size) * 1024 as size from smaps, trace_range 123fb726d48Sopenharmony_ci where type = ${typeId} and (timeStamp - start_ts) = ${startNs}` 124fb726d48Sopenharmony_ci ); 125fb726d48Sopenharmony_ci 126fb726d48Sopenharmony_ciexport const getTabSmapsStatisticMaxSize = (rightNs: number): Promise<Array<unknown>> => 127fb726d48Sopenharmony_ci query<Smaps>( 128fb726d48Sopenharmony_ci 'getTabSmapsStatisticMaxRss', 129fb726d48Sopenharmony_ci ` 130fb726d48Sopenharmony_ci SELECT 131fb726d48Sopenharmony_ci (A.timestamp - B.start_ts) as startNS, 132fb726d48Sopenharmony_ci sum(virtaul_size) * 1024 as max_value 133fb726d48Sopenharmony_ci FROM smaps A,trace_range B where startNS = $rightNs`, 134fb726d48Sopenharmony_ci { $rightNs: rightNs } 135fb726d48Sopenharmony_ci ); 136fb726d48Sopenharmony_ci 137fb726d48Sopenharmony_ciexport const getTabSmapsStatisticData = (rightNs: number): Promise<Array<Smaps>> => 138fb726d48Sopenharmony_ci query<Smaps>( 139fb726d48Sopenharmony_ci 'getTabSmapsStatisticData', 140fb726d48Sopenharmony_ci `SELECT 141fb726d48Sopenharmony_ci (A.timestamp - t.start_ts) AS startNs, 142fb726d48Sopenharmony_ci start_addr as startAddr, 143fb726d48Sopenharmony_ci end_addr as endAddr, 144fb726d48Sopenharmony_ci A.type, 145fb726d48Sopenharmony_ci sum(resident_size) * 1024 AS rss, 146fb726d48Sopenharmony_ci protection_id as pid, 147fb726d48Sopenharmony_ci count(A.path_id) as count, 148fb726d48Sopenharmony_ci sum(pss) * 1024 as pss , 149fb726d48Sopenharmony_ci sum(virtaul_size) * 1024 AS size, 150fb726d48Sopenharmony_ci sum(reside) as reside, 151fb726d48Sopenharmony_ci A.path_id AS path, 152fb726d48Sopenharmony_ci sum(shared_clean) * 1024 as sharedClean,sum(shared_dirty) * 1024 as sharedDirty, 153fb726d48Sopenharmony_ci sum(private_clean) * 1024 as privateClean,sum(private_dirty) * 1024 as privateDirty, 154fb726d48Sopenharmony_ci sum(swap) * 1024 as swap,sum(swap_pss) * 1024 as swapPss 155fb726d48Sopenharmony_ci FROM smaps A, 156fb726d48Sopenharmony_ci trace_range AS t 157fb726d48Sopenharmony_ci WHERE (startNs) =$rightNs 158fb726d48Sopenharmony_ci group by type,path`, 159fb726d48Sopenharmony_ci { $rightNs: rightNs } 160fb726d48Sopenharmony_ci ); 161fb726d48Sopenharmony_ci 162fb726d48Sopenharmony_ci 163fb726d48Sopenharmony_ciexport const getTabSmapsStatisticSelectData = (leftNs: number, rightNs: number, dur: number): 164fb726d48Sopenharmony_ci Promise<Array<Smaps>> => 165fb726d48Sopenharmony_ci query<Smaps>( 166fb726d48Sopenharmony_ci 'getTabSmapsStatisticData', 167fb726d48Sopenharmony_ci `SELECT 168fb726d48Sopenharmony_ci (A.timestamp - t.start_ts) AS startNs, 169fb726d48Sopenharmony_ci start_addr as startAddr, 170fb726d48Sopenharmony_ci end_addr as endAddr, 171fb726d48Sopenharmony_ci A.type, 172fb726d48Sopenharmony_ci sum(resident_size) * 1024 AS rss, 173fb726d48Sopenharmony_ci protection_id as pid, 174fb726d48Sopenharmony_ci count(A.path_id) as count, 175fb726d48Sopenharmony_ci sum(pss) * 1024 as pss ,sum(virtaul_size) * 1024 AS size,sum(reside) as reside, 176fb726d48Sopenharmony_ci A.path_id AS path, 177fb726d48Sopenharmony_ci sum(shared_clean) * 1024 as sharedClean,sum(shared_dirty) * 1024 as sharedDirty, 178fb726d48Sopenharmony_ci sum(private_clean) * 1024 as privateClean,sum(private_dirty) * 1024 as privateDirty, 179fb726d48Sopenharmony_ci sum(swap) * 1024 as swap,sum(swap_pss) * 1024 as swapPss 180fb726d48Sopenharmony_ci FROM smaps A, 181fb726d48Sopenharmony_ci trace_range AS t 182fb726d48Sopenharmony_ci WHERE (startNs) <=$rightNs and (startNs+$dur)>=$leftNs 183fb726d48Sopenharmony_ci group by type,path`, 184fb726d48Sopenharmony_ci { $rightNs: rightNs, $leftNs: leftNs, $dur: dur }, 185fb726d48Sopenharmony_ci ); 186