aboutsummaryrefslogtreecommitdiff
path: root/src/trace_processor/metrics/sql/android/process_mem.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/trace_processor/metrics/sql/android/process_mem.sql')
-rw-r--r--src/trace_processor/metrics/sql/android/process_mem.sql115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/trace_processor/metrics/sql/android/process_mem.sql b/src/trace_processor/metrics/sql/android/process_mem.sql
new file mode 100644
index 000000000..908f11d1c
--- /dev/null
+++ b/src/trace_processor/metrics/sql/android/process_mem.sql
@@ -0,0 +1,115 @@
+--
+-- Copyright 2019 The Android Open Source Project
+--
+-- 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
+--
+-- https://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.
+--
+
+-- Create all the views used to generate the Android Memory metrics proto.
+-- Anon RSS
+SELECT RUN_METRIC('android/process_counter_span_view.sql',
+ 'table_name', 'anon_rss',
+ 'counter_name', 'mem.rss.anon');
+
+-- File RSS
+SELECT RUN_METRIC('android/process_counter_span_view.sql',
+ 'table_name', 'file_rss',
+ 'counter_name', 'mem.rss.file');
+
+SELECT RUN_METRIC('android/process_counter_span_view.sql',
+ 'table_name', 'shmem_rss',
+ 'counter_name', 'mem.rss.shmem');
+
+-- Swap
+SELECT RUN_METRIC('android/process_counter_span_view.sql',
+ 'table_name', 'swap',
+ 'counter_name', 'mem.swap');
+
+-- OOM score
+SELECT RUN_METRIC('android/process_oom_score.sql');
+
+-- Anon RSS + Swap
+DROP TABLE IF EXISTS anon_and_swap_join;
+CREATE VIRTUAL TABLE anon_and_swap_join
+USING SPAN_OUTER_JOIN(anon_rss_span PARTITIONED upid, swap_span PARTITIONED upid);
+
+DROP VIEW IF EXISTS anon_and_swap_span;
+CREATE VIEW anon_and_swap_span AS
+SELECT
+ ts, dur, upid,
+ IFNULL(anon_rss_val, 0) + IFNULL(swap_val, 0) AS anon_and_swap_val
+FROM anon_and_swap_join;
+
+-- Anon RSS + file RSS + Swap
+DROP TABLE IF EXISTS anon_and_file_and_swap_join;
+CREATE VIRTUAL TABLE anon_and_file_and_swap_join
+USING SPAN_OUTER_JOIN(
+ anon_and_swap_join PARTITIONED upid,
+ file_rss_span PARTITIONED upid
+);
+
+-- RSS + Swap
+DROP TABLE IF EXISTS rss_and_swap_join;
+CREATE VIRTUAL TABLE rss_and_swap_join
+USING SPAN_OUTER_JOIN(
+ anon_and_file_and_swap_join PARTITIONED upid,
+ shmem_rss_span PARTITIONED upid
+);
+
+DROP VIEW IF EXISTS rss_and_swap_span;
+CREATE VIEW rss_and_swap_span AS
+SELECT
+ ts, dur, upid,
+ CAST(IFNULL(file_rss_val, 0) AS INT) file_rss_val,
+ CAST(IFNULL(anon_rss_val, 0) AS INT) anon_rss_val,
+ CAST(IFNULL(shmem_rss_val, 0) AS INT) shmem_rss_val,
+ CAST(IFNULL(swap_val, 0) AS INT) swap_val,
+ CAST(
+ IFNULL(anon_rss_val, 0) +
+ IFNULL(file_rss_val, 0) +
+ IFNULL(shmem_rss_val, 0) AS int) AS rss_val,
+ CAST(
+ IFNULL(anon_rss_val, 0)
+ + IFNULL(swap_val, 0)
+ + IFNULL(file_rss_val, 0)
+ + IFNULL(shmem_rss_val, 0) AS int) AS rss_and_swap_val
+FROM rss_and_swap_join;
+
+-- If we have dalvik events enabled (for ART trace points) we can construct the java heap timeline.
+SELECT RUN_METRIC('android/process_counter_span_view.sql',
+ 'table_name', 'java_heap_kb',
+ 'counter_name', 'Heap size (KB)');
+
+DROP VIEW IF EXISTS java_heap_span;
+CREATE VIEW java_heap_span AS
+SELECT ts, dur, upid, java_heap_kb_val * 1024 AS java_heap_val
+FROM java_heap_kb_span;
+
+DROP TABLE IF EXISTS anon_rss_by_oom_span;
+CREATE VIRTUAL TABLE anon_rss_by_oom_span
+USING SPAN_JOIN(anon_rss_span PARTITIONED upid, oom_score_span PARTITIONED upid);
+
+DROP TABLE IF EXISTS file_rss_by_oom_span;
+CREATE VIRTUAL TABLE file_rss_by_oom_span
+USING SPAN_JOIN(file_rss_span PARTITIONED upid, oom_score_span PARTITIONED upid);
+
+DROP TABLE IF EXISTS swap_by_oom_span;
+CREATE VIRTUAL TABLE swap_by_oom_span
+USING SPAN_JOIN(swap_span PARTITIONED upid, oom_score_span PARTITIONED upid);
+
+DROP TABLE IF EXISTS anon_and_swap_by_oom_span;
+CREATE VIRTUAL TABLE anon_and_swap_by_oom_span
+USING SPAN_JOIN(anon_and_swap_span PARTITIONED upid, oom_score_span PARTITIONED upid);
+
+DROP TABLE IF EXISTS java_heap_by_oom_span;
+CREATE VIRTUAL TABLE java_heap_by_oom_span
+USING SPAN_JOIN(java_heap_span PARTITIONED upid, oom_score_span PARTITIONED upid);