1-- 2-- Copyright 2019 The Android Open Source Project 3-- 4-- Licensed under the Apache License, Version 2.0 (the "License"); 5-- you may not use this file except in compliance with the License. 6-- You may obtain a copy of the License at 7-- 8-- https://www.apache.org/licenses/LICENSE-2.0 9-- 10-- Unless required by applicable law or agreed to in writing, software 11-- distributed under the License is distributed on an "AS IS" BASIS, 12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13-- See the License for the specific language governing permissions and 14-- limitations under the License. 15-- 16 17INCLUDE PERFETTO MODULE android.memory.process; 18INCLUDE PERFETTO MODULE linux.memory.process; 19 20SELECT RUN_METRIC('android/process_oom_score.sql'); 21 22DROP VIEW IF EXISTS anon_rss_span; 23CREATE PERFETTO VIEW anon_rss_span AS 24SELECT * FROM _anon_rss; 25 26DROP VIEW IF EXISTS file_rss_span; 27CREATE PERFETTO VIEW file_rss_span AS 28SELECT * FROM _file_rss; 29 30DROP VIEW IF EXISTS shmem_rss_span; 31CREATE PERFETTO VIEW shmem_rss_span AS 32SELECT * FROM _shmem_rss; 33 34DROP VIEW IF EXISTS swap_span; 35CREATE PERFETTO VIEW swap_span AS 36SELECT * FROM _swap; 37 38DROP VIEW IF EXISTS anon_and_swap_span; 39CREATE PERFETTO VIEW anon_and_swap_span AS 40SELECT 41 ts, dur, upid, 42 IFNULL(anon_rss_val, 0) + IFNULL(swap_val, 0) AS anon_and_swap_val 43FROM _anon_swap_sj; 44 45DROP VIEW IF EXISTS rss_and_swap_span; 46CREATE PERFETTO VIEW rss_and_swap_span AS 47SELECT 48 ts, 49 dur, 50 upid, 51 file_rss AS file_rss_val, 52 anon_rss AS anon_rss_val, 53 shmem_rss AS shmem_rss_val, 54 swap AS swap_val, 55 COALESCE(file_rss, 0) 56 + COALESCE(anon_rss, 0) 57 + COALESCE(shmem_rss, 0) AS rss_val, 58 COALESCE(file_rss, 0) 59 + COALESCE(anon_rss, 0) 60 + COALESCE(shmem_rss, 0) 61 + COALESCE(swap, 0) AS rss_and_swap_val 62FROM _memory_rss_and_swap_per_process_table; 63 64-- If we have dalvik events enabled (for ART trace points) we can construct the java heap timeline. 65SELECT RUN_METRIC('android/process_counter_span_view.sql', 66 'table_name', 'java_heap_kb', 67 'counter_name', 'Heap size (KB)'); 68 69DROP VIEW IF EXISTS java_heap_span; 70CREATE PERFETTO VIEW java_heap_span AS 71SELECT ts, dur, upid, java_heap_kb_val * 1024 AS java_heap_val 72FROM java_heap_kb_span; 73 74DROP TABLE IF EXISTS java_heap_by_oom_span; 75CREATE VIRTUAL TABLE java_heap_by_oom_span 76USING SPAN_JOIN(java_heap_span PARTITIONED upid, oom_score_span PARTITIONED upid); 77 78DROP TABLE IF EXISTS anon_rss_by_oom_span; 79CREATE VIRTUAL TABLE anon_rss_by_oom_span 80USING SPAN_JOIN(_anon_rss PARTITIONED upid, oom_score_span PARTITIONED upid); 81 82DROP TABLE IF EXISTS file_rss_by_oom_span; 83CREATE VIRTUAL TABLE file_rss_by_oom_span 84USING SPAN_JOIN(_file_rss PARTITIONED upid, oom_score_span PARTITIONED upid); 85 86DROP TABLE IF EXISTS swap_by_oom_span; 87CREATE VIRTUAL TABLE swap_by_oom_span 88USING SPAN_JOIN(_swap PARTITIONED upid, oom_score_span PARTITIONED upid); 89 90DROP TABLE IF EXISTS anon_and_swap_by_oom_span; 91CREATE VIRTUAL TABLE anon_and_swap_by_oom_span 92USING SPAN_JOIN(anon_and_swap_span PARTITIONED upid, oom_score_span PARTITIONED upid); 93