Lines Matching +full:fast +full:- +full:glob
1 -- Copyright 2023 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.
7 -- Returns the mojo ipc hash for a given task, looking it up from the
8 -- argument of descendant ScopedSetIpcHash slice.
9 -- This is relevant only for the older Chrome traces, where mojo IPC
10 -- hash was reported in a separate ScopedSetIpcHash slice.
19 -- Returns the frame type (main frame vs subframe) for key navigation tasks
20 -- which capture the associated RenderFrameHost in an argument.
33 -- Human-readable aliases for a few key navigation tasks.
49 -- Takes a task name and formats it correctly for scheduler tasks.
54 -- Takes the category and determines whether it is "Java" only, as opposed to
55 -- "toplevel,Java".
58 SELECT $category GLOB "*Java*" AND $category not GLOB "*toplevel*";
60 -- Takes the category and determines whether is any valid
61 -- toplevel category or combination of categories.
66 -- TODO(altimin): the situations with kinds in this file is a bit of a mess.
67 -- The idea is that it should work as `type` in the `slice` table, pointing to
68 -- a "child" table with more information about the task (e.g. posted_from for
69 -- scheduler tasks). Currently this is not the case and needs a cleanup.
70 -- Also we should align this with how table inheritance should work for
71 -- `CREATE PERFETTO TABLE`.
73 -- Get task type for a given task kind.
82 -- All slices corresponding to receiving mojo messages.
83 -- On the newer Chrome versions, it's just "Receive mojo message" and
84 -- "Receive mojo reply" slices (or "Receive {mojo_message_name}" if
85 -- built with `extended_tracing_enabled`. On legacy Chrome versions,
86 -- other appropriate messages (like "Connector::DispatchMessage") are used.
87 --
88 -- @column STRING interface_name Name of the IPC interface.
89 -- @column INT ipc_hash Hash of a message name.
90 -- @column STRING message_type Either 'message' or 'reply'.
91 -- @column INT id Slice id.
92 --
93 -- Note: this might include messages received within a sync mojo call.
94 -- TODO(altimin): This should use EXTEND_TABLE when it becomes available.
97 -- Select all new-style (post crrev.com/c/3270337) mojo slices and
98 -- generate |task_name| for them.
99 -- If extended tracing is enabled, the slice name will have the full method
100 -- name (i.e. "Receive content::mojom::FrameHost::DidStopLoading") and we
101 -- should use it as a full name.
102 -- If extended tracing is not enabled, we should include the interface name
103 -- and method hash into the full name.
115 category GLOB '*toplevel*'
116 AND name GLOB 'Receive *'
118 -- Select old-style slices for channel-associated mojo events.
127 category GLOB "*mojom*"
128 AND name GLOB '*.mojom.*'
130 -- Select old-style slices for non-(channel-associated) mojo events.
142 category GLOB "*toplevel*" AND name = "Connector::DispatchMessage"
144 -- Merge all mojo slices.
151 -- As we lookup by ID on |internal_chrome_mojo_slices| table, add an index on
152 -- id to make lookups fast.
155 -- This table contains a list of slices corresponding to the _representative_
156 -- Chrome Java view operations.
157 -- These are the outermost Java view slices after filtering out generic framework views
158 -- (like FitWindowsLinearLayout) and selecting the outermost slices from the remaining ones.
159 --
160 -- @column id INT Slice id.
161 -- @column ts INT Timestamp.
162 -- @column dur INT Duration.
163 -- @column name STRING Name of the view.
164 -- @column is_software_screenshot BOOL Whether this slice is a part of non-accelerated
165 -- capture toolbar screenshot.
166 -- @column is_hardware_screenshot BOOL Whether this slice is a part of accelerated
167 -- capture toolbar screenshot.
170 -- .draw, .onLayout and .onMeasure parts of the java view names don't add much, strip them.
189 -- Ensure that toplevel Java slices are not included, as they may be logged
190 -- with either category = "toplevel" or category = "toplevel,Java".
191 -- Also filter out the zero duration slices as an attempt to reduce noise as
192 -- "Java" category contains misc events (as it's hard to add new categories).
195 -- We filter out generic slices from various UI frameworks which don't tell us much about
196 -- what exactly this view is doing.
202 -- AndroidX.
207 -- Other non-Chrome UI libraries.
209 -- Generic Chrome frameworks.
218 -- Non-specific Chrome slices.
221 -- Screenshots get their custom annotations below.
224 -- Non-bytecode generated slices.
230 -- While the parent slices are too generic to be used by themselves,
231 -- they can provide some useful metadata.
241 -- We select "outermost" interesting slices: interesting slices which
242 -- do not another interesting slice in their parent chain.
247 -- A list of slices corresponding to operations on interesting (non-generic)
248 -- Chrome Java views. The view is considered interested if it's not a system
249 -- (ContentFrameLayout) or generic library (CompositorViewHolder) views.
250 --
251 -- TODO(altimin): Add "columns_from slice" annotation.
252 -- TODO(altimin): convert this to EXTEND_TABLE when it becomes available.
254 -- Name of the view.
256 -- Whether this slice is a part of non-accelerated capture toolbar screenshot.
258 -- Whether this slice is a part of accelerated capture toolbar screenshot.
260 -- Slice id.
271 -- A list of Choreographer tasks (Android frame generation) in Chrome.
281 WHERE name GLOB "Looper.dispatch: android.view.Choreographer$FrameHandler*";
283 -- Extract task's posted_from information from task's arguments.
294 -- Selects the BeginMainFrame slices (which as posted from ScheduledActionSendBeginMainFrame),
295 -- used for root-level processing. In top-level/Java based slices, these will correspond to the
296 -- ancestor of descendant slices; in long-task tracking, these tasks will be
297 -- on a custom track and will need to be associated with children by timestamp
298 -- and duration. Corresponds with the Choreographer root slices in
299 -- chrome_choreographer_tasks below.
300 --
301 -- Schema:
302 -- @column is The slice id.
303 -- @column kind The type of Java slice.
304 -- @column ts The timestamp of the slice.
305 -- @column name The name of the slice.
321 -- A list of Chrome tasks which were performing operations with Java views,
322 -- together with the names of these views.
323 -- @column id INT Slice id.
324 -- @column kind STRING Type of the task.
325 -- @column java_views STRING Concatenated names of Java views used by the task.
328 -- Select UI thread BeginMainFrames (which are Chrome scheduler tasks) and
329 -- Choreographer frames (which are looper tasks).
336 -- Intermediate step to allow us to sort java view names.
352 -- A list of tasks executed by Chrome scheduler.
358 category GLOB "*toplevel*"
362 -- A list of tasks executed by Chrome scheduler.
364 -- Slice id.
366 -- Type.
368 -- Name of the task.
370 -- Timestamp.
372 -- Duration.
374 -- Utid of the thread this task run on.
376 -- Name of the thread this task run on.
378 -- Upid of the process of this task.
380 -- Name of the process of this task.
382 -- Same as slice.track_id.
384 -- Same as slice.category.
386 -- Same as slice.depth.
388 -- Same as slice.parent_id.
390 -- Same as slice.arg_set_id.
392 -- Same as slice.thread_ts.
394 -- Same as slice.thread_dur.
396 -- Source location where the PostTask was called.
425 -- Select the slice that might be the descendant mojo slice for the given task
426 -- slice if it exists.
435 -- The tricky case here is dealing with sync mojo IPCs: we do not want to
436 -- pick up sync IPCs when we are in a non-IPC task.
437 -- So we look at all toplevel events and pick up the first one:
438 -- for sync mojo messages, it will be "Send mojo message", which then
439 -- will fail.
440 -- Some events are excluded as they can legimately appear under "RunTask"
441 -- before "Receive mojo message".
442 category GLOB "*toplevel*" AND
459 -- A list of "Chrome tasks": top-level execution units (e.g. scheduler tasks /
460 -- IPCs / system callbacks) run by Chrome. For a given thread, the tasks
461 -- will not intersect.
462 --
463 -- @column task_name STRING Name for the given task.
464 -- @column task_type STRING Type of the task (e.g. "scheduler").
465 -- @column scheduling_delay INT
468 -- Select slices from "toplevel" category which do not have another
469 -- "toplevel" slice as ancestor. The possible cases include sync mojo messages
470 -- and tasks in nested runloops. Toplevel events may also be logged as with
471 -- the Java category.
477 WHERE anc.category GLOB "*toplevel*" or anc.category GLOB "*toplevel.viz*") = 0
479 -- Select slices from "Java" category which do not have another "Java" or
480 -- "toplevel" slice as parent. In the longer term they should probably belong
481 -- to "toplevel" category as well, but for now this will have to do. Ensure
482 -- that "Java" slices do not include "toplevel" slices as those would be
483 -- handled elsewhere.
494 WHERE s2.category GLOB "*toplevel*" OR s2.category GLOB "*Java*") = 0
496 -- Generate full names for tasks with java views.
511 -- Select scheduler tasks which are used to run mojo messages and use the mojo names
512 -- as full names for these slices.
513 -- We restrict this to specific scheduler tasks which are expected to run mojo
514 -- tasks due to sync mojo events, which also emit similar events.
517 -- We use the "RunTask" as the task, and pick up the name from its child
518 -- "Receive mojo message" event.
548 -- Add scheduler and mojo full names to non-embedded slices from
549 -- the "toplevel" category, with mojo ones taking precedence.
573 -- Merge slices from toplevel and Java categories.
579 -- A list of "Chrome tasks": top-level execution units (e.g. scheduler tasks /
580 -- IPCs / system callbacks) run by Chrome. For a given thread, the slices
581 -- corresponding to these tasks will not intersect.
583 -- Id for the given task, also the id of the slice this task corresponds to.
585 -- Name for the given task.
587 -- Type of the task (e.g. "scheduler").
589 -- Thread name.
591 -- Utid.
593 -- Process name.
595 -- Upid.
597 -- Alias of |slice.ts|.
599 -- Alias of |slice.dur|.
601 -- Alias of |slice.track_id|.
603 -- Alias of |slice.category|.
605 -- Alias of |slice.arg_set_id|.
607 -- Alias of |slice.thread_ts|.
609 -- Alias of |slice.thread_dur|.
611 -- STRING Legacy alias for |name|.