Abysmal experience on politico.com will multiple tabs open |
||||||||||||
Issue descriptionChrome Version: 56.0.2924.87 (Official Build) (64-bit), also seen on Canary 58.0.3014.0 (Official Build) canary (64-bit) OS: OS X 10.11.6 What steps will reproduce the problem? (1) Visit Politico.com on a Mac Pro and a fast connection (2) While the page is loading (it takes 10-15 seconds to complete), Cmd-click on ~3 articles to load them in background tabs What is the expected result? The pages load in a reasonable amount of time, Chrome stays responsive, and the CPU use is low What happens instead? Multiple chrome processes use 80%+ CPU for an extended period of time--settling over time, but still staying at a high baseline. Scrolling any page janks horribly. Every so often the loading indicator on each tab starts spontaneously spinning, then settling, then spinning again. Basically, it's unusable. Trace: https://drive.google.com/open?id=0BzwdQMmIG4kqRzZPeGVOZHdrOTA The trace is from Chrome Canary with no other tabs open. When the trace starts, I reload the politico.com tab. Then while it's loading I open three other tabs, wait 10 seconds or so, switch to one of the opened tabs, and scroll. Glancing at the trace, there seems to be some weird stuff going on with networking.
,
Feb 22 2017
Hmm FrameHostMsg_ContextMenu is using 950ms on the browser *main* thread. That would definitely cause everything to go wonky --- chrome is only as fast as its browsermain can go.
,
Feb 24 2017
I think there's a couple things here: 1. There might be chrome side bugs here causing excessive CPU usage. Someone needs to dig into these traces to understand if there are bugs we need to fix. 2. Re: loading spinner UI, I filed issue 695714 to track considering changing how the spinner works. 3. We have a close to shipping intervention where we throttle background tabs to 1% CPU wall time. That should make this experience considerably better from a CPU perspective (#expensive-background-timer-throttling in about:flags). It will take the background tabs longer to load, but they shouldn't jank up your computer and the baseline when they settle should be low. There's some caveats the limit the efficancy of the v1 of this feature, but we have plans to work through those over time. altimin: Can you confirm that enabling the time-based task throttling mostly addresses the CPU usage issue? If it doesn't, I'd like to understand why.
,
Feb 24 2017
I wonder if the background renderers are getting backgrounded properly? As long as their priorities are correct, the OS should make sure they won't jank up the foreground tab (modulo browser-side funny business).
,
Feb 24 2017
There are a number of things going wrong here: 1. Heavy pages using a lot of CPU. 2. We do not throttle timers for first 10 seconds in the background. 3. We do not throttle loading tasks and there are a lot of them. So while budget-based timer throttling is going to help, it won't solve the problem completely. I have an approximate plan in my head about next steps here.
,
Feb 24 2017
I do notice that the browser-side cpu is pretty swamped just from all the requests coming in from the tabs. Kinuko and I were talking the other day about the need for proper prioritization of IPC etc, and maybe this is a strong example of why we need it.
,
Feb 25 2017
Re: c#4, OS-level renderer backgrounding is an experiment right now on macOS.
,
Feb 25 2017
,
Feb 27 2017
Interesting. I see the tabs sending really lots of resource loading requests (in addition to other requests), competing browser-side cpu and network resources fiercely with other tabs.
,
Mar 12 2017
Regarding the chromium side bugs, I have a few observations: 1. If you do the repro steps in the original post in safari, scrolling isn't janky at all. 2. It's not just politico. Go to https://www.google.com/search?q=morning+melatonin and open the first four links in a background tabs. The search page becomes pretty unscrollable. Again, there's not perceivable degradation of user experience in Safari for this case. I suspect the main reason that Safari stays responsive is that each background tab goes in its own process, whereas Chrome puts them all in the same process. If we're going to do that, then we need to invest in making it so that we do better CPU coordination between the tabs. Throttling background tabs to 1% is a good initial improvement there. Long-term, Global Resource Coordinator might be a better solution that keeps background tab loading fast without degrading foreground tabs. In the meantime, should we consider tweaking our process logic? Should this be higher than P3 given how bad the user experience is compared to at least one other browser and that opening tabs in the background isn't really a rare use case.
,
Mar 13 2017
Ignore my last comment. I was actually just seeing another instance of issue 698556. If run in an incognito window, the experience is reasonably close to Safari. If I run in incognito with ghostery enabled, it's awful (e.g. >10 second janks trying to scroll foreground tab).
,
Mar 13 2017
komoroske: I suggest you try your original repro steps in an incognito window. I'd guess one of your extensions is killing your perf. I filed issue 698556 to track that problem.
,
Mar 13 2017
,
Apr 25 2017
,
Apr 26 2017
,
May 9 2017
,
Sep 20 2017
,
May 8 2018
,
Jan 11
Available, but no owner or component? Please find a component, as no one will ever find this without one. |
||||||||||||
►
Sign in to add a comment |
||||||||||||
Comment 1 by benhenry@chromium.org
, Feb 22 2017