• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2023 The Android Open Source Project
3--
4-- Licensed under the Apache License, Version 2.0 (the "License");
5-- you may not use this file except in compliance with the License.
6-- You may obtain a copy of the License at
7--
8--     https://www.apache.org/licenses/LICENSE-2.0
9--
10-- Unless required by applicable law or agreed to in writing, software
11-- distributed under the License is distributed on an "AS IS" BASIS,
12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-- See the License for the specific language governing permissions and
14-- limitations under the License.
15
16CREATE PERFETTO FUNCTION _remove_lambda_name(
17    -- Raw slice name containing at least one "$"
18    name STRING
19)
20-- Removes everything after the first "$"
21RETURNS STRING AS
22SELECT
23  __intrinsic_strip_hex(substr($name, 0, instr($name, "$")), 2) AS end;
24
25CREATE PERFETTO FUNCTION _standardize_wakelock_slice_name(
26    -- Raw slice name
27    name STRING
28)
29-- E.g.: Wakelock(epolld280:system_serve
30-- To: Wakelock(epolld<...>:system_serve
31RETURNS STRING AS
32SELECT
33  CASE
34    WHEN $name GLOB "Wakelock(epolld*" OR $name GLOB "Wakelock(epollm*"
35    THEN CASE
36      WHEN instr($name, ":") > 0
37      THEN substr(
38        $name,
39        1,
40        CASE
41          WHEN $name GLOB "Wakelock(epolld*"
42          THEN instr($name, "epolld") + length("epolld") - 1
43          WHEN $name GLOB "Wakelock(epollm*"
44          THEN instr($name, "epollm") + length("epollm") - 1
45          ELSE 0
46        END
47      ) || "<...>" || substr($name, instr($name, ":"), length($name))
48      ELSE __intrinsic_strip_hex($name, 2)
49    END
50    ELSE __intrinsic_strip_hex($name, 2)
51  END;
52
53CREATE PERFETTO FUNCTION _standardize_vsync_slice_name(
54    -- Raw slice name containing a reference of "*vsync*"
55    name STRING
56)
57-- standardized name of vsync slices
58RETURNS STRING AS
59SELECT
60  CASE
61    WHEN $name GLOB "beginFrame*"
62    THEN "beginFrame <...>"
63    WHEN $name GLOB "frameIsEarly*"
64    THEN "frameIsEarly <...>"
65    WHEN $name GLOB "*vsync*in*"
66    THEN "vsync in <...>"
67    WHEN $name GLOB "present for*vsyncIn*"
68    THEN "present for vsync in <...>"
69    WHEN $name GLOB "wait for earliest present time*"
70    THEN "wait for earliest present time <vsync>"
71    WHEN $name GLOB "present for Common Panel*"
72    THEN "present for Common Panel"
73    WHEN $name GLOB "frameTimelineInfo*"
74    THEN "frameTimelineInfo <...>"
75    WHEN $name GLOB "*setFrameTimelineInfo*"
76    THEN "setFrameTimelineInfo <...>"
77    WHEN $name GLOB "*AChoreographer_vsyncCallback*"
78    THEN "AChoreographer_vsyncCallback <...>"
79    WHEN $name GLOB "unsync-vsync-id=* isSfChoreo=false"
80    THEN "unsync-vsync-id=<...> isSfChoreo=false"
81    WHEN $name GLOB "unsync-vsync-id=* isSfChoreo=true"
82    THEN "unsync-vsync-id=<...> isSfChoreo=true"
83    WHEN $name GLOB "Discarding old vsync*"
84    THEN "Discarding old vsync"
85    WHEN $name GLOB "setDisplayModePtr*"
86    THEN "setDisplayModePtr"
87    WHEN $name GLOB "adjusting vsync by*"
88    THEN "adjusting vsync by <...>"
89    WHEN $name GLOB "Not-Adjusting vsync by*"
90    THEN "Not-Adjusting vsync by <...>"
91    WHEN $name GLOB "dropping stale frameNumber*"
92    THEN "dropping stale frameNumber <...>"
93    WHEN $name GLOB "Sensor event from com.google.sensor.camera_vsync*"
94    THEN "Sensor event from com.google.sensor.camera_vsync <...>"
95    WHEN $name GLOB "*DisplayInfo*"
96    THEN "DisplayInfo <...>"
97    WHEN $name GLOB "Choreographer#onVsync*"
98    THEN "Choreographer#onVsync<...>"
99    WHEN $name GLOB "appSf alarm*;*VSYNC in*"
100    THEN "appSf alarm in <...>; vsync in <...>"
101    WHEN $name GLOB "sf alarm*;*VSYNC in*"
102    THEN "sf alarm in <...>; vsync in <...>"
103    WHEN $name GLOB "app alarm*;*VSYNC in*"
104    THEN "app alarm in <...>; vsync in <...>"
105    WHEN $name GLOB "FT#*"
106    THEN "FT#FrameTrackerEvent"
107    WHEN $name GLOB "*isVsyncValid*"
108    THEN "isVsyncValid <...>"
109    WHEN $name GLOB "onHardwareVsyncRequest*"
110    THEN "onHardwareVsyncRequest <...>"
111    WHEN $name GLOB "onComposerHalVsync*"
112    THEN "onComposerHalVsync <...>"
113    WHEN $name GLOB "ensureMinFrameDurationIsKept*mNumVsyncsForFrame=*mPastExpectedPresentTimes.size()=*"
114    THEN "ensureMinFrameDurationIsKept mNumVsyncsForFrame=<...> mPastExpectedPresentTimes.size()=<...>"
115    WHEN $name GLOB "*lastVsyncDelta*"
116    THEN "lastVsyncDelta=<...>"
117    WHEN $name GLOB "mLastCommittedVsync in*"
118    THEN "mLastCommittedVsync in <...>"
119    ELSE __intrinsic_strip_hex($name, 2)
120  END;
121
122-- Some slice names have params in them. This functions removes them to make it
123-- possible to aggregate by name.
124-- Some examples are:
125--  - Lock/monitor contention slices. The name includes where the lock
126--    contention is in the code. That part is removed.
127--  - DrawFrames/ooFrame. The name also includes the frame number.
128--  - Apk/oat/dex loading: The name of the apk is removed
129CREATE PERFETTO FUNCTION android_standardize_slice_name(
130    -- The raw slice name.
131    name STRING
132)
133-- Simplified name.
134RETURNS STRING AS
135SELECT
136  CASE
137    WHEN $name GLOB "monitor contention with*"
138    THEN "monitor contention with <...>"
139    WHEN $name GLOB "SuspendThreadByThreadId*"
140    THEN "SuspendThreadByThreadId <...>"
141    WHEN $name GLOB "LoadApkAssetsFd*"
142    THEN "LoadApkAssetsFd <...>"
143    WHEN $name GLOB "relayoutWindow*"
144    THEN "relayoutWindow <...>"
145    WHEN $name GLOB "android.os.Handler: kotlinx.coroutines*"
146    THEN "CoroutineContinuation"
147    WHEN $name GLOB "Choreographer#doFrame*"
148    THEN "Choreographer#doFrame"
149    WHEN $name GLOB "DrawFrames*"
150    THEN "DrawFrames"
151    WHEN $name GLOB "AssetManager::OpenNonAsset*"
152    THEN "AssetManager::OpenNonAsset <...>"
153    WHEN $name GLOB "AssetManager::OpenXmlAsset*"
154    THEN "AssetManager::OpenXmlAsset <...>"
155    WHEN $name GLOB "AssetManager::OpenAsset*"
156    THEN "AssetManager::OpenAsset <...>"
157    WHEN $name GLOB "*AssetInputStream*"
158    THEN "AssetInputStream"
159    WHEN $name GLOB "openTypedAssetFile*"
160    THEN "openTypedAssetFile <...>"
161    WHEN $name GLOB "LoadApkAssets*"
162    THEN "LoadApkAssets <...>"
163    WHEN $name GLOB "*AssetLoader:*"
164    THEN "AssetLoader: <...>"
165    WHEN $name GLOB "JIT compiling*"
166    THEN "JIT compiling"
167    WHEN $name GLOB "requested config :*"
168    THEN "requested config : <...>"
169    WHEN $name GLOB "/data/app*.apk"
170    THEN "APK load"
171    WHEN $name GLOB "OpenDexFilesFromOat*"
172    THEN "OpenDexFilesFromOat"
173    WHEN $name GLOB "Open oat file*"
174    THEN "Open oat file"
175    WHEN $name GLOB "Open dex file*"
176    THEN "Open dex file"
177    WHEN $name GLOB "VdexFile*"
178    THEN "VdexFile"
179    WHEN $name GLOB "GC: Wait For*"
180    THEN "Garbage Collector"
181    WHEN $name GLOB "prepareDispatchCycleLocked*"
182    THEN "prepareDispatchCycleLocked <...>"
183    WHEN $name GLOB "enqueueDispatchEntryAndStartDispatchCycleLocked*"
184    THEN "enqueueDispatchEntryAndStartDispatchCycleLocked <...>"
185    WHEN $name GLOB "Layers: *"
186    THEN "Layers: <...>"
187    WHEN $name GLOB "* SurfaceView*(BLAST)#*"
188    THEN substr($name, instr($name, 'SurfaceView'), instr($name, '#') - instr($name, 'SurfaceView'))
189    WHEN $name GLOB "uid=*"
190    THEN "uid = <...>"
191    WHEN $name GLOB "wakeupap=*"
192    THEN "wakeupap = <...>"
193    WHEN $name GLOB "launchingActivity#*"
194    THEN "launchingActivity#<...>"
195    WHEN $name GLOB "updateUidStateUL*"
196    THEN "updateUidStateUL <...>"
197    WHEN $name GLOB "Wakelock(epolld*" OR $name GLOB "Wakelock(epollm*"
198    THEN _standardize_wakelock_slice_name($name)
199    WHEN $name GLOB "cpuhp*"
200    THEN "cpuhp<...>"
201    WHEN $name GLOB "atc*"
202    THEN "atc<...>"
203    WHEN $name GLOB "[0-9]* Alarm:*"
204    THEN "Alarm: <...>"
205    WHEN $name GLOB "[0-9]* Wifi:*"
206    THEN "Wifi: <...>"
207    WHEN $name GLOB "[0-9]* Sensor:*"
208    THEN "Sensor: <...>"
209    WHEN $name GLOB "*Cellular_data*"
210    THEN "Cellular_data <...>"
211    WHEN $name GLOB "*GET_ACTIVITY_INFO ModemActivityInfo*"
212    THEN "<...>GET_ACTIVITY_INFO ModemActivityInfo <...>"
213    WHEN $name GLOB "UNSOL_SIGNAL_STRENGTH*"
214    THEN "UNSOL_SIGNAL_STRENGTH <...>"
215    WHEN $name GLOB "*GET_CELL_INFO_LIST*"
216    THEN "<...> GET_CELL_INFO_LIST <...>"
217    WHEN $name GLOB "*VOICE_REGISTRATION_STATE*"
218    THEN "<...> VOICE_REGISTRATION_STATE <...>"
219    WHEN $name GLOB "*DATA_REGISTRATION_STATE*"
220    THEN "<...> DATA_REGISTRATION_STATE <...>"
221    -- E.g. InputConsumer processing on ClientState{e1d234a mUid=1234 mPid=1234 mSelfReportedDisplayId=0} (0xb000000000000000)
222    -- To InputConsumer processing on ClientState{<...>} (<...>)
223    WHEN $name GLOB "InputConsumer processing on ClientState*"
224    THEN "InputConsumer processing on ClientState<...>"
225    -- E.g. Transaction (ptz-fgd-1-LOCAL_MEDIA_REMOVE_DELETED_ITEMS_SYNC, 11910)
226    -- To: Transaction (ptz-fgd-1-LOCAL_MEDIA_REMOVE_DELETED_ITEMS_SYNC, <...>)
227    WHEN $name GLOB "Transaction (*, *)"
228    THEN CASE
229      WHEN $name GLOB "Transaction (Thread-*, *)"
230      THEN substr($name, 1, instr($name, "(")) || "Thread-<...>," || substr($name, instr($name, ","), length($name))
231      ELSE substr($name, 1, instr($name, ",") + 1) || "<...>)"
232    END
233    -- E.g. Lock contention on thread list lock (owner tid: 1665)
234    -- To: Lock contention on thread list lock <...>
235    WHEN $name GLOB "Lock contention on* (*"
236    THEN substr($name, 0, instr($name, "(")) || "<...>"
237    -- Top level handlers slices heuristics:
238    -- E.g. android.os.Handler: com.android.systemui.qs.external.TileServiceManager$1
239    -- To: Handler: com.android.systemui.qs.external.TileServiceManager
240    WHEN $name GLOB "*Handler: *$*"
241    THEN _remove_lambda_name(substr($name, instr($name, "Handler:")))
242    -- E.g. : android.view.ViewRootImpl$ViewRootHandler: com.android.systemui.someClass$enableMarquee$1
243    -- To: Handler: android.view.ViewRootImpl
244    WHEN $name GLOB "*.*.*: *$*"
245    THEN "Handler: " || _remove_lambda_name(substr($name, ": "))
246    -- E.g.: android.os.AsyncTask$InternalHandler: #1
247    -- To: Handler: android.os.AsyncTask
248    WHEN $name GLOB "*.*$*: #*"
249    THEN "Handler: " || _remove_lambda_name($name)
250    WHEN $name GLOB "deliverInputEvent*"
251    THEN "deliverInputEvent <...>"
252    WHEN lower($name) GLOB "*vsync*"
253    THEN _standardize_vsync_slice_name($name)
254    ELSE __intrinsic_strip_hex($name, 2)
255  END;
256