In the last few months we've been putting work into making the data which we collect from the Background Hang Reporter (BHR) more usable and actionable. We use BHR to measure the frequency and cause of browser hangs (when the main thread's event loop doesn't process events for 128ms or longer). The goal being to collect information which lets us improve Firefox's responsiveness by reducing the frequency of main thread hangs.
On the data collection side, the BHR stack walking code has been rewritten to take advantage of Gecko Profiler internals. This reduced code duplication, and enables us to take advantage of Gecko Profiler features like JS stack interleaving. In addition, the ping submission logic has been rewritten to perform less work on main thread, and submit hang information outside of the main ping. This let us began collecting much more data, including interleaved chrome-js/native stack frame information for all hangs, and information about the browser's state, such as pending input events. Platform support has also been expanded from win32 to include linux64, win64 and macOS. Doug Thayer has written a visualizer for the collected data called hangs.html (https://arewesmoothyet.com), based on the perf.html profiler viewer. This interface allows analysis of the change in frequency of specific hangs over time, lots of tools for filtering through hang information, as well as a profiler-like interface for drilling into specific hang stacks to determine what might be causing the problems. Doug is actively working on adding new features to the UI to improve filtering and make it easier to get good results from the data, but we're already finding and fixing important bugs. Some bugs which have been fixed include bug 1393597 where we discovered that a synchronous GC on an edge case was having more of a performance impact than we expected, and bug 1381465 where we observed and prioritized the fixing of main thread I/O in the content process. _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform