diff --git a/Android.bp b/Android.bp
index c066dd8..1b7b970 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13133,6 +13133,7 @@
         "src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql",
         "src/trace_processor/metrics/sql/android/startup/slice_functions.sql",
         "src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql",
+        "src/trace_processor/metrics/sql/android/startup/slow_start_thresholds.sql",
         "src/trace_processor/metrics/sql/android/startup/system_state.sql",
         "src/trace_processor/metrics/sql/android/startup/thread_state_breakdown.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_metric.sql",
diff --git a/BUILD b/BUILD
index 8a632cb..f29c84a 100644
--- a/BUILD
+++ b/BUILD
@@ -2244,6 +2244,7 @@
         "src/trace_processor/metrics/sql/android/startup/mcycles_per_launch.sql",
         "src/trace_processor/metrics/sql/android/startup/slice_functions.sql",
         "src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql",
+        "src/trace_processor/metrics/sql/android/startup/slow_start_thresholds.sql",
         "src/trace_processor/metrics/sql/android/startup/system_state.sql",
         "src/trace_processor/metrics/sql/android/startup/thread_state_breakdown.sql",
         "src/trace_processor/metrics/sql/android/sysui_notif_shade_list_builder_metric.sql",
diff --git a/src/trace_processor/metrics/sql/android/BUILD.gn b/src/trace_processor/metrics/sql/android/BUILD.gn
index 04f3116..a10366b 100644
--- a/src/trace_processor/metrics/sql/android/BUILD.gn
+++ b/src/trace_processor/metrics/sql/android/BUILD.gn
@@ -137,6 +137,7 @@
     "startup/mcycles_per_launch.sql",
     "startup/slice_functions.sql",
     "startup/slow_start_reasons.sql",
+    "startup/slow_start_thresholds.sql",
     "startup/system_state.sql",
     "startup/thread_state_breakdown.sql",
     "sysui_notif_shade_list_builder_metric.sql",
diff --git a/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql b/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
index 82c5cbe..5743dfd 100644
--- a/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
+++ b/src/trace_processor/metrics/sql/android/startup/slow_start_reasons.sql
@@ -19,6 +19,8 @@
 SELECT RUN_METRIC('android/startup/thread_state_breakdown.sql');
 SELECT RUN_METRIC('android/startup/system_state.sql');
 SELECT RUN_METRIC('android/startup/mcycles_per_launch.sql');
+-- Define helper functions related to slow start thresholds
+SELECT RUN_METRIC('android/startup/slow_start_thresholds.sql');
 
 CREATE OR REPLACE PERFETTO FUNCTION _is_spans_overlapping(
   ts1 LONG,
@@ -411,7 +413,7 @@
           'MAIN_THREAD_TIME_SPENT_IN_RUNNABLE' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 15,
+            'value', threshold_runnable_percentage(),
             'unit', 'PERCENTAGE',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -423,7 +425,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
-          AND main_thread_time_for_launch_in_runnable_state(launch.startup_id) > launch.dur * 0.15
+          AND main_thread_time_for_launch_in_runnable_state(launch.startup_id) >
+            launch.dur / 100 * threshold_runnable_percentage()
 
         UNION ALL
         SELECT 'Main Thread - Time spent in interruptible sleep state' as slow_cause,
@@ -431,7 +434,7 @@
           'MAIN_THREAD_TIME_SPENT_IN_INTERRUPTIBLE_SLEEP' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 2900000000,
+            'value', threshold_interruptible_sleep_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -441,7 +444,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
-          AND main_thread_time_for_launch_and_state(launch.startup_id, 'S') > 2900e6
+          AND main_thread_time_for_launch_and_state(launch.startup_id, 'S') >
+            threshold_interruptible_sleep_ns()
 
         UNION ALL
         SELECT 'Main Thread - Time spent in Blocking I/O' as slow_cause,
@@ -449,7 +453,7 @@
           'MAIN_THREAD_TIME_SPENT_IN_BLOCKING_IO' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 450000000,
+            'value', threshold_blocking_io_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -461,7 +465,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
-          AND main_thread_time_for_launch_state_and_io_wait(launch.startup_id, 'D*', TRUE) > 450e6
+          AND main_thread_time_for_launch_state_and_io_wait(launch.startup_id, 'D*', TRUE) >
+            threshold_blocking_io_ns()
 
         UNION ALL
         SELECT 'Main Thread - Time spent in OpenDexFilesFromOat*' as slow_cause,
@@ -469,7 +474,7 @@
           'MAIN_THREAD_TIME_SPENT_IN_OPEN_DEX_FILES_FROM_OAT' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 20,
+            'value', threshold_open_dex_files_from_oat_percentage(),
             'unit', 'PERCENTAGE',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -484,7 +489,8 @@
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id AND
           android_sum_dur_on_main_thread_for_startup_and_slice(
-          launch.startup_id, 'OpenDexFilesFromOat*') > launch.dur * 0.2
+          launch.startup_id, 'OpenDexFilesFromOat*') >
+            launch.dur / 100 * threshold_open_dex_files_from_oat_percentage()
 
         UNION ALL
         SELECT 'Time spent in bindApplication' as slow_cause,
@@ -492,7 +498,7 @@
           'TIME_SPENT_IN_BIND_APPLICATION' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 1250000000,
+            'value', threshold_bind_application_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -504,7 +510,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
-          AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'bindApplication') > 1250e6
+          AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'bindApplication') >
+            threshold_bind_application_ns()
 
         UNION ALL
         SELECT 'Time spent in view inflation' as slow_cause,
@@ -512,7 +519,7 @@
           'TIME_SPENT_IN_VIEW_INFLATION' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 450000000,
+            'value', threshold_view_inflation_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -524,7 +531,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
-          AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'inflate') > 450e6
+          AND android_sum_dur_for_startup_and_slice(launch.startup_id, 'inflate') >
+            threshold_view_inflation_ns()
 
         UNION ALL
         SELECT 'Time spent in ResourcesManager#getResources' as slow_cause,
@@ -532,7 +540,7 @@
           'TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 130000000,
+            'value', threshold_resources_manager_get_resources_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -545,7 +553,8 @@
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id
           AND android_sum_dur_for_startup_and_slice(
-          launch.startup_id, 'ResourcesManager#getResources') > 130e6
+          launch.startup_id, 'ResourcesManager#getResources') >
+            threshold_resources_manager_get_resources_ns()
 
         UNION ALL
         SELECT 'Time spent verifying classes' as slow_cause,
@@ -553,7 +562,7 @@
           'TIME_SPENT_VERIFYING_CLASSES' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 15,
+            'value', threshold_verify_classes_percentage(),
             'unit', 'PERCENTAGE',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -568,7 +577,7 @@
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id AND
           android_sum_dur_for_startup_and_slice(launch.startup_id, 'VerifyClass*')
-            > launch.dur * 0.15
+            > launch.dur / 100 * threshold_verify_classes_percentage()
 
         UNION ALL
         SELECT 'Potential CPU contention with another process' AS slow_cause,
@@ -576,7 +585,7 @@
           'POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 100000000,
+            'value', threshold_potential_cpu_contention_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -587,7 +596,8 @@
           NULL as extra
         FROM android_startups launch
         WHERE launch.startup_id = $startup_id AND
-          main_thread_time_for_launch_in_runnable_state(launch.startup_id) > 100e6 AND
+          main_thread_time_for_launch_in_runnable_state(launch.startup_id) >
+            threshold_potential_cpu_contention_ns() AND
           most_active_process_for_launch(launch.startup_id) IS NOT NULL
 
         UNION ALL
@@ -596,7 +606,7 @@
           'JIT_ACTIVITY' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 100000000,
+            'value', threshold_jit_activity_ns(),
             'unit', 'NS',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -612,7 +622,7 @@
           launch.startup_id,
           'Running',
           'Jit thread pool'
-        ) > 100e6
+        ) > threshold_jit_activity_ns()
 
         UNION ALL
         SELECT 'Main Thread - Lock contention' as slow_cause,
@@ -620,7 +630,7 @@
           'MAIN_THREAD_LOCK_CONTENTION' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 20,
+            'value', threshold_lock_contention_percentage(),
             'unit', 'PERCENTAGE',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -637,7 +647,7 @@
           AND android_sum_dur_on_main_thread_for_startup_and_slice(
           launch.startup_id,
           'Lock contention on*'
-        ) > launch.dur * 0.2
+        ) > launch.dur / 100 * threshold_lock_contention_percentage()
 
         UNION ALL
         SELECT 'Main Thread - Monitor contention' as slow_cause,
@@ -645,7 +655,7 @@
           'MAIN_THREAD_MONITOR_CONTENTION' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 15,
+            'value', threshold_monitor_contention_percentage(),
             'unit', 'PERCENTAGE',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -662,7 +672,7 @@
           AND android_sum_dur_on_main_thread_for_startup_and_slice(
             launch.startup_id,
             'Lock contention on a monitor*'
-          ) > launch.dur * 0.15
+          ) > launch.dur / 100 * threshold_monitor_contention_percentage()
 
         UNION ALL
         SELECT 'JIT compiled methods' as slow_cause,
@@ -670,7 +680,7 @@
           'JIT_COMPILED_METHODS' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 65,
+            'value', threshold_jit_compiled_methods_count(),
             'unit', 'COUNT',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -686,7 +696,7 @@
           AND (
           SELECT COUNT(1)
           FROM ANDROID_SLICES_FOR_STARTUP_AND_SLICE_NAME(launch.startup_id, 'JIT compiling*')
-          WHERE thread_name = 'Jit thread pool') > 65
+          WHERE thread_name = 'Jit thread pool') > threshold_jit_compiled_methods_count()
 
         UNION ALL
         SELECT 'Broadcast dispatched count' as slow_cause,
@@ -694,7 +704,7 @@
           'BROADCAST_DISPATCHED_COUNT' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 15,
+            'value', threshold_broadcast_dispatched_count(),
             'unit', 'COUNT',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -708,7 +718,7 @@
         WHERE launch.startup_id = $startup_id
           AND count_slices_concurrent_to_launch(
           launch.startup_id,
-          'Broadcast dispatched*') > 15
+          'Broadcast dispatched*') > threshold_broadcast_dispatched_count()
 
         UNION ALL
         SELECT 'Broadcast received count' as slow_cause,
@@ -716,7 +726,7 @@
           'BROADCAST_RECEIVED_COUNT' as reason_id,
           'WARNING' as severity,
           AndroidStartupMetric_ThresholdValue(
-            'value', 50,
+            'value', threshold_broadcast_received_count(),
             'unit', 'COUNT',
             'higher_expected', FALSE) as expected_val,
           AndroidStartupMetric_ActualValue(
@@ -730,7 +740,7 @@
         WHERE launch.startup_id = $startup_id
           AND count_slices_concurrent_to_launch(
             launch.startup_id,
-            'broadcastReceiveReg*') > 50
+            'broadcastReceiveReg*') > threshold_broadcast_received_count()
 
         UNION ALL
         SELECT 'Startup running concurrent to launch' as slow_cause,
diff --git a/src/trace_processor/metrics/sql/android/startup/slow_start_thresholds.sql b/src/trace_processor/metrics/sql/android/startup/slow_start_thresholds.sql
new file mode 100644
index 0000000..f8ef31b
--- /dev/null
+++ b/src/trace_processor/metrics/sql/android/startup/slow_start_thresholds.sql
@@ -0,0 +1,111 @@
+--
+-- 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.
+--
+
+INCLUDE PERFETTO MODULE android.startup.startups;
+
+DROP VIEW IF EXISTS slow_start_thresholds;
+CREATE PERFETTO VIEW slow_start_thresholds AS
+SELECT
+  15 AS runnable_percentage,
+  2900000000 AS interruptible_sleep_ns,
+  450000000 AS blocking_io_ns,
+  20 AS open_dex_files_from_oat_percentage,
+  1250000000 AS bind_application_ns,
+  450000000 AS view_inflation_ns,
+  130000000 AS resources_manager_get_resources_ns,
+  15 AS verify_classes_percentage,
+  100000000 AS potential_cpu_contention_ns,
+  100000000 AS jit_activity_ns,
+  20 AS lock_contention_percentage,
+  15 AS monitor_contention_percentage,
+  65 AS jit_compiled_methods_count,
+  15 AS broadcast_dispatched_count,
+  50 AS broadcast_received_count;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_runnable_percentage()
+RETURNS INT AS
+  SELECT runnable_percentage 
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_interruptible_sleep_ns()
+RETURNS INT AS
+  SELECT interruptible_sleep_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_blocking_io_ns()
+RETURNS INT AS
+  SELECT blocking_io_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_open_dex_files_from_oat_percentage()
+RETURNS INT AS
+  SELECT open_dex_files_from_oat_percentage
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_bind_application_ns()
+RETURNS INT AS
+  SELECT bind_application_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_view_inflation_ns()
+RETURNS INT AS
+  SELECT view_inflation_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_resources_manager_get_resources_ns()
+RETURNS INT AS
+  SELECT resources_manager_get_resources_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_verify_classes_percentage()
+RETURNS INT AS
+  SELECT verify_classes_percentage
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_potential_cpu_contention_ns()
+RETURNS INT AS
+  SELECT potential_cpu_contention_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_jit_activity_ns()
+RETURNS INT AS
+  SELECT jit_activity_ns
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_lock_contention_percentage()
+RETURNS INT AS
+  SELECT lock_contention_percentage
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_monitor_contention_percentage()
+RETURNS INT AS
+  SELECT monitor_contention_percentage
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_jit_compiled_methods_count()
+RETURNS INT AS
+  SELECT jit_compiled_methods_count
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_broadcast_dispatched_count()
+RETURNS INT AS
+  SELECT broadcast_dispatched_count
+  FROM slow_start_thresholds;
+
+CREATE OR REPLACE PERFETTO FUNCTION threshold_broadcast_received_count()
+RETURNS INT AS
+  SELECT broadcast_received_count
+  FROM slow_start_thresholds;
