/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { query } from '../SqlLite'; import { Smaps } from '../../bean/SmapsStruct'; export const querySmapsExits = (): Promise> => query( 'querySmapsExits', `select event_name from stat s where s.event_name = 'trace_smaps' and s.stat_type ='received' and s.count > 0` ); export const querySmapsData = (columnName: string): Promise> => query( 'querySmapsCounterData', `SELECT (A.timestamp - B.start_ts) as startNs, sum(${columnName}) * 1024 as value, $columnName as name FROM smaps A,trace_range B WHERE A.timestamp < B.end_ts GROUP by A.timestamp;`, { $columnName: columnName } ); export const querySmapsDataMax = (columnName: string): Promise> => query( 'querySmapsDataMax', ` SELECT (A.timestamp - B.start_ts) as startNS,sum(${columnName}) as max_value FROM smaps A,trace_range B GROUP by A.timestamp order by max_value desc LIMIT 1` ); export const getTabSmapsMaxSize = (leftNs: number, rightNs: number, dur: number): Promise> => query( 'getTabSmapsMaxRss', ` SELECT (A.timestamp - B.start_ts) as startNS, sum(virtaul_size) *1024 as max_value FROM smaps A,trace_range B where startNS <= $rightNs and (startNS+$dur)>=$leftNs`, { $rightNs: rightNs, $leftNs: leftNs, $dur: dur } ); export const getTabSmapsData = (leftNs: number, rightNs: number, dur: number): Promise> => query( 'getTabSmapsData', ` SELECT (A.timestamp - t.start_ts) AS startNs, start_addr as startAddr, end_addr as endAddr, A.type, resident_size * 1024 AS rss, protection_id as pid, pss * 1024 as pss,virtaul_size * 1024 AS size,reside,A.path_id AS path, shared_clean * 1024 as sharedClean,shared_dirty * 1024 as sharedDirty,private_clean * 1024 as privateClean, private_dirty * 1024 as privateDirty,swap * 1024 as swap,swap_pss * 1024 as swapPss FROM smaps A, trace_range AS t WHERE (startNs) <= $rightNs and (startNs+$dur) >=$leftNs`, { $rightNs: rightNs, $leftNs: leftNs, $dur: dur }, 'exec' ); export const getTabSmapsSampleData = (leftNs: number): Promise> => query( 'getTabSmapsSampleData', ` SELECT (A.timestamp - t.start_ts) AS startNs, start_addr as startAddr, end_addr as endAddr, A.type, resident_size * 1024 AS rss, protection_id as pid, pss * 1024 as pss,virtaul_size * 1024 AS size,reside,A.path_id AS path, shared_clean * 1024 as sharedClean,shared_dirty * 1024 as sharedDirty,private_clean * 1024 as privateClean, private_dirty * 1024 as privateDirty,swap * 1024 as swap,swap_pss * 1024 as swapPss FROM smaps A, trace_range AS t WHERE (startNs) = ${leftNs}`, { $leftNs: leftNs }, 'exec' ); // VM Tracker Smaps Record Tab页 export const querySmapsRecordTabData = ( startNs: number, ipid: number, pixelmapId: number, typeId: number ): Promise> => query( 'querySmapsRecordTabData', `select 'RenderServiceCpu' as name, IFNULL(sum(mem_size), 0) as size from memory_rs_image, trace_range tr where ipid = ${ipid} and (ts - tr.start_ts) = ${startNs} and type_id = ${pixelmapId} union all select 'SkiaCpu' as name, total_size as size from memory_cpu,trace_range where (ts - start_ts) = ${startNs} union all select 'GLESHostCache' as name, 0 union all select 'VirtaulSize' as name, sum(virtaul_size) * 1024 as size from smaps, trace_range where type = ${typeId} and (timeStamp - start_ts) = ${startNs}` ); export const getTabSmapsStatisticMaxSize = (rightNs: number): Promise> => query( 'getTabSmapsStatisticMaxRss', ` SELECT (A.timestamp - B.start_ts) as startNS, sum(virtaul_size) * 1024 as max_value FROM smaps A,trace_range B where startNS = $rightNs`, { $rightNs: rightNs } ); export const getTabSmapsStatisticData = (rightNs: number): Promise> => query( 'getTabSmapsStatisticData', `SELECT (A.timestamp - t.start_ts) AS startNs, start_addr as startAddr, end_addr as endAddr, A.type, sum(resident_size) * 1024 AS rss, protection_id as pid, count(A.path_id) as count, sum(pss) * 1024 as pss ,sum(virtaul_size) * 1024 AS size,sum(reside) as reside,A.path_id AS path, sum(shared_clean) * 1024 as sharedClean,sum(shared_dirty) * 1024 as sharedDirty,sum(private_clean) * 1024 as privateClean,sum(private_dirty) * 1024 as privateDirty, sum(swap) * 1024 as swap,sum(swap_pss) * 1024 as swapPss FROM smaps A, trace_range AS t WHERE (startNs) =$rightNs group by type,path`, { $rightNs: rightNs }, 'exec' ); export const getTabSmapsStatisticSelectData = (leftNs: number, rightNs: number, dur: number): Promise> => query( 'getTabSmapsStatisticData', `SELECT (A.timestamp - t.start_ts) AS startNs, start_addr as startAddr, end_addr as endAddr, A.type, sum(resident_size) * 1024 AS rss, protection_id as pid, count(A.path_id) as count, sum(pss) * 1024 as pss ,sum(virtaul_size) * 1024 AS size,sum(reside) as reside,A.path_id AS path, sum(shared_clean) * 1024 as sharedClean,sum(shared_dirty) * 1024 as sharedDirty,sum(private_clean) * 1024 as privateClean,sum(private_dirty) * 1024 as privateDirty, sum(swap) * 1024 as swap,sum(swap_pss) * 1024 as swapPss FROM smaps A, trace_range AS t WHERE (startNs) <=$rightNs and (startNs+$dur)>=$leftNs group by type,path`, { $rightNs: rightNs, $leftNs: leftNs, $dur: dur }, 'exec' );