• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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