Performance Triage

< Performance
Revision as of 13:26, 4 December 2023 by Davehunt (talk | contribs) (Updated guidelines for new pending-needinfo value of performance impact project flag.)


Idea.png
If you have any feedback/suggestions/questions regarding the performance triage process, you can share them in #perf-triage, or reach out to Dave Hunt or Frank Doty.

Nomination

Bugzilla

To (re)nominate a bug for triage, set the Performance Impact flag in Bugzilla to ?

This can be found by clicking Show Advanced Fields followed by Set bug flags when entering a new bug:

Or by expanding the Tracking section when editing an existing bug:

GitHub

To nominate a bug for triage, add the Performance label to an issue. This can be done by filing an new issue with the "Performance issue" template:

Or by opening an existing issue on GitHub and selecting the label from the right-hand bar:

 

Currently, only the following GitHub repositories are supported:

Queries

Performance triage

Full Query
ID Summary Status
1771902 Compositor CSS animations are not paused in fully occluded windows NEW
1826576 CSS filter() with invert() and hue-rotate() results in sluggish scrolling on Wikipedia NEW
1925480 Fenix shouldn't use `nsToolkitProfileService` to identify a profile folder NEW
1931716 Browser Kept Eating up RAM to the max, stopping the specific process in the task manager fix the issue temporarily. UNCONFIRMED
1931717 [meta] High OOM rate and CC time in YouTube NEW
1939354 RAM too much UNCONFIRMED
1940667 30s of jank on parent-process doing something around getFixupURIInfo and ContentAreaDropListener.sys.mjs (resource://gre/modules/URIFixup.sys.mjs:278:18) NEW
1941716 On a fresh profile, Negative heap-unclassified on "My Bugs" query on b.m.o NEW
1942031 Bad canvas performance on this example (nokiadesignarchive.aalto.fi) NEW
1943419 Fluidd memory leak UNCONFIRMED
1943503 High CPU usage on Debian x64 bookworm (VMware player guest) UNCONFIRMED
1945665 airbnb.com - Attempting to enter a destination in the search by using the gboard causes the gboard to become unresponsive NEW
1946248 Too much time spent in gfxMacPlatformFontList::DeprecatedFamilyIsAvailable during startup NEW
1946913 Consume too much memory UNCONFIRMED
1950901 Testcase generating N=5K forms (using credential mgmt API?) takes 30s in parent-process and 50s in content process. Chrome takes 9s. NEW
1952632 very laggy performance scrolling on some very popular websites NEW
1955509 Constant CPU usage while idle on the Tiki.org website front page UNCONFIRMED
1957692 Testcase generating N=500 forms and submitting them takes 27s in both parent and content processes,and is 675x slower than Chrome (Part2 of bug 1950901) NEW
1958712 Testcase generating N <META> elements is 20x slower than Chrome and does weird stuff in Compositor and SceneBuilder (PAPZCTreeManager::Msg_UpdateZoomConstraints) NEW
1959837 openstreetmap iD editor - slow zooming NEW
1965718 Google Maps framedrops when I'm panning the map UNCONFIRMED
1967585 Excessive memory allocation when toolbar icons are updated (e.g., during downloads or extension changes) — sometimes triggers OOM killer UNCONFIRMED
1970029 Firefox 139.0.1 excessively high memory and CPU usage when loading simple pages and extensions UNCONFIRMED
1972941 file downloading is CPU-intensive NEW
1975272 Animated newtab background images consume CPU even when not in the foreground NEW

25 Total; 25 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Performance triage (pending-needinfo)

Full Query
ID Summary Status
1880287 tiktok.com - Live videos stop working after a few minutes, stuck loading NEW
1882916 Firefox consumes a lot of CPU and makes me Mac M2 hang for a good 15 seconds UNCONFIRMED
1883669 Memory Problem UNCONFIRMED
1891345 Enourmous RAM usage (60Gig) UNCONFIRMED
1929575 since update 115.17.0esr (64 bits) my computer freezes and firefox takes 100% of the memory UNCONFIRMED
1948186 paramountplus stream occasionally highly unresponsive NEW
1956931 High CPU usage after clicking buttons on at least one site UNCONFIRMED
1960195 Dual monitor (laptop / Monitor) browsing very slow refresh in second monitor UNCONFIRMED
1961523 Firefox constantly freezes UNCONFIRMED
1963933 Google search results in high CPU usage and spike in temps. Happens with most of the browsers but Firefox results in higher temps spikes and CPU usage UNCONFIRMED
1964744 high cpu memory youtube UNCONFIRMED
1968418 Closing a long-running twitch tab hangs browser for minute(s) (GC in recvConduitClosed of Conduit) NEW

12 Total; 12 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Recently opened bugs with performance keywords in the summary

Full Query
ID Summary Status
1976603 Unusual memory usage while minimized. UNCONFIRMED
1976615 There is no Ukrainian dictionary for the translator offline UNCONFIRMED
1976766 Calling `GPUDevice.destroy` while one of its buffers is being `GPUBuffer.mapAsync`'d causes a crash ASSIGNED
1976844 Show review prompt when the user has performed >45 searches. NEW
1976895 ChatGPT causes Firefox to freeze during long responses — high CPU usage on main thread (profile data included) UNCONFIRMED
1976902 GlobalDeclarationInstantiation step is slower than Chrome NEW
1976921 Implement GPU process on iOS NEW
1976926 Investigate behavior of Performance.mark with negative startTime NEW
1976964 Fenix: DoH performance degrades under high concurrent request load ASSIGNED
1977030 [WebGPU] Testcase creating N 0-effect blurs in webgpu has rapid increase in gpu memory/shared gpu memory, potentially leadng to OOM. Chrome handles it just fine NEW
1977046 Canvas demo at https://js1k.com/2018-coins/demo/3197 has become very slow again NEW
1977074 Translation is not supported on the site NEW
1977085 Modified demo at https://codepen.io/hendrysadrak/pen/rmNebZ is 10x slower in Firefox compared to Chrome NEW
1977086 Canvas demo at https://codepen.io/survivol/pen/OazJoZ becomes progressively slower with GPU-canvas. NEW
1977135 Testcase creating N empty shaders is 2.5x slower in Firefox compared to Chrome NEW
1977138 Testcase creating and immediately deleting Async XHR is 23x slower in Firefox compared to Chrome NEW
1977201 User fonts in Users folder, but not windows user font one, can cause GPU crashes with USER_LIMITED. ASSIGNED
1977224 High GPU usage when watching streams on Twitch and gaming UNCONFIRMED
1977673 PerfStats beyond the first 32 are not collected on Android/CI ASSIGNED
1977684 Request translations for Windows EoS Sync group 1 messages NEW
1977740 Add fetch count to in-memory script cache ASSIGNED
1977861 Stop leaking BGLs returned by GPUPipelineBase.getBindGroupLayout() ASSIGNED
1977918 Slow startup on macOS due to contention between nsLookAndFeel::EnsureInit + nsNativeThemeCocoa::nsNativeThemeCocoa and the "RegisterFonts" and "InitFontList" threads NEW
1977919 Investigate remaining small performance regression from bug #1972792 NEW
1977965 Add a "Search Image" content context menu item for performing visual searches ASSIGNED
1978086 Automatic translation not working when selecting a specific language UNCONFIRMED
1978107 WebGPU: Vulkan DMA presentation path is not tested in CI NEW
1978120 Adjust translations.offer_event probe for "expected" events NEW
1978121 Adjust translations.offer_event probe for "offer" events NEW
1978122 Fix Interaction data for translations.action to not count popups NEW
1978127 Update WebGPU CTS to new version 5b477670f53e5fefcf4bd829a2952013ef9d1953 from 2025-07-16 22:05:04 NEW
1978149 JetStream3: dotnet performance NEW
1978150 JetStream3: Kotlin-compose-wasm performance NEW
1978197 [webgpu] Demo at https://codepen.io/mootytootyfrooty/pen/ByNxqKB doe not work in Nightly ASSIGNED
1978199 Modified demo at https://codepen.io/mootytootyfrooty/pen/bNdoWXy is 2x slower in Firefox. NEW
1978200 [webgpu] Demo at https://codepen.io/zlatnaspirala/pen/VwNKMar does not work correctly in Firefox NEW
1978201 [webgpu] Demo at https://codepen.io/greggman/pen/BaeqMZZ does not work on Nightly NEW
1978218 [V-T] Testcase applying V-T to n empty divs gets highly superlinear. We are faster than Chrome though. NEW
1978219 Demo at https://codepen.io/mootytootyfrooty/pen/pvJRNBV using babylon.js is ~5x slower in Firefox NEW
1978221 webrender_compositor blocked in Firefox Release/ESR on Crostini (Pixel Slate) despite hardware support UNCONFIRMED
1978224 Testcase resizing canvas N times in a loop without allocating is 31x slower in Firefox, spending all the time in sweep/mark. ASSIGNED
1978309 WebRTC stream causes high 3D load on 2nd GPU in multi-monitor setup UNCONFIRMED
1978368 Add setting to Settings UI to fully disable translation functionality (`browser.translations.enable`) NEW
1978370 Add setting to Settings UI to fully disable translation functionality (`browser.translations.enable`) UNCONFIRMED
1978427 `PROCESS-CRASH`es in WebGPU CTS should force a CI failure NEW
1978445 Fix expected errors from prefs changing in Translations tests NEW
1978626 [composable toolbar] Memory leak in tab counter NEW
1978632 Add Telemetry to "Offer" to Translate toggle NEW
1978641 Update about:memory accounting for wasm GC objects ASSIGNED
1978851 Testcase applying a ctx.filter blur N times on canvas is 28x slower in Firefox compared to Chrome (followup to bug 1978498) NEW
1978919 Opening the home page is slow (Fairphone 3) UNCONFIRMED
1978929 Remove nsLayoutUtils::MIN_INTRINSIC_ISIZE NEW
1978950 Taskbar Tabs leak memory during image container retrieval. ASSIGNED

53 Total; 53 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Triage process

Introduction

The goal of performance triage is to identify the extent to which bugs impact the performance of our products, and to move these bugs towards an actionable state. The goal is not to diagnose or fix bugs during triage. We triage bugs that have been nominated for triage and bugs in the Core::Performance component that do not have the performance impact project flag set.

During triage we may do any/all of the following:

  • Request further information from the reporter (such as a profile)
  • Set the performance impact project flag
  • Add performance keywords
  • Move the bug to a more appropriate component

Who is responsible for triage?

Everyone is welcome to take part in triage. By default, everyone on the performance team is enrolled in triage rotation, but we also have participants from outside the team.

How do I schedule a triage meeting?

If you are on triage duty, you will receive an invitation as a reminder to schedule the triage meeting on the shared performance calendar with the nominated sheriffs invited at a time that works for them. The responsibility of scheduling the meeting falls to the lead sheriff. Once a triage meeting has been scheduled, it’s a good idea to remove the reminder event from the calendar to avoid confusion. It’s a good idea to use the shared calendar, as this increases the visibility of the performance triage and allows other members of the team to contribute or observe the process.

What if a sheriff is unavailable?

The rotation script is not perfect, and doesn’t know when people are on PTO or otherwise unavailable. If the lead sheriff is available, it is their responsibility to either schedule the triage with the remaining available sheriff or to identify a suitable substitute for the unavailable sheriff(s). If the lead sheriff is unavailable, this responsibility passes onto the remaining available sheriffs.

How do I run a triage meeting?

The following describes the triage process to follow during the meeting:

  1. Ask if others would prefer you to share your screen. This can be especially helpful for those new to triage.
  2. Open the first triage query to show bugs nominated for triage or in the Core::Performance component without the performance impact project flag set. The bugs are sorted from oldest to newest. For each bug in the list, follow these steps:
    • Bugs that look like tasks that were filed by members of the Performance team will generally need to be moved to the Core::Performance Engineering component.
    • For defects: Determine if the bug is reproducible and actionable. If not, add a needinfo for the reporter asking for more information, set the performance impact project flag to pending-needinfo, and then move onto the next bug. We have a template that you can modify as needed.
    • For all bugs (including enhancements):
  3. Open the second triage query to show bugs that are waiting further information to determine the performance impact. The bugs are sorted from oldest to newest. For each bug in the list, follow these steps:
    • If the performance impact project flag was set to pending-needinfo less than 2 weeks ago, move onto the next bug.
    • If the performance impact project flag was set to pending-needinfo more than 2 weeks ago but less than 2 months ago, consider adding a needinfo for either: another reporter of the issue, someone with access to the appropriate platform(s) to attempt to reproduce the issue, or a relevant subject matter expert.
    • If the performance impact project flag was set to pending-needinfo more than 2 months ago, close the bug as inactive. You can modify the inactive bug template as needed.
  4. If time permits, open the third triage query to show recently opened bugs with performance related keywords in the summary. If any of these look like performance bugs, they can either be triaged the same way as bugs in the initial query or they can be nominated for triage in a subsequent meeting.

What if things don't go as expected?

Don't panic! The triage process is not expected to be perfect, and can improve with your feedback. Maybe the result of the triage calculator doesn't feel right, or you find a scenario that's not covered in these guidelines. In this case we recommend that you bring it up in #perf-triage, or consider scheduling a short meeting with some triage leads (you can see some recent leads in the triage rotation). If in doubt, leave a comment on the bug with your thoughts and move on. There's a chance someone will respond, but if not the next performance triage sheriffs may have some other ideas.

How do I determine the performance impact project flag?

The performance impact project flag is used to indicate a bug’s relationship to the performance of our products. It can be applied to all bugs, and not only defects. The triage calculator should be used to help determine the most appropriate value for this flag. In addition to setting the performance impact project flag, make sure to use the “Copy Bugzilla Comment” button and paste this as a comment on the bug.

If you do not have enough information to set the performance impact project flag, open a needinfo request against an appropriate individual (such as a reporter), and set the performance impact project flag to pending-needinfo.

For more information about what this flag, and it's settings mean see this blog post.

How do I determine the performance keywords?

There are several performance related keywords, which can be helpful to understand how our performance issues are distributed, or whenever there’s a concerted effort to improve a particular aspect of our products. The triage calculator may recommend keywords to set, and by typing “perf:” in the keywords field in Bugzilla, you will see the available options. Select all that apply to the bug.

How do I determine the correct Bugzilla component?

Ideally we would only have bugs in the Core::Performance component that are the responsibility of the engineers in the performance team. For performance bugs to have the best chance of being fixed, it's important to assign them to the correct component. In some cases the correct component will be obvious from the bug summary, description, or steps to reproduce. In other cases, you may need to do a bit more work to identify the component. For example, if there's a profile associated with the bug, you could see where the majority of time is being spent using the category annotations.

How do I read a performance profile?

It's useful to be able to understand a profile generated by the Firefox Profiler, and hopefully someone in the triage meeting will be able to help. If you find an interesting profile, or just want to understand how to use them to analyse a performance problem, we encourage you to post a link to the profile (or bug) in #joy-of-profiling where someone will be happy to help. The profile may even be analysed during one of the regular "Joy of Profiling" open sessions that can be found on the Performance Office Hours calendar.

Triage calculator

The Performance Impact Calculator was developed to assist in identifying and applying the performance impact project flag and performance keywords consistently. If you have feedback or would like to suggest changes to this tool, please share these in the #perf-triage Matrix channel.

Triage rotation

The sheriffs are allocated on a weekly basis, which is published here. The rotation is generated by this script.

Templates

New bug

This template is included in the description for new bugs opened in the Core::Performance component. If a bug is opened in another component and then moved to Core::Performance, this template can be used as needed to request additional information from the reporter.

### Basic information

Steps to Reproduce:


Expected Results:


Actual Results:


---

### Performance recording (profile)

Profile URL:
(If this report is about slow performance or high CPU usage, please capture a performance profile by following the instructions at https://profiler.firefox.com/. Then upload the profile and insert the link here.)

#### System configuration:

OS version:
GPU model:
Number of cores: 
Amount of memory (RAM): 

### More information

Please consider attaching the following information after filing this bug, if relevant:

 - Screenshot / screen recording
 - Anonymized about:memory dump, for issues with memory usage
 - Troubleshooting information: Go to about:support, click "Copy text to clipboard", paste it to a file, save it, and attach the file here.

---

Thanks so much for your help.

Moved to Core::Performance

This bug was moved into the Performance component. Reporter, could you make sure the following information is on this bug?

 - For slowness or high CPU usage, capture a profile with http://profiler.firefox.com/ , upload it and share the link here.
 - For memory usage issues, capture a memory dump from about:memory and attach it to this bug.
 - Troubleshooting information: Go to about:support, click "Copy raw data to clipboard", paste it into a file, save it, and attach the file here.

Thank you.

No longer able to reproduce

This bug doesn’t seem to happen anymore in current versions of Firefox. Please reopen or file a new bug if you see it again.

No response from reporter

With no answer from the reporter, we don’t have enough data to reproduce and/or fix this issue. Please reopen or file a new bug with more information if you see it again.

Expected behaviour

This is expected behavior. Please reopen or file a new bug if you think otherwise.

Website issue

According to the investigation, this is a website issue. Please reopen or file a new bug if you think otherwise.