Adds a simple python parser to convert .ftrace file into sqlite3 database. The rest of the analysis logic is done through a series of SQL commands that build tables/views/select queries. Bug: 134705245 Test: trace_analyzer some_ftrace_file.trace tmp_file.db Change-Id: I25274e25a0ab1f091ae4e6161e6726e006e346a5
53 lines
1.9 KiB
SQL
53 lines
1.9 KiB
SQL
/*
|
|
* 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;
|