xref: /aosp_15_r20/external/cronet/base/tracing/stdlib/chrome/startups.sql (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker-- Copyright 2023 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker-- Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker-- found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard WorkerINCLUDE PERFETTO MODULE slices.with_context;
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker-- Access all startups, including those that don't lead to any visible content.
8*6777b538SAndroid Build Coastguard Worker-- If TimeToFirstVisibleContent is available, then this event will be the
9*6777b538SAndroid Build Coastguard Worker-- main event of the startup. Otherwise, the event for the start timestamp will
10*6777b538SAndroid Build Coastguard Worker-- be used.
11*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO VIEW _startup_start_events AS
12*6777b538SAndroid Build Coastguard WorkerWITH
13*6777b538SAndroid Build Coastguard Workerstarts AS (
14*6777b538SAndroid Build Coastguard Worker  SELECT
15*6777b538SAndroid Build Coastguard Worker    name,
16*6777b538SAndroid Build Coastguard Worker    EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id,
17*6777b538SAndroid Build Coastguard Worker    ts,
18*6777b538SAndroid Build Coastguard Worker    dur,
19*6777b538SAndroid Build Coastguard Worker    upid AS browser_upid
20*6777b538SAndroid Build Coastguard Worker  FROM thread_slice
21*6777b538SAndroid Build Coastguard Worker  WHERE name = 'Startup.ActivityStart'
22*6777b538SAndroid Build Coastguard Worker),
23*6777b538SAndroid Build Coastguard Workertimes_to_first_visible_content AS (
24*6777b538SAndroid Build Coastguard Worker  SELECT
25*6777b538SAndroid Build Coastguard Worker    name,
26*6777b538SAndroid Build Coastguard Worker    EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id,
27*6777b538SAndroid Build Coastguard Worker    ts,
28*6777b538SAndroid Build Coastguard Worker    dur,
29*6777b538SAndroid Build Coastguard Worker    upid AS browser_upid
30*6777b538SAndroid Build Coastguard Worker  FROM process_slice
31*6777b538SAndroid Build Coastguard Worker  WHERE name = 'Startup.TimeToFirstVisibleContent2'
32*6777b538SAndroid Build Coastguard Worker),
33*6777b538SAndroid Build Coastguard Workerall_activity_ids AS (
34*6777b538SAndroid Build Coastguard Worker  SELECT
35*6777b538SAndroid Build Coastguard Worker    DISTINCT activity_id,
36*6777b538SAndroid Build Coastguard Worker    browser_upid
37*6777b538SAndroid Build Coastguard Worker  FROM starts
38*6777b538SAndroid Build Coastguard Worker  UNION ALL
39*6777b538SAndroid Build Coastguard Worker  SELECT
40*6777b538SAndroid Build Coastguard Worker    DISTINCT activity_id,
41*6777b538SAndroid Build Coastguard Worker    browser_upid
42*6777b538SAndroid Build Coastguard Worker  FROM times_to_first_visible_content
43*6777b538SAndroid Build Coastguard Worker),
44*6777b538SAndroid Build Coastguard Workeractivity_ids AS (
45*6777b538SAndroid Build Coastguard Worker  SELECT
46*6777b538SAndroid Build Coastguard Worker    DISTINCT activity_id,
47*6777b538SAndroid Build Coastguard Worker    browser_upid
48*6777b538SAndroid Build Coastguard Worker  FROM all_activity_ids
49*6777b538SAndroid Build Coastguard Worker)
50*6777b538SAndroid Build Coastguard WorkerSELECT
51*6777b538SAndroid Build Coastguard Worker  activity_ids.activity_id,
52*6777b538SAndroid Build Coastguard Worker  'Startup' AS name,
53*6777b538SAndroid Build Coastguard Worker  IFNULL(times_to_first_visible_content.ts, starts.ts) AS startup_begin_ts,
54*6777b538SAndroid Build Coastguard Worker  times_to_first_visible_content.ts +
55*6777b538SAndroid Build Coastguard Worker    times_to_first_visible_content.dur AS first_visible_content_ts,
56*6777b538SAndroid Build Coastguard Worker  activity_ids.browser_upid
57*6777b538SAndroid Build Coastguard WorkerFROM activity_ids
58*6777b538SAndroid Build Coastguard Worker  LEFT JOIN times_to_first_visible_content using(activity_id, browser_upid)
59*6777b538SAndroid Build Coastguard Worker  LEFT JOIN starts using(activity_id, browser_upid);
60*6777b538SAndroid Build Coastguard Worker
61*6777b538SAndroid Build Coastguard Worker-- Chrome launch causes, not recorded at start time; use the activity id to
62*6777b538SAndroid Build Coastguard Worker-- join with the actual startup events.
63*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO VIEW _launch_causes AS
64*6777b538SAndroid Build Coastguard WorkerSELECT
65*6777b538SAndroid Build Coastguard Worker  EXTRACT_ARG(arg_set_id, 'startup.activity_id') AS activity_id,
66*6777b538SAndroid Build Coastguard Worker  EXTRACT_ARG(arg_set_id, 'startup.launch_cause') AS launch_cause,
67*6777b538SAndroid Build Coastguard Worker  upid AS browser_upid
68*6777b538SAndroid Build Coastguard WorkerFROM thread_slice
69*6777b538SAndroid Build Coastguard WorkerWHERE name = 'Startup.LaunchCause';
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker-- Chrome startups, including launch cause.
72*6777b538SAndroid Build Coastguard WorkerCREATE PERFETTO TABLE chrome_startups(
73*6777b538SAndroid Build Coastguard Worker  -- Unique ID
74*6777b538SAndroid Build Coastguard Worker  id INT,
75*6777b538SAndroid Build Coastguard Worker  -- Chrome Activity event id of the launch.
76*6777b538SAndroid Build Coastguard Worker  activity_id INT,
77*6777b538SAndroid Build Coastguard Worker  -- Name of the launch start event.
78*6777b538SAndroid Build Coastguard Worker  name STRING,
79*6777b538SAndroid Build Coastguard Worker  -- Timestamp that the startup occurred.
80*6777b538SAndroid Build Coastguard Worker  startup_begin_ts INT,
81*6777b538SAndroid Build Coastguard Worker  -- Timestamp to the first visible content.
82*6777b538SAndroid Build Coastguard Worker  first_visible_content_ts INT,
83*6777b538SAndroid Build Coastguard Worker  -- Launch cause. See Startup.LaunchCauseType in chrome_track_event.proto.
84*6777b538SAndroid Build Coastguard Worker  launch_cause STRING,
85*6777b538SAndroid Build Coastguard Worker  -- Process ID of the Browser where the startup occurred.
86*6777b538SAndroid Build Coastguard Worker  browser_upid INT
87*6777b538SAndroid Build Coastguard Worker) AS
88*6777b538SAndroid Build Coastguard WorkerSELECT
89*6777b538SAndroid Build Coastguard Worker  ROW_NUMBER() OVER (ORDER BY start_events.startup_begin_ts) AS id,
90*6777b538SAndroid Build Coastguard Worker  start_events.activity_id,
91*6777b538SAndroid Build Coastguard Worker  start_events.name,
92*6777b538SAndroid Build Coastguard Worker  start_events.startup_begin_ts,
93*6777b538SAndroid Build Coastguard Worker  start_events.first_visible_content_ts,
94*6777b538SAndroid Build Coastguard Worker  launches.launch_cause,
95*6777b538SAndroid Build Coastguard Worker  start_events.browser_upid
96*6777b538SAndroid Build Coastguard WorkerFROM _startup_start_events start_events
97*6777b538SAndroid Build Coastguard Worker  LEFT JOIN _launch_causes launches
98*6777b538SAndroid Build Coastguard Worker  USING(activity_id, browser_upid);
99