All About Performance

and other stuff by Taras Glek

Snappy, Jan 5

I expected to a slow week, but there was a surprising amount of progress. I  take this as further evidence that having managers  go on vacation does wonders to engineer productivity :)

Interactivity with lots of tabs

We spent a lot of time pondering how to approach browser sluggishness in light of having tons of tabs open. On one hand people should understand, that one can’t expect the browser perform the same whether 1 tab is active or infinity. On the other hand we should do more to a) make the browser punish background tab hogs and b) communicate hogs to the user.

For now we will look at throttling background setTimeouts better (bug 715376715378, 715380), XMLHttpRequest loops, etc more aggressively. We also plan to make more use of interactive state so Firefox can suspend non-critical tasks (bug 712478).

Occasionally the cycle collector misbehaves, Andrew will look into not running cycle collection frequently when it is slow: bug 710496. Olli has been fixing many of the cycle-collection extremes, I don’t have bug #s for that, but apparently the improvements are dramatic.

Super-Slow Startups

Thanks to telemetry we now know that some users experience tragic startup speeds ranging from 30seconds to 34hours (bug 701872). Our network cache is to blame for some of these (bug 707436). Another theory is that an unfortunate turn of events causes us to start loading webpages before the UI is shown (bug 715402).

Vlad will post some of his analysis and interested people can help us with telemetry forensics.

Profiling

Being able to profile interactivity bugs is an important key to making the browser snappier. Large parts of Benoit’s interactivity profiler have landed (bug 713227). Using this extension on nightly win/mac should give you an idea of what it will look like when completed.

We make heavy use of compiler optimizations. Unfortunately one of them is to omit the stack pointer. Ehsan has setup a developer-friendly profiling branch.

Vlad is making progress on non-destructive chromehang(bug 712109). Traditionally we could not do this, but with a combination of telemetry + cycling Ehsan’s shiny new profiling branch on nightly channel… we’ll be in developer heaven.

Responsiveness testing

Peptest should be landing on try soon, Aki is wrapping stuff up. This should enable us to catch responsiveness regressions on our infrastructure.

Smooth Scrolling

Jared is almost done fixing tests to land smooth scrolling to gather feedback and move on to fancy physics (bug 710372).

Other ongoing projects with nothing specific to link to: Vlad’s slow-sql telemetry, Rafael’s quest to close sql connections so we can exit(0), QA browser-cache-effectiveness comparisons.

Comments