/* * 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. */ DROP VIEW IF EXISTS blocked_iowait_for_app_launches; CREATE VIEW blocked_iowait_for_app_launches AS WITH block_launch_join AS ( SELECT * FROM blocking_durations AS bd, launch_durations_named AS ld WHERE bd.block_timestamp >= ld.started_timestamp AND bd.unblock_timestamp <= ld.finished_timestamp ), blocked_ui_threads AS ( SELECT * FROM start_process_ui_threads AS sp, block_launch_join AS blj WHERE sp.atm_ui_thread_tid == unblock_pid AND sp.process_name = blj.proc_name ), summed_raw AS ( SELECT SUM(unblock_timestamp-block_timestamp)*1000 AS sum_block_duration_ms, * FROM blocked_ui_threads GROUP BY unblock_pid ), summed_neat AS ( SELECT sum_block_duration_ms AS blocked_iowait_duration_ms, process_name, (finished_timestamp - started_timestamp) * 1000 AS launching_duration_ms, started_timestamp * 1000 AS launching_started_timestamp_ms, finished_timestamp * 1000 AS launching_finished_timestamp_ms -- filter out the rest because its just selecting 1 arbitrary row (due to the SUM aggregate)., FROM summed_raw ) SELECT * FROM summed_neat; SELECT * FROM blocked_iowait_for_app_launches;