# 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