Closed Bug 1184763 Opened 10 years ago Closed 9 years ago

tp5 with e10s enabled spends time in 'imgRequestProxy::StartDecoding()'

Categories

(Core :: Graphics: ImageLib, defect)

39 Branch
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
e10s + ---

People

(Reporter: BenWa, Assigned: mrbkap)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

The next issue that stands out from the tp5 regressions when you enabled e10s (bug 1174776) is that we're now spending time in 'imgRequestProxy::StartDecoding()' where we don't really spend any time during non-e10s tp5. Let's find out why that is.
Summary: tp5 with e10s enabled spents time in 'imgRequestProxy::StartDecoding()' → tp5 with e10s enabled spends time in 'imgRequestProxy::StartDecoding()'
I'll start looking. In the mean time :seth does anything off the top of your head explain this? Why would none e10s tp5 not hit 'StartDecoding'?
Flags: needinfo?(seth)
The e10s profile looks like it's calling StartDecoding from nsImageLoadingContent::OnLoadComplete. The things in there that might be different on e10s are: shell->IsVisible() shell->IsPaintingSuppressed() shell->AssumeAllImagesVisible()
Looks like nsImageLoadingContent::OnLoadComplete fires in both places but only e10s is hitting 'nsImageLoadingContent::Notify(imgIRequest*, int, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const*)'.
I think nsImageLoadingContent::Notify is the only caller of nsImageLoadingContent::OnLoadComplete, so probably just an artifact of the profile.
Well both profiles seem to spend time under imgRequestProxy::RemoveFromLoadGroup(bool). So it looks like a bit of time under 'nsImageLoadingContent::OnLoadComplete' is normal before e10s.
I confirmed that the Optimize behavior is the same on mac with and without e10s. There's just something that's causing the XCB calls to take longer under e10s. It's likely that's we're hitting some kind of contention with the windowing server like we've on other platforms. It would be good to explain where this new contention is coming from. This problem is likely Linux specific.
Flags: needinfo?(seth)
Let's have a look at what happens with XRender disabled: before e10s: https://treeherder.mozilla.org/#/jobs?repo=try&revision=86ccfb7dc7af after e10s + cc fixes: https://treeherder.mozilla.org/#/jobs?repo=try&revision=0723b0255ea4
Yea, this problem goes away with XRender disabed (but we're still left with a regression).
More (all of the \o/!) try pushes to understand the issue better: without e10s with xrender without throbber: https://treeherder.mozilla.org/#/jobs?repo=try&revision=8e23115d4ab0 without e10s without xrender without throbber: https://treeherder.mozilla.org/#/jobs?repo=try&revision=a1e65c16ef11 with e10s without xrender without throbber: https://treeherder.mozilla.org/#/jobs?repo=try&revision=87dedb31301c with e10s with xrender without throbber: https://treeherder.mozilla.org/#/jobs?repo=try&revision=25378a68a246
Blocks: e10s-perf
tracking-e10s: --- → +
I'm not sure that's there anything we really want to do here. We're just hitting contention and it's not likely to be cause by the Optimize call itself but by us requesting X to do more work elsewhere leading to this added contention.
We noticed that the imagelib cache is busted with e10s (bug 1217571). I'm not 100% familiar with our image decoding infrastructure, but it sounds like fixing the cache might result in us decoding less. So let's fix the imagelib cache thing and see if this goes away.
Assignee: nobody → mrbkap
Depends on: 1217571
The imagelib cache bug is now fixed in Nightly. Probably worth reprofiling at this point.
fixed by fixing the image cache
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.