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 Gpu Memory泳道图 16fb726d48Sopenharmony_ciimport type { SnapshotStruct } from '../ui-worker/ProcedureWorkerSnapshot'; 17fb726d48Sopenharmony_ciimport { query } from '../SqlLite'; 18fb726d48Sopenharmony_ciimport { GpuMemory, GpuMemoryComparison } from '../../bean/AbilityMonitor'; 19fb726d48Sopenharmony_ciimport type { MemoryConfig } from '../../bean/MemoryConfig'; 20fb726d48Sopenharmony_ci 21fb726d48Sopenharmony_ciexport const queryGpuMemoryData = (processId: number): Promise<Array<SnapshotStruct>> => 22fb726d48Sopenharmony_ci query( 23fb726d48Sopenharmony_ci 'queryGpuMemorySampsData', 24fb726d48Sopenharmony_ci `SELECT 25fb726d48Sopenharmony_ci (A.ts - B.start_ts) as startNs, 26fb726d48Sopenharmony_ci sum(A.used_gpu_size) as value, 27fb726d48Sopenharmony_ci A.ipid as ipid 28fb726d48Sopenharmony_ci FROM memory_process_gpu A,trace_range B 29fb726d48Sopenharmony_ci WHERE 30fb726d48Sopenharmony_ci $pid = A.ipid 31fb726d48Sopenharmony_ci AND A.ts < B.end_ts 32fb726d48Sopenharmony_ci GROUP by A.ts;`, 33fb726d48Sopenharmony_ci { $pid: processId } 34fb726d48Sopenharmony_ci ); 35fb726d48Sopenharmony_ci 36fb726d48Sopenharmony_ci// 判断VM Tracker Gpu Memory泳道图是否有数据 37fb726d48Sopenharmony_ciexport const queryisExistsGpuMemoryData = (processId: number): Promise<Array<SnapshotStruct>> => 38fb726d48Sopenharmony_ci query( 39fb726d48Sopenharmony_ci 'queryisExistsGpuMemoryData', 40fb726d48Sopenharmony_ci `SELECT EXISTS ( 41fb726d48Sopenharmony_ci SELECT 1 42fb726d48Sopenharmony_ci FROM memory_process_gpu A, trace_range B 43fb726d48Sopenharmony_ci WHERE $pid = A.ipid 44fb726d48Sopenharmony_ci AND A.ts < B.end_ts 45fb726d48Sopenharmony_ci GROUP BY A.ts 46fb726d48Sopenharmony_ci ) AS data_exists`, 47fb726d48Sopenharmony_ci { $pid: processId } 48fb726d48Sopenharmony_ci ); 49fb726d48Sopenharmony_ci 50fb726d48Sopenharmony_ci//VM Tracker SkiaGpuMemory 框选 51fb726d48Sopenharmony_ciexport const getTabGpuMemoryData = ( 52fb726d48Sopenharmony_ci leftNs: number, 53fb726d48Sopenharmony_ci rightNs: number, 54fb726d48Sopenharmony_ci processId: number, 55fb726d48Sopenharmony_ci dur: number 56fb726d48Sopenharmony_ci): Promise<Array<GpuMemory>> => 57fb726d48Sopenharmony_ci query<GpuMemory>( 58fb726d48Sopenharmony_ci 'getTabGpuMemoryData', 59fb726d48Sopenharmony_ci `SELECT 60fb726d48Sopenharmony_ci (S.ts-TR.start_ts) as startNs, 61fb726d48Sopenharmony_ci gpu_name_id as gpuNameId, 62fb726d48Sopenharmony_ci T.tid as threadId, 63fb726d48Sopenharmony_ci T.name as threadName, 64fb726d48Sopenharmony_ci MAX(S.used_gpu_size) as maxSize, 65fb726d48Sopenharmony_ci MIN(S.used_gpu_size) as minSize, 66fb726d48Sopenharmony_ci Avg(S.used_gpu_size) as avgSize 67fb726d48Sopenharmony_ci from trace_range as TR,memory_process_gpu as S 68fb726d48Sopenharmony_ci left join thread as T on T.itid=S.itid 69fb726d48Sopenharmony_ci where 70fb726d48Sopenharmony_ci $leftNS <= startNs + ${dur} 71fb726d48Sopenharmony_ci and 72fb726d48Sopenharmony_ci $rightNS >= startNs 73fb726d48Sopenharmony_ci and 74fb726d48Sopenharmony_ci $pid = S.ipid 75fb726d48Sopenharmony_ci group by gpu_name_id,threadId 76fb726d48Sopenharmony_ci `, 77fb726d48Sopenharmony_ci { $leftNS: leftNs, $rightNS: rightNs, $pid: processId } 78fb726d48Sopenharmony_ci ); 79fb726d48Sopenharmony_ci 80fb726d48Sopenharmony_ci//VM Tracker SkiaGpuMemory 点选 81fb726d48Sopenharmony_ciexport const getTabGpuMemoryVMTrackerClickData = (startNs: number, processId: number): 82fb726d48Sopenharmony_ci Promise<Array<GpuMemory>> => 83fb726d48Sopenharmony_ci query<GpuMemory>( 84fb726d48Sopenharmony_ci 'getTabGpuMemoryVMTrackerClickData', 85fb726d48Sopenharmony_ci `SELECT 86fb726d48Sopenharmony_ci (S.ts-TR.start_ts) as startNs, 87fb726d48Sopenharmony_ci S.used_gpu_size as size, 88fb726d48Sopenharmony_ci T.tid as threadId, 89fb726d48Sopenharmony_ci T.name as threadName, 90fb726d48Sopenharmony_ci A.data as gpuName 91fb726d48Sopenharmony_ci from trace_range as TR,memory_process_gpu as S 92fb726d48Sopenharmony_ci left join thread as T on T.itid=S.itid 93fb726d48Sopenharmony_ci left join data_dict as A on A.id=S.gpu_name_id 94fb726d48Sopenharmony_ci WHERE 95fb726d48Sopenharmony_ci startNs = ${startNs} 96fb726d48Sopenharmony_ci AND 97fb726d48Sopenharmony_ci $pid = S.ipid 98fb726d48Sopenharmony_ci `, 99fb726d48Sopenharmony_ci { $startNs: startNs, $pid: processId } 100fb726d48Sopenharmony_ci ); 101fb726d48Sopenharmony_ci 102fb726d48Sopenharmony_ci//VM Tracker Gpu Memory 点选比较 103fb726d48Sopenharmony_ciexport const getTabGpuMemoryVmTrackerComparisonData = ( 104fb726d48Sopenharmony_ci startNs: number, 105fb726d48Sopenharmony_ci processId: number 106fb726d48Sopenharmony_ci): Promise<Array<GpuMemoryComparison>> => 107fb726d48Sopenharmony_ci query<GpuMemoryComparison>( 108fb726d48Sopenharmony_ci 'getTabGpuMemoryVmTrackerComparisonData', 109fb726d48Sopenharmony_ci `SELECT 110fb726d48Sopenharmony_ci (S.ts-TR.start_ts) as startNs, 111fb726d48Sopenharmony_ci sum(S.used_gpu_size) as value, 112fb726d48Sopenharmony_ci T.tid as threadId, 113fb726d48Sopenharmony_ci T.name as threadName, 114fb726d48Sopenharmony_ci S.gpu_name_id as gpuNameId 115fb726d48Sopenharmony_ci from trace_range as TR,memory_process_gpu as S 116fb726d48Sopenharmony_ci left join thread as T on T.itid=S.itid 117fb726d48Sopenharmony_ci WHERE 118fb726d48Sopenharmony_ci startNs = ${startNs} 119fb726d48Sopenharmony_ci AND 120fb726d48Sopenharmony_ci $pid = S.ipid 121fb726d48Sopenharmony_ci `, 122fb726d48Sopenharmony_ci { $startNs: startNs, $pid: processId } 123fb726d48Sopenharmony_ci ); 124fb726d48Sopenharmony_ci 125fb726d48Sopenharmony_ciexport const queryMemFilterIdMaxValue = (): Promise<Array<{ filterId: number; maxValue: number }>> => { 126fb726d48Sopenharmony_ci return query( 127fb726d48Sopenharmony_ci 'queryMemFilterIdMaxValue', 128fb726d48Sopenharmony_ci `select filter_id as filterId,max(value) maxValue from process_measure group by filter_id;` 129fb726d48Sopenharmony_ci ); 130fb726d48Sopenharmony_ci}; 131fb726d48Sopenharmony_ci 132fb726d48Sopenharmony_ciexport const getTabVirtualMemoryType = (startTime: number, endTime: number): Promise<Array<string>> => 133fb726d48Sopenharmony_ci query( 134fb726d48Sopenharmony_ci 'getTabVirtualMemoryType', 135fb726d48Sopenharmony_ci ` 136fb726d48Sopenharmony_ci SELECT type from paged_memory_sample s,trace_range t 137fb726d48Sopenharmony_ci WHERE s.end_ts >= $startTime + t.start_ts 138fb726d48Sopenharmony_ci and s.start_ts <= $endTime + t.start_ts 139fb726d48Sopenharmony_ci group by type`, 140fb726d48Sopenharmony_ci { $startTime: startTime, $endTime: endTime } 141fb726d48Sopenharmony_ci ); 142fb726d48Sopenharmony_ci 143fb726d48Sopenharmony_ciexport const queryNativeMemoryRealTime = (): //@ts-ignore 144fb726d48Sopenharmony_ci Promise<Array<unknown>> => 145fb726d48Sopenharmony_ci query( 146fb726d48Sopenharmony_ci 'queryNativeMemoryRealTime', 147fb726d48Sopenharmony_ci `select cs.ts,cs.clock_name from datasource_clockid dc 148fb726d48Sopenharmony_ci left join clock_snapshot cs on dc.clock_id = cs.clock_id 149fb726d48Sopenharmony_ci where data_source_name = 'memory-plugin' or data_source_name = 'nativehook' 150fb726d48Sopenharmony_ci`, 151fb726d48Sopenharmony_ci {} 152fb726d48Sopenharmony_ci ); 153fb726d48Sopenharmony_ci 154fb726d48Sopenharmony_ciexport const queryJsMemoryData = (): //@ts-ignore 155fb726d48Sopenharmony_ci Promise<Array<unknown>> => query('queryJsMemoryData', 156fb726d48Sopenharmony_ci 'SELECT 1 WHERE EXISTS(SELECT 1 FROM js_heap_nodes)'); 157fb726d48Sopenharmony_ci 158fb726d48Sopenharmony_ciexport const queryVmTrackerShmData = ( 159fb726d48Sopenharmony_ci iPid: number 160fb726d48Sopenharmony_ci): //@ts-ignore 161fb726d48Sopenharmony_ci Promise<Array<unknown>> => 162fb726d48Sopenharmony_ci query( 163fb726d48Sopenharmony_ci 'queryVmTrackerShmData', 164fb726d48Sopenharmony_ci `SELECT (A.ts - B.start_ts) as startNs, 165fb726d48Sopenharmony_ci sum(A.size) as value 166fb726d48Sopenharmony_ci FROM 167fb726d48Sopenharmony_ci memory_ashmem A,trace_range B 168fb726d48Sopenharmony_ci where 169fb726d48Sopenharmony_ci A.ipid = ${iPid} 170fb726d48Sopenharmony_ci AND A.ts < B.end_ts 171fb726d48Sopenharmony_ci and 172fb726d48Sopenharmony_ci flag = 0 173fb726d48Sopenharmony_ci GROUP by A.ts`, 174fb726d48Sopenharmony_ci {} 175fb726d48Sopenharmony_ci ); 176fb726d48Sopenharmony_ciexport const queryVmTrackerShmSelectionData = ( 177fb726d48Sopenharmony_ci startNs: number, 178fb726d48Sopenharmony_ci ipid: number 179fb726d48Sopenharmony_ci): //@ts-ignore 180fb726d48Sopenharmony_ci Promise<Array<unknown>> => 181fb726d48Sopenharmony_ci query( 182fb726d48Sopenharmony_ci 'queryVmTrackerShmSelectionData', 183fb726d48Sopenharmony_ci `SELECT (A.ts - B.start_ts) as startNS,A.ipid, 184fb726d48Sopenharmony_ci A.fd,A.size,A.adj,A.ashmem_name_id as name, 185fb726d48Sopenharmony_ci A.ashmem_id as id,A.time,A.purged,A.ref_count as count, 186fb726d48Sopenharmony_ci A.flag 187fb726d48Sopenharmony_ci FROM memory_ashmem A,trace_range B 188fb726d48Sopenharmony_ci where startNS = ${startNs} and ipid = ${ipid};`, 189fb726d48Sopenharmony_ci {} 190fb726d48Sopenharmony_ci ); 191fb726d48Sopenharmony_ciexport const queryMemoryConfig = async (): Promise<Array<MemoryConfig>> => { 192fb726d48Sopenharmony_ci let keyList = await query( 193fb726d48Sopenharmony_ci 'queryIsColorIndex', 194fb726d48Sopenharmony_ci `select 195fb726d48Sopenharmony_ci key 196fb726d48Sopenharmony_ci from 197fb726d48Sopenharmony_ci trace_config`, 198fb726d48Sopenharmony_ci {}, 199fb726d48Sopenharmony_ci ); 200fb726d48Sopenharmony_ci //@ts-ignore 201fb726d48Sopenharmony_ci let keySql = keyList && keyList.length > 0 && keyList.some(entry => entry.key === 'ipid') ? "AND key = 'ipid'" : ''; 202fb726d48Sopenharmony_ci return query( 203fb726d48Sopenharmony_ci 'queryMemoryConfiig', 204fb726d48Sopenharmony_ci `SELECT ipid as iPid, process.pid AS pid, 205fb726d48Sopenharmony_ci process.name AS processName, 206fb726d48Sopenharmony_ci ( 207fb726d48Sopenharmony_ci SELECT value 208fb726d48Sopenharmony_ci FROM trace_config 209fb726d48Sopenharmony_ci WHERE trace_source = 'memory_config' AND key = 'sample_interval') AS interval 210fb726d48Sopenharmony_ci FROM 211fb726d48Sopenharmony_ci trace_config 212fb726d48Sopenharmony_ci LEFT JOIN process ON value = ipid 213fb726d48Sopenharmony_ci WHERE 214fb726d48Sopenharmony_ci trace_source = 'memory_config' 215fb726d48Sopenharmony_ci ${keySql} 216fb726d48Sopenharmony_ci ;` 217fb726d48Sopenharmony_ci ); 218fb726d48Sopenharmony_ci}; 219fb726d48Sopenharmony_ci 220fb726d48Sopenharmony_ci// VM Tracker Purgeable泳道图 221fb726d48Sopenharmony_ciexport const queryPurgeableProcessData = ( 222fb726d48Sopenharmony_ci ipid: number, 223fb726d48Sopenharmony_ci isPin?: boolean 224fb726d48Sopenharmony_ci): //@ts-ignore 225fb726d48Sopenharmony_ci Promise<Array<unknown>> => { 226fb726d48Sopenharmony_ci const pinSql = isPin ? ' AND a.ref_count > 0' : ''; 227fb726d48Sopenharmony_ci const names = isPin ? " ('mem.purg_pin')" : "('mem.purg_sum')"; 228fb726d48Sopenharmony_ci return query( 229fb726d48Sopenharmony_ci 'queryPurgeableProcessData', 230fb726d48Sopenharmony_ci `SELECT startNs, sum( value ) AS value 231fb726d48Sopenharmony_ci FROM 232fb726d48Sopenharmony_ci (SELECT 233fb726d48Sopenharmony_ci m.ts - tr.start_ts AS startNs, 234fb726d48Sopenharmony_ci sum(m.value) AS value 235fb726d48Sopenharmony_ci FROM 236fb726d48Sopenharmony_ci process_measure m, 237fb726d48Sopenharmony_ci trace_range tr 238fb726d48Sopenharmony_ci LEFT JOIN process_measure_filter f ON f.id = m.filter_id 239fb726d48Sopenharmony_ci WHERE 240fb726d48Sopenharmony_ci m.ts < tr.end_ts 241fb726d48Sopenharmony_ci AND f.name = ${names} 242fb726d48Sopenharmony_ci AND f.ipid = ${ipid} 243fb726d48Sopenharmony_ci GROUP BY m.ts 244fb726d48Sopenharmony_ci UNION ALL 245fb726d48Sopenharmony_ci SELECT 246fb726d48Sopenharmony_ci a.ts - tr.start_ts AS startNs, 247fb726d48Sopenharmony_ci sum( a.pss ) AS value 248fb726d48Sopenharmony_ci FROM 249fb726d48Sopenharmony_ci memory_ashmem a, 250fb726d48Sopenharmony_ci trace_range tr 251fb726d48Sopenharmony_ci WHERE 252fb726d48Sopenharmony_ci a.ts < tr.end_ts 253fb726d48Sopenharmony_ci AND a.flag = 0 254fb726d48Sopenharmony_ci AND a.ipid = ${ipid} 255fb726d48Sopenharmony_ci ${pinSql} 256fb726d48Sopenharmony_ci GROUP BY a.ts) 257fb726d48Sopenharmony_ci GROUP BY startNs` 258fb726d48Sopenharmony_ci ); 259fb726d48Sopenharmony_ci}; 260fb726d48Sopenharmony_ci 261fb726d48Sopenharmony_ciexport const queryVirtualMemory = (): //@ts-ignore 262fb726d48Sopenharmony_ci Promise<Array<unknown>> => 263fb726d48Sopenharmony_ci query('queryVirtualMemory', 264fb726d48Sopenharmony_ci `select 265fb726d48Sopenharmony_ci id, 266fb726d48Sopenharmony_ci name 267fb726d48Sopenharmony_ci from sys_event_filter where type='sys_virtual_memory_filter'`); 268fb726d48Sopenharmony_ci 269fb726d48Sopenharmony_ciexport const queryVirtualMemoryData = ( 270fb726d48Sopenharmony_ci filterId: number 271fb726d48Sopenharmony_ci): //@ts-ignore 272fb726d48Sopenharmony_ci Promise<Array<unknown>> => 273fb726d48Sopenharmony_ci query( 274fb726d48Sopenharmony_ci 'queryVirtualMemoryData', 275fb726d48Sopenharmony_ci `select ts-${window.recordStartNS} as startTime,value,filter_id as filterID 276fb726d48Sopenharmony_ci from sys_mem_measure where filter_id=$filter_id`, 277fb726d48Sopenharmony_ci { $filter_id: filterId } 278fb726d48Sopenharmony_ci ); 279fb726d48Sopenharmony_ci 280fb726d48Sopenharmony_ciexport const queryTraceMemory = (): Promise< 281fb726d48Sopenharmony_ci Array<{ 282fb726d48Sopenharmony_ci maxNum: string; 283fb726d48Sopenharmony_ci minNum: string; 284fb726d48Sopenharmony_ci avgNum: string; 285fb726d48Sopenharmony_ci name: string; 286fb726d48Sopenharmony_ci processName: string; 287fb726d48Sopenharmony_ci }> 288fb726d48Sopenharmony_ci> => 289fb726d48Sopenharmony_ci query( 290fb726d48Sopenharmony_ci 'queryTraceMemory', 291fb726d48Sopenharmony_ci ` 292fb726d48Sopenharmony_ci select 293fb726d48Sopenharmony_ci max(value) as maxNum, 294fb726d48Sopenharmony_ci min(value) as minNum, 295fb726d48Sopenharmony_ci avg(value) as avgNum, 296fb726d48Sopenharmony_ci filter.name as name, 297fb726d48Sopenharmony_ci p.name as processName 298fb726d48Sopenharmony_ci from process_measure 299fb726d48Sopenharmony_ci left join process_measure_filter as filter on filter.id= filter_id 300fb726d48Sopenharmony_ci left join process as p on p.id = filter.ipid 301fb726d48Sopenharmony_ci where 302fb726d48Sopenharmony_ci filter_id > 0 303fb726d48Sopenharmony_ci and 304fb726d48Sopenharmony_ci filter.name = 'mem.rss.anon' 305fb726d48Sopenharmony_ci group by 306fb726d48Sopenharmony_ci filter_id 307fb726d48Sopenharmony_ci order by 308fb726d48Sopenharmony_ci avgNum desc` 309fb726d48Sopenharmony_ci ); 310fb726d48Sopenharmony_ci 311fb726d48Sopenharmony_ciexport const queryTraceMemoryTop = (): Promise< 312fb726d48Sopenharmony_ci Array<{ 313fb726d48Sopenharmony_ci maxNum: string; 314fb726d48Sopenharmony_ci minNum: string; 315fb726d48Sopenharmony_ci avgNum: string; 316fb726d48Sopenharmony_ci name: string; 317fb726d48Sopenharmony_ci processName: string; 318fb726d48Sopenharmony_ci }> 319fb726d48Sopenharmony_ci> => 320fb726d48Sopenharmony_ci query( 321fb726d48Sopenharmony_ci 'queryTraceMemoryTop', 322fb726d48Sopenharmony_ci ` 323fb726d48Sopenharmony_ci select 324fb726d48Sopenharmony_ci max(value) as maxNum, 325fb726d48Sopenharmony_ci min(value) as minNum, 326fb726d48Sopenharmony_ci avg(value) as avgNum, 327fb726d48Sopenharmony_ci f.name as name, 328fb726d48Sopenharmony_ci p.name as processName 329fb726d48Sopenharmony_ci from process_measure 330fb726d48Sopenharmony_ci left join process_measure_filter as f on f.id= filter_id 331fb726d48Sopenharmony_ci left join process as p on p.id = f.ipid 332fb726d48Sopenharmony_ci where 333fb726d48Sopenharmony_ci filter_id > 0 334fb726d48Sopenharmony_ci and 335fb726d48Sopenharmony_ci f.name = 'mem.rss.anon' 336fb726d48Sopenharmony_ci group by 337fb726d48Sopenharmony_ci filter_id 338fb726d48Sopenharmony_ci order by 339fb726d48Sopenharmony_ci avgNum desc limit 10` 340fb726d48Sopenharmony_ci ); 341fb726d48Sopenharmony_ci 342fb726d48Sopenharmony_ciexport const queryTraceMemoryUnAgg = (): Promise< 343fb726d48Sopenharmony_ci Array<{ 344fb726d48Sopenharmony_ci processName: string; 345fb726d48Sopenharmony_ci name: string; 346fb726d48Sopenharmony_ci value: string; 347fb726d48Sopenharmony_ci ts: string; 348fb726d48Sopenharmony_ci }> 349fb726d48Sopenharmony_ci> => 350fb726d48Sopenharmony_ci query( 351fb726d48Sopenharmony_ci 'queryTraceMemoryUnAgg', 352fb726d48Sopenharmony_ci ` 353fb726d48Sopenharmony_ci select 354fb726d48Sopenharmony_ci p.name as processName, 355fb726d48Sopenharmony_ci group_concat(filter.name) as name, 356fb726d48Sopenharmony_ci cast(group_concat(value) as varchar) as value, 357fb726d48Sopenharmony_ci cast(group_concat(ts) as varchar) as ts 358fb726d48Sopenharmony_ci from process_measure m 359fb726d48Sopenharmony_ci left join process_measure_filter as filter on filter.id= m.filter_id 360fb726d48Sopenharmony_ci left join process as p on p.id = filter.ipid 361fb726d48Sopenharmony_ci where 362fb726d48Sopenharmony_ci filter.name = 'mem.rss.anon' 363fb726d48Sopenharmony_ci or 364fb726d48Sopenharmony_ci filter.name = 'mem.rss.file' 365fb726d48Sopenharmony_ci or 366fb726d48Sopenharmony_ci filter.name = 'mem.swap' 367fb726d48Sopenharmony_ci or 368fb726d48Sopenharmony_ci filter.name = 'oom_score_adj' 369fb726d48Sopenharmony_ci group by 370fb726d48Sopenharmony_ci p.name,filter.ipid 371fb726d48Sopenharmony_ci order by 372fb726d48Sopenharmony_ci filter.ipid` 373fb726d48Sopenharmony_ci ); 374fb726d48Sopenharmony_ci 375fb726d48Sopenharmony_ciexport const queryMemoryMaxData = ( 376fb726d48Sopenharmony_ci memoryName: string 377fb726d48Sopenharmony_ci): //@ts-ignore 378fb726d48Sopenharmony_ci Promise<Array<unknown>> => 379fb726d48Sopenharmony_ci query( 380fb726d48Sopenharmony_ci 'queryMemoryMaxData', 381fb726d48Sopenharmony_ci `SELECT ifnull(max(m.value),0) as maxValue, 382fb726d48Sopenharmony_ci filter_id 383fb726d48Sopenharmony_ci from sys_mem_measure m 384fb726d48Sopenharmony_ci WHERE m.filter_id = 385fb726d48Sopenharmony_ci (SELECT id FROM sys_event_filter WHERE name = $memoryName) 386fb726d48Sopenharmony_ci`, 387fb726d48Sopenharmony_ci { $memoryName: memoryName } 388fb726d48Sopenharmony_ci ); 389fb726d48Sopenharmony_ci 390fb726d48Sopenharmony_ciexport const getTabPaneVirtualMemoryStatisticsData = ( 391fb726d48Sopenharmony_ci leftNs: number, 392fb726d48Sopenharmony_ci rightNs: number 393fb726d48Sopenharmony_ci): //@ts-ignore 394fb726d48Sopenharmony_ci Promise<Array<unknown>> => 395fb726d48Sopenharmony_ci query( 396fb726d48Sopenharmony_ci 'getTabPaneVirtualMemoryStatisticsData', 397fb726d48Sopenharmony_ci ` 398fb726d48Sopenharmony_ci select p.pid, 399fb726d48Sopenharmony_ci t.tid, 400fb726d48Sopenharmony_ci ifnull(p.name,'Process') as pname, 401fb726d48Sopenharmony_ci ifnull(t.name,'Thread') as tname, 402fb726d48Sopenharmony_ci f.type, 403fb726d48Sopenharmony_ci f.ipid, 404fb726d48Sopenharmony_ci f.itid, 405fb726d48Sopenharmony_ci count(f.ipid) as count, 406fb726d48Sopenharmony_ci sum(dur) as allDuration, 407fb726d48Sopenharmony_ci min(dur) as minDuration, 408fb726d48Sopenharmony_ci max(dur) as maxDuration, 409fb726d48Sopenharmony_ci avg(dur) as avgDuration 410fb726d48Sopenharmony_ci from paged_memory_sample as f 411fb726d48Sopenharmony_ci left join process as p on f.ipid=p.ipid left join thread as t on f.itid=t.itid 412fb726d48Sopenharmony_ci where f.end_ts >= $leftNs 413fb726d48Sopenharmony_ci and f.start_ts <= $rightNs 414fb726d48Sopenharmony_ci group by f.type,f.ipid,f.itid 415fb726d48Sopenharmony_ci order by f.type; 416fb726d48Sopenharmony_ci`, 417fb726d48Sopenharmony_ci { $leftNs: leftNs, $rightNs: rightNs } 418fb726d48Sopenharmony_ci ); 419fb726d48Sopenharmony_ci 420fb726d48Sopenharmony_ciexport const getFileSysVirtualMemoryChartData = (): //@ts-ignore 421fb726d48Sopenharmony_ci Promise<Array<unknown>> => 422fb726d48Sopenharmony_ci query( 423fb726d48Sopenharmony_ci 'getFileSysVirtualMemoryChartData', 424fb726d48Sopenharmony_ci ` 425fb726d48Sopenharmony_ci select 426fb726d48Sopenharmony_ci (A.start_ts -B.start_ts) as startNS, 427fb726d48Sopenharmony_ci (A.end_ts - B.start_ts) as endNS, 428fb726d48Sopenharmony_ci dur as dur 429fb726d48Sopenharmony_ci from paged_memory_sample A,trace_range B 430fb726d48Sopenharmony_ci where startNS > 0 431fb726d48Sopenharmony_ci order by A.start_ts;`, 432fb726d48Sopenharmony_ci {} 433fb726d48Sopenharmony_ci ); 434fb726d48Sopenharmony_ci 435fb726d48Sopenharmony_ciexport const hasFileSysData = (): //@ts-ignore 436fb726d48Sopenharmony_ci Promise<Array<unknown>> => 437fb726d48Sopenharmony_ci query( 438fb726d48Sopenharmony_ci 'hasFileSysData', 439fb726d48Sopenharmony_ci ` 440fb726d48Sopenharmony_ci select 441fb726d48Sopenharmony_ci fsCount, 442fb726d48Sopenharmony_ci vmCount, 443fb726d48Sopenharmony_ci ioCount from 444fb726d48Sopenharmony_ci (select count(1) as fsCount from file_system_sample s,trace_range t where (s.start_ts between t.start_ts and t.end_ts) or (s.end_ts between t.start_ts and t.end_ts) ) 445fb726d48Sopenharmony_ci ,(select count(1) as vmCount from paged_memory_sample s,trace_range t where (s.start_ts between t.start_ts and t.end_ts) or (s.end_ts between t.start_ts and t.end_ts) ) 446fb726d48Sopenharmony_ci ,(select count(1) as ioCount from bio_latency_sample s,trace_range t where (s.start_ts between t.start_ts and t.end_ts) or (s.end_ts between t.start_ts and t.end_ts) ); 447fb726d48Sopenharmony_ci `, 448fb726d48Sopenharmony_ci {} 449fb726d48Sopenharmony_ci ); 450fb726d48Sopenharmony_ci 451fb726d48Sopenharmony_ciexport const queryEbpfSamplesCount = ( 452fb726d48Sopenharmony_ci startTime: number, 453fb726d48Sopenharmony_ci endTime: number, 454fb726d48Sopenharmony_ci ipids: number[] 455fb726d48Sopenharmony_ci): //@ts-ignore 456fb726d48Sopenharmony_ci Promise<Array<unknown>> => 457fb726d48Sopenharmony_ci query( 458fb726d48Sopenharmony_ci 'queryEbpfSamplesCount', 459fb726d48Sopenharmony_ci ` 460fb726d48Sopenharmony_ci select 461fb726d48Sopenharmony_ci fsCount, 462fb726d48Sopenharmony_ci vmCount 463fb726d48Sopenharmony_ci from 464fb726d48Sopenharmony_ci (select count(1) as fsCount from file_system_sample s,trace_range t 465fb726d48Sopenharmony_ci where s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' 466fb726d48Sopenharmony_ci }) 467fb726d48Sopenharmony_ci,(select count(1) as vmCount from paged_memory_sample s,trace_range t 468fb726d48Sopenharmony_ciwhere s.end_ts between $startTime + t.start_ts and $endTime + t.start_ts ${ipids.length > 0 ? `and s.ipid in (${ipids.join(',')})` : '' 469fb726d48Sopenharmony_ci }); 470fb726d48Sopenharmony_ci`, 471fb726d48Sopenharmony_ci { $startTime: startTime, $endTime: endTime } 472fb726d48Sopenharmony_ci ); 473fb726d48Sopenharmony_ci 474fb726d48Sopenharmony_ciexport const queryisExistsShmData = ( 475fb726d48Sopenharmony_ci iPid: number 476fb726d48Sopenharmony_ci): //@ts-ignore 477fb726d48Sopenharmony_ci Promise<Array<unknown>> => 478fb726d48Sopenharmony_ci query( 479fb726d48Sopenharmony_ci 'queryisExistsShmData', 480fb726d48Sopenharmony_ci `SELECT EXISTS ( 481fb726d48Sopenharmony_ci SELECT 1 482fb726d48Sopenharmony_ci FROM memory_ashmem A,trace_range B 483fb726d48Sopenharmony_ci where A.ipid = ${iPid} 484fb726d48Sopenharmony_ci AND A.ts < B.end_ts 485fb726d48Sopenharmony_ci AND flag = 0 486fb726d48Sopenharmony_ci GROUP BY A.ts 487fb726d48Sopenharmony_ci ) AS data_exists`, 488fb726d48Sopenharmony_ci {} 489fb726d48Sopenharmony_ci ); 490fb726d48Sopenharmony_ci 491fb726d48Sopenharmony_ciexport const queryVmTrackerShmSizeData = ( 492fb726d48Sopenharmony_ci leftNs: number, 493fb726d48Sopenharmony_ci rightNs: number, 494fb726d48Sopenharmony_ci iPid: number, 495fb726d48Sopenharmony_ci dur: number 496fb726d48Sopenharmony_ci): //@ts-ignore 497fb726d48Sopenharmony_ci Promise<Array<unknown>> => 498fb726d48Sopenharmony_ci query( 499fb726d48Sopenharmony_ci 'queryVmTrackerShmSizeData', 500fb726d48Sopenharmony_ci `SELECT ( A.ts - B.start_ts ) AS startNS, 501fb726d48Sopenharmony_ci A.flag, 502fb726d48Sopenharmony_ci avg( A.size ) AS avg, 503fb726d48Sopenharmony_ci max( A.size ) AS max, 504fb726d48Sopenharmony_ci min( A.size ) AS min, 505fb726d48Sopenharmony_ci sum( A.size ) AS sum 506fb726d48Sopenharmony_ci FROM 507fb726d48Sopenharmony_ci memory_ashmem A, 508fb726d48Sopenharmony_ci trace_range B 509fb726d48Sopenharmony_ci WHERE 510fb726d48Sopenharmony_ci startNS <= ${rightNs} and (startNS+ ${dur}) >=${leftNs} 511fb726d48Sopenharmony_ci AND ipid = ${iPid}`, 512fb726d48Sopenharmony_ci {} 513fb726d48Sopenharmony_ci ); 514fb726d48Sopenharmony_ci 515fb726d48Sopenharmony_ciexport const queryisExistsPurgeableData = ( 516fb726d48Sopenharmony_ci ipid: number, 517fb726d48Sopenharmony_ci isPin?: boolean 518fb726d48Sopenharmony_ci): //@ts-ignore 519fb726d48Sopenharmony_ci Promise<Array<unknown>> => { 520fb726d48Sopenharmony_ci const pinSql = isPin ? ' AND a.ref_count > 0' : ''; 521fb726d48Sopenharmony_ci const names = isPin ? " ('mem.purg_pin')" : "('mem.purg_sum')"; 522fb726d48Sopenharmony_ci return query( 523fb726d48Sopenharmony_ci 'queryisExistsPurgeableData', 524fb726d48Sopenharmony_ci `SELECT EXISTS ( 525fb726d48Sopenharmony_ci SELECT 1 526fb726d48Sopenharmony_ci FROM 527fb726d48Sopenharmony_ci (SELECT 1 528fb726d48Sopenharmony_ci FROM 529fb726d48Sopenharmony_ci process_measure m, 530fb726d48Sopenharmony_ci trace_range tr 531fb726d48Sopenharmony_ci LEFT JOIN process_measure_filter f ON f.id = m.filter_id 532fb726d48Sopenharmony_ci WHERE 533fb726d48Sopenharmony_ci m.ts < tr.end_ts 534fb726d48Sopenharmony_ci AND f.name = ${names} 535fb726d48Sopenharmony_ci AND f.ipid = ${ipid} 536fb726d48Sopenharmony_ci UNION ALL 537fb726d48Sopenharmony_ci SELECT 1 538fb726d48Sopenharmony_ci FROM 539fb726d48Sopenharmony_ci memory_ashmem a, 540fb726d48Sopenharmony_ci trace_range tr 541fb726d48Sopenharmony_ci WHERE 542fb726d48Sopenharmony_ci a.ts < tr.end_ts 543fb726d48Sopenharmony_ci AND a.flag = 0 544fb726d48Sopenharmony_ci AND a.ipid = ${ipid} 545fb726d48Sopenharmony_ci ${pinSql}) 546fb726d48Sopenharmony_ci ) AS data_exists` 547fb726d48Sopenharmony_ci ); 548fb726d48Sopenharmony_ci}; 549