summaryrefslogtreecommitdiffstats
path: root/mozglue/baseprofiler/build/profiling_categories.yaml
blob: 602974db68b34141a85adb59f8ee47273336a6e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Profiling categories
# ====================
# This file defines all profiling categories with their sub-categories. It is
# parsed by generate_profiling_categories.py at build time to create
# ProfilingCategoryList.h and profiling_categories.rs files.
#
# Profiling sub-categories are applied to each sampled stack to describe the
# type of workload that the CPU is busy with. Only one sub-category can be
# assigned so be mindful that these are non-overlapping. The active category is
# set by pushing a label to the profiling stack, or by the unwinder in cases
# such as JITs. A profile sample in arbitrary C++/Rust will typically be
# categorized based on the top of the label stack.
#
# Each category consists of a name and a set of attributes that are described below:
#
# name [required]
# ====
# Name of the profiling category. This will be used in the C++ enum fields (not
# by Rust).
#
# label [required]
# =====
# Label of the profiling category. This a more human readable string for the
# category. Label will be displayed in the Firefox Profiler front-end. But also
# this will be used as a Rust enum field (with non-alphanumeric characters
# removed) because it's more idiomatic for Rust enums than name fields (which
# are snake cased fields with all caps, which is not idiomatic to rust enum
# field).
#
# color [required]
# =====
# Color that this category will show up as in the Firefox Profiler front-end.
# The list of available color names for categories is:
# - transparent
# - blue
# - green
# - grey
# - lightblue
# - magenta
# - orange
# - purple
# - yellow
#
# subcategories [required]
# =============
# A list of sub-categories that belong to this category.
# There must be at least one sub-category for each category and there must be at
# least one category with the same name as the category to indicate the default
# sub-category. Each sub-category must have name and label attributes.
#
# name attribute should either be the same as the category (for default
# sub-category) or should start with parent category name + underscore
# (e.g. JS_Parsing).
#
# label attribute has the same purpose as parent category label attribute.
#
# For example:
# - name: JS
#   subcategories:
#     - name: JS
#       label: Other
#     - name: JS_Parsing
#       label: Parsing
#
# Note that the first sub-category has the same name with the category. This is
# the default sub-category. Also note the other sub-categories starting with the
# category name + underscore.
#

- name: IDLE
  label: Idle
  color: transparent
  subcategories:
    - name: IDLE
      label: Other

- name: OTHER
  label: Other
  color: grey
  subcategories:
    - name: OTHER
      label: Other
    - name: OTHER_PreferenceRead
      label: Preference Read
    - name: OTHER_Profiling
      label: Profiling

- name: TEST
  label: Test
  color: darkgray
  subcategories:
    - name: TEST
      label: Test

- name: LAYOUT
  label: Layout
  color: purple
  subcategories:
    - name: LAYOUT
      label: Other
    - name: LAYOUT_FrameConstruction
      label: Frame construction
    - name: LAYOUT_Reflow
      label: Reflow
    - name: LAYOUT_CSSParsing
      label: CSS parsing
    - name: LAYOUT_SelectorQuery
      label: Selector query
    - name: LAYOUT_StyleComputation
      label: Style computation
    - name: LAYOUT_Destroy
      label: Layout cleanup
    - name: LAYOUT_Printing
      label: Printing

- name: JS
  label: JavaScript
  color: yellow
  subcategories:
    - name: JS
      label: Other
    - name: JS_Parsing
      label: Parsing
    - name: JS_BaselineCompilation
      label: JIT Compile (baseline)
    - name: JS_IonCompilation
      label: JIT Compile (ion)
    - name: JS_Interpreter
      label: Interpreter
    - name: JS_BaselineInterpret
      label: JIT (baseline-interpreter)
    - name: JS_Baseline
      label: JIT (baseline)
    - name: JS_IonMonkey
      label: JIT (ion)
    - name: JS_Builtin
      label: Builtin API
    - name: JS_Wasm
      label: Wasm

- name: GCCC
  label: GC / CC
  color: orange
  subcategories:
    - name: GCCC
      label: Other
    - name: GCCC_MinorGC
      label: Minor GC
    - name: GCCC_MajorGC
      label: Major GC (Other)
    - name: GCCC_MajorGC_Mark
      label: Major GC (Mark)
    - name: GCCC_MajorGC_Sweep
      label: Major GC (Sweep)
    - name: GCCC_MajorGC_Compact
      label: Major GC (Compact)
    - name: GCCC_UnmarkGray
      label: Unmark Gray
    - name: GCCC_Barrier
      label: Barrier
    - name: GCCC_FreeSnowWhite
      label: CC (Free Snow White)
    - name: GCCC_BuildGraph
      label: CC (Build Graph)
    - name: GCCC_ScanRoots
      label: CC (Scan Roots)
    - name: GCCC_CollectWhite
      label: CC (Collect White)
    - name: GCCC_Finalize
      label: CC (Finalize)

- name: NETWORK
  label: Network
  color: lightblue
  subcategories:
    - name: NETWORK
      label: Other

- name: GRAPHICS
  label: Graphics
  color: green
  subcategories:
    - name: GRAPHICS
      label: Other
    - name: GRAPHICS_DisplayListBuilding
      label: DisplayList building
    - name: GRAPHICS_DisplayListMerging
      label: DisplayList merging
    - name: GRAPHICS_LayerBuilding
      label: Layer building
    - name: GRAPHICS_TileAllocation
      label: Tile allocation
    - name: GRAPHICS_WRDisplayList
      label: WebRender display list
    - name: GRAPHICS_Rasterization
      label: Rasterization
    - name: GRAPHICS_FlushingAsyncPaints
      label: Flushing async paints
    - name: GRAPHICS_ImageDecoding
      label: Image decoding

- name: DOM
  label: DOM
  color: blue
  subcategories:
    - name: DOM
      label: Other

- name: JAVA_ANDROID
  label: Android
  color: yellow
  subcategories:
    - name: JAVA_ANDROID
      label: Other

- name: JAVA_ANDROIDX
  label: AndroidX
  color: orange
  subcategories:
    - name: JAVA_ANDROIDX
      label: Other

- name: JAVA_LANGUAGE
  label: Java
  color: blue
  subcategories:
    - name: JAVA_LANGUAGE
      label: Other

- name: JAVA_MOZILLA
  label: Mozilla
  color: green
  subcategories:
    - name: JAVA_MOZILLA
      label: Other

- name: JAVA_KOTLIN
  label: Kotlin
  color: purple
  subcategories:
    - name: JAVA_KOTLIN
      label: Other

- name: JAVA_BLOCKED
  label: Blocked
  color: lightblue
  subcategories:
    - name: JAVA_BLOCKED
      label: Other

- name: IPC
  label: IPC
  color: lightgreen
  subcategories:
    - name: IPC
      label: Other

- name: MEDIA
  label: Media
  color: orange
  subcategories:
    - name: MEDIA
      label: Other
    - name: MEDIA_CUBEB
      label: Cubeb
    - name: MEDIA_PLAYBACK
      label: Playback
    - name: MEDIA_RT
      label: Real-time rendering

# We don't name this category ACCESSIBILITY
# because it's already defined as a macro.
- name: A11Y
  label: Accessibility
  color: brown
  subcategories:
    - name: A11Y
      label: Other

- name: PROFILER
  label: Profiler
  color: lightred
  subcategories:
    - name: PROFILER
      label: Other

- name: TIMER
  label: Timer
  color: grey
  subcategories:
    - name: TIMER
      label: Other

- name: REMOTE_PROTOCOL
  label: Remote-Protocol
  color: grey
  subcategories:
    - name: REMOTE_PROTOCOL
      label: Other