blob: 4d51383a1b26f7d9733fb67c224fd1f1b89b1590 [file] [log] [blame]
--
-- Copyright 2022 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.
DROP VIEW IF EXISTS irq_runtime_all;
CREATE VIEW irq_runtime_all
AS
SELECT ts, dur, name
FROM slice
WHERE category = 'irq';
DROP VIEW IF EXISTS hw_irq_runtime;
CREATE VIEW hw_irq_runtime
AS
SELECT ts, dur, name
FROM irq_runtime_all
WHERE name GLOB 'IRQ (*)'
ORDER BY dur DESC;
DROP VIEW IF EXISTS hw_irq_runtime_statistics;
CREATE VIEW hw_irq_runtime_statistics
AS
SELECT
MAX(dur) AS max_runtime,
COUNT(IIF(dur > 1e6, 1, NULL)) AS over_threshold_count,
COUNT(*) AS total_count
FROM hw_irq_runtime;
DROP VIEW IF EXISTS sw_irq_runtime;
CREATE VIEW sw_irq_runtime
AS
SELECT ts, dur, name
FROM irq_runtime_all
WHERE name NOT GLOB 'IRQ (*)'
ORDER BY dur DESC;
CREATE VIEW sw_irq_runtime_statistics
AS
SELECT
MAX(dur) AS max_runtime,
COUNT(IIF(dur > 5e6, 1, NULL)) AS over_threshold_count,
COUNT(*) AS total_count
FROM sw_irq_runtime;
DROP VIEW IF EXISTS android_irq_runtime_output;
CREATE VIEW android_irq_runtime_output
AS
SELECT
AndroidIrqRuntimeMetric(
'hw_irq',
(
SELECT
AndroidIrqRuntimeMetric_IrqRuntimeMetric(
'max_runtime',
max_runtime,
'total_count',
total_count,
'threshold_metric',
AndroidIrqRuntimeMetric_ThresholdMetric(
'threshold',
'1ms',
'over_threshold_count',
over_threshold_count,
'anomaly_ratio',
CAST(
over_threshold_count AS DOUBLE)
/ CAST(
total_count AS DOUBLE)),
'longest_irq_slices',
(
SELECT
RepeatedField(
AndroidIrqRuntimeMetric_IrqSlice(
'irq_name', name, 'ts', ts, 'dur', dur))
FROM (SELECT ts, dur, name FROM hw_irq_runtime LIMIT 10)
))
FROM hw_irq_runtime_statistics
),
'sw_irq',
(
SELECT
AndroidIrqRuntimeMetric_IrqRuntimeMetric(
'max_runtime',
max_runtime,
'total_count',
total_count,
'threshold_metric',
AndroidIrqRuntimeMetric_ThresholdMetric(
'threshold',
'5ms',
'over_threshold_count',
over_threshold_count,
'anomaly_ratio',
CAST(
over_threshold_count AS DOUBLE)
/ CAST(
total_count AS DOUBLE)),
'longest_irq_slices',
(
SELECT
RepeatedField(
AndroidIrqRuntimeMetric_IrqSlice(
'irq_name', name, 'ts', ts, 'dur', dur))
FROM (SELECT ts, dur, name FROM sw_irq_runtime LIMIT 10)
))
FROM sw_irq_runtime_statistics
));