Skip to content

Commit b9e6f80

Browse files
Oksana Zhuravlovachromeos-ci-prod
authored andcommitted
[tracing][stdlib] Add input.sql module
This CL adds a new stdlib module for getting information about the input pipeline. The first table added to this module has sequences of the input pipeline processing steps. PERFETTO_TESTS=`autoninja -C out/Default perfetto_diff_tests && out/Default/bin/run_perfetto_diff_tests` Bug: b:374736396 Change-Id: Ie800f92ec58b80e4f8cb896fb1c5b3ef9a94f950 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5948879 Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by: Tushar Agarwal <agarwaltushar@google.com> Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org> Cr-Commit-Position: refs/heads/main@{#1374761} CrOS-Libchrome-Original-Commit: fecb9c66216c89c4a7aa7d6c88b97c12f649d3ed
1 parent 8114554 commit b9e6f80

File tree

4 files changed

+130
-0
lines changed

4 files changed

+130
-0
lines changed

base/tracing/stdlib/chrome/input.sql

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
-- Copyright 2024 The Chromium Authors
2+
-- Use of this source code is governed by a BSD-style license that can be
3+
-- found in the LICENSE file.
4+
5+
INCLUDE PERFETTO MODULE slices.with_context;
6+
7+
-- Processing steps of the Chrome input pipeline.
8+
CREATE PERFETTO TABLE _chrome_input_pipeline_steps_no_input_type(
9+
-- Id of this Chrome input pipeline (LatencyInfo).
10+
latency_id INT,
11+
-- Slice id
12+
slice_id INT,
13+
-- The step timestamp.
14+
ts INT,
15+
-- Step duration.
16+
dur INT,
17+
-- Utid of the thread.
18+
utid INT,
19+
-- Step name (ChromeLatencyInfo.step).
20+
step STRING,
21+
-- Input type.
22+
input_type STRING
23+
) AS
24+
SELECT
25+
EXTRACT_ARG(thread_slice.arg_set_id, 'chrome_latency_info.trace_id') AS latency_id,
26+
id AS slice_id,
27+
ts,
28+
dur,
29+
utid,
30+
EXTRACT_ARG(thread_slice.arg_set_id, 'chrome_latency_info.step') AS step,
31+
EXTRACT_ARG(thread_slice.arg_set_id, 'chrome_latency_info.input_type') AS input_type
32+
FROM
33+
thread_slice
34+
WHERE
35+
step IS NOT NULL
36+
AND latency_id != -1
37+
ORDER BY slice_id, ts;
38+
39+
-- Each row represents one input pipeline.
40+
CREATE PERFETTO TABLE chrome_inputs(
41+
-- Id of this Chrome input pipeline (LatencyInfo).
42+
latency_id INT,
43+
-- Input type.
44+
input_type STRING
45+
) AS
46+
SELECT
47+
-- Id of this Chrome input pipeline (LatencyInfo).
48+
latency_id,
49+
-- MIN selects the first non-null value.
50+
MIN(input_type) as input_type
51+
FROM _chrome_input_pipeline_steps_no_input_type
52+
WHERE latency_id != -1
53+
GROUP BY latency_id;
54+
55+
-- Since not all steps have associated input type (but all steps
56+
-- for a given latency id should have the same input type),
57+
-- populate input type for steps where it would be NULL.
58+
CREATE PERFETTO TABLE chrome_input_pipeline_steps(
59+
-- Id of this Chrome input pipeline (LatencyInfo).
60+
latency_id INT,
61+
-- Slice id
62+
slice_id INT,
63+
-- The step timestamp.
64+
ts INT,
65+
-- Step duration.
66+
dur INT,
67+
-- Utid of the thread.
68+
utid INT,
69+
-- Step name (ChromeLatencyInfo.step).
70+
step STRING,
71+
-- Input type.
72+
input_type STRING
73+
) AS
74+
SELECT
75+
latency_id,
76+
slice_id,
77+
ts,
78+
dur,
79+
utid,
80+
step,
81+
chrome_inputs.input_type AS input_type
82+
FROM
83+
chrome_inputs
84+
LEFT JOIN
85+
_chrome_input_pipeline_steps_no_input_type
86+
USING (latency_id)
87+
WHERE chrome_inputs.input_type IS NOT NULL;

base/tracing/stdlib/chrome/perfetto_sql_files.gni

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ chrome_stdlib_sql_files = [
1111
"histograms.sql",
1212
"interactions.sql",
1313
"metadata.sql",
14+
"input.sql",
1415
"page_loads.sql",
1516
"scroll_interactions.sql",
1617
"speedometer.sql",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
14171c9e502a65a454f39fe14fce8b313c7012a2c14394bed496fc93b1644b0d

base/tracing/test/trace_processor/diff_tests/chrome/tests_scroll_jank.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,3 +352,44 @@ def test_chrome_event_latencies(self):
352352
772,"EventLatency",4488833198068189,38185000,21,1,"INERTIAL_GESTURE_SCROLL_UPDATE",42,11.111000,0,4488833211744189,4488833212097189,4488833226028189,4488833227246189,4488833236253189
353353
819,"EventLatency",4488833209202189,38170000,22,1,"INERTIAL_GESTURE_SCROLL_UPDATE",43,11.111000,0,4488833223115189,4488833223308189,4488833237115189,4488833238196189,4488833247372189
354354
"""))
355+
356+
# A trace from M131 (ToT as of adding this test) has the necessary
357+
# events/arguments.
358+
def test_chrome_input_pipeline_steps(self):
359+
return DiffTestBlueprint(
360+
trace=DataPath('scroll_m131.pftrace'),
361+
query="""
362+
INCLUDE PERFETTO MODULE chrome.input;
363+
364+
SELECT latency_id,
365+
input_type,
366+
GROUP_CONCAT(step) AS steps
367+
FROM chrome_input_pipeline_steps
368+
GROUP BY latency_id
369+
ORDER by input_type
370+
LIMIT 20
371+
""",
372+
out=Csv("""
373+
"latency_id","input_type","steps"
374+
-2143831735395279846,"GESTURE_FLING_CANCEL_EVENT","STEP_SEND_INPUT_EVENT_UI"
375+
-2143831735395279570,"GESTURE_FLING_CANCEL_EVENT","STEP_SEND_INPUT_EVENT_UI"
376+
-2143831735395279037,"GESTURE_FLING_CANCEL_EVENT","STEP_SEND_INPUT_EVENT_UI"
377+
-2143831735395280234,"GESTURE_FLING_START_EVENT","STEP_SEND_INPUT_EVENT_UI"
378+
-2143831735395279756,"GESTURE_FLING_START_EVENT","STEP_SEND_INPUT_EVENT_UI"
379+
-2143831735395279516,"GESTURE_FLING_START_EVENT","STEP_SEND_INPUT_EVENT_UI"
380+
-2143831735395278975,"GESTURE_FLING_START_EVENT","STEP_SEND_INPUT_EVENT_UI"
381+
-2143831735395280167,"GESTURE_SCROLL_BEGIN_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
382+
-2143831735395279816,"GESTURE_SCROLL_BEGIN_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
383+
-2143831735395279175,"GESTURE_SCROLL_BEGIN_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
384+
-2143831735395279004,"GESTURE_SCROLL_BEGIN_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
385+
-2143831735395280198,"GESTURE_SCROLL_END_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_GESTURE_EVENT_HANDLED,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
386+
-2143831735395279762,"GESTURE_SCROLL_END_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_GESTURE_EVENT_HANDLED,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
387+
-2143831735395279584,"GESTURE_SCROLL_END_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_GESTURE_EVENT_HANDLED,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
388+
-2143831735395279038,"GESTURE_SCROLL_END_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_GESTURE_EVENT_HANDLED,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
389+
-2143831735395280256,"GESTURE_SCROLL_UPDATE_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
390+
-2143831735395280254,"GESTURE_SCROLL_UPDATE_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
391+
-2143831735395280250,"GESTURE_SCROLL_UPDATE_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
392+
-2143831735395280248,"GESTURE_SCROLL_UPDATE_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
393+
-2143831735395280246,"GESTURE_SCROLL_UPDATE_EVENT","STEP_SEND_INPUT_EVENT_UI,STEP_HANDLE_INPUT_EVENT_IMPL,STEP_DID_HANDLE_INPUT_AND_OVERSCROLL,STEP_GESTURE_EVENT_HANDLED"
394+
"""))
395+

0 commit comments

Comments
 (0)