summaryrefslogtreecommitdiff
path: root/startop/scripts/trace_analyzer/run-sql-queries
blob: 61a0ad42a339d379f7a559dcbc43ebc7b77a0684 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/bin/bash
# Copyright (C) 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
#
#      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.

DIR="$( cd "$(dirname "$0")" ; pwd -P )"

if [[ $# -lt 1 ]]; then
  echo "Usage: $0 <db-file>"
fi

DB_TARGET=$1

if ! [[ -f $DB_TARGET ]]; then
  echo "ERROR: File '$DB_TARGET' does not exist." >&2
  exit 1
fi

exec_sql_file() {
  local filename="$1"
  if ! [[ -f $filename ]]; then
    echo "ERROR: Can't exec SQL file, '$filename' does not exist." >&2
    return 1
  fi

  sqlite3 "$DB_TARGET" < "$DIR"/"$filename"
}

exec_sql_file_quiet() {
  exec_sql_file "$@" > /dev/null
}

# Some views/tables need other views already created, so order does matter.
# x -> y , means x depends on y.

# View: tracing_mark_writes
# Table: tracing_mark_write_split_array -> tracing_mark_writes
exec_sql_file_quiet "queries_all.sql"

# Table: tracing_mark_write_split -> tracing_mark_write_split_array
exec_sql_file_quiet "queries_mark_write_join.sql"

# View: start_procs -> tracing_mark_write_split
exec_sql_file_quiet "queries_get_procs.sql"

# View: sched_switch_next_comm_pids
exec_sql_file_quiet "queries_get_comm_and_pids.sql"

# View: start_process_ui_threads -> start_procs, sched_switch_next_comm_pids
exec_sql_file_quiet "queries_get_ui_threads.sql"

# View: launch_durations_named -> tracing_mark_write_split
exec_sql_file_quiet "queries_app_launch_spans_with_name.sql"

# View: sched_switch_iowaits_pre
# View: sched_switch_iowaits -> sched_switch_iowaits_pre
# Table: blocking_durations -> sched_switch_iowaits
exec_sql_file_quiet "queries_find_sched_switch_unblocked.sql"

# View: blocked_iowait_for_app_launches -> launch_durations_named, blocking_durations
exec_sql_file_quiet "queries_block_launch.sql"

#####
#####
#####

# Final queries

exec_sql_file "queries_pretty_print_block_launch.sql"