Closed Bug 1436423 Opened 3 years ago Closed 3 years ago

The SchedulePressure limit is too high to help users with slow systems

Categories

(Firefox :: General, enhancement, P3)

57 Branch
enhancement

Tracking

()

RESOLVED FIXED
Firefox 60
Tracking Status
firefox60 --- fixed

People

(Reporter: jaws, Assigned: jaws)

Details

Attachments

(2 files)

We had feedback from users (https://bugzilla.mozilla.org/show_bug.cgi?id=1406414#c40) that our SVG throbbers were slowing down their machine. As a result, we implemented a SchedulePressure monitor that would fallback to an APNG version of our throbber if there was a lot of contention for CPU time (idleCallbacks taking too long to timeout).

We initially defaulted this timeout to 1 second. Our Telemetry data shows that the 95th percentile of idle callbacks is 63ms. Jakob Nielsen has reported that 100ms is about the limit for users feeling that the system is reacting instantaneously (https://www.nngroup.com/articles/response-times-3-important-limits/).

We could drop our limit from 1s to 100ms without this switch happening too often for users, and only coming in to play when user are opening multiple tabs very quickly or are on slow single-core machines.
Before changing this to 100ms I decided to run some tests to see how this would affect load times. I loaded http://www.deelay.me/ in 80 tabs. Repeated it 10 times, then removed the highest and lowest time, and calculated the average.

The number on the left is the value of the timeout amount:
50ms = average time to load is: 4109.7ms
100ms = average time to load is: 4113.5ms
1000ms = average time to load is: 3926.625ms
disabled = average time to load is: 4044.875ms

There was no discernible difference between loading times, but the APNG throbber feels a lot jankier due to the dropped frames causing a jittered animation.

Therefore, I'm going to close this bug as WONTFIX.

I'll attach the script I used to run the tests.
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
Reopening per https://bugzilla.mozilla.org/show_bug.cgi?id=1406414#c48
Status: RESOLVED → REOPENED
Resolution: WONTFIX → ---
Status: REOPENED → ASSIGNED
Priority: -- → P3
Comment on attachment 8956169 [details]
Bug 1436423 - Reduce the schedule pressure limit closer to the values that users are reporting.

https://reviewboard.mozilla.org/r/225086/#review231110

Let's put the spaghetti in the machine. Thanks, jaws!
Attachment #8956169 - Flags: review?(mconley) → review+
Pushed by jwein@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/36c84344de23
Reduce the schedule pressure limit closer to the values that users are reporting. r=mconley
https://hg.mozilla.org/mozilla-central/rev/36c84344de23
Status: ASSIGNED → RESOLVED
Closed: 3 years ago3 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 60
Hi people , Might be in the minority but think am affected by this.
So help
This is what tried so far, new profile,
browser.tabs.hideThrobber = true
browser.tabs.30FpsThrobber = true
but what fixed it to an extent was in addition to the above two was
browser.schedulePressure.timeoutM setting it to 150-200ms sped up the content loading time for me significantly no more lags or delay \o/,
went through your comments in the other bug and SCHEDULE is not there in FX61
Wanted to post the findings here so you could look at it
how can it be done?

Side note - can the animation of the Throbber be disabled some how? like a hidden pref so users do not break their install by mistake. That would help a lot.

If you need any more info ask.

win10/macOS beta
Flags: needinfo?(jaws)
Got it working with FX60 beta 11 just now

maybe this helps you.
Default settings with one content process.

FX_SCHEDULE_PRESSURE_IDLE_SAMPLE_MS
1346 samples, average = 93.5, sum = 125859

   0 |  0  0%
   1 |  2  0%
   3 |  1  0%
   5 |  8  1%
   8 |  1  0%
  13 |#  28  2%
  22 |######  132  10%
  37 |#############  303  23%
  62 |#########################  587  44%
 103 |#########  214  16%
 171 |##  40  3%
 284 |#  17  1%
 472 |  8  1%
 785 |  1  0%
2172 |  3  0%
3613 |  1  0%
6011 |  0  0%
Another with all defaults

FX_SCHEDULE_PRESSURE_IDLE_SAMPLE_MS
1265 samples, average = 101, sum = 127755

    0 |  0  0%
    1 |  1  0%
    2 |  1  0%
    3 |  1  0%
    8 |  1  0%
   13 |  5  0%
   22 |#  39  3%
   37 |########  226  18%
   62 |#########################  716  57%
  103 |########  217  17%
  171 |#  35  3%
  284 |  13  1%
  472 |  4  0%
  785 |  3  0%
 1306 |  1  0%
 2172 |  1  0%
10000 |  1  0%
Thanks for your details Emilio, we're going to try dropping the frame rate of this animation which should help. This work will be done in bug 1453701.
Flags: needinfo?(jaws)
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #12)
> Thanks for your details Emilio, we're going to try dropping the frame rate
> of this animation which should help. This work will be done in bug 1453701.

Thanks
> Side note - can the animation of the Throbber be disabled some how? like a
> hidden pref so users do not break their install by mistake. That would help
> a lot.
Flags: needinfo?(jaws)
browser.tabs.hideThrobber already does this, but only on Nightly builds. Did this not work for you? Note you may need to restart the browser after changing this pref.
Flags: needinfo?(jaws)
(In reply to Jared Wein [:jaws] (please needinfo? me) from comment #15)
> browser.tabs.hideThrobber already does this, but only on Nightly builds. Did
> this not work for you? Note you may need to restart the browser after
> changing this pref.

no still showing the sliding balls
Flags: needinfo?(jaws)
on windows and linux
Never-mind Got it working or hiding
now its so smooth except no indicators of loading webpages is finished
(In reply to Emilio from comment #18)
> Never-mind Got it working or hiding
> now its so smooth except no indicators of loading webpages is finished

Please re-enable it now and try testing with the browser.tabs.20FpsThrobber pref set to true or with the browser.tabs.30FpsThrobber pref set to true, as either of those prefs should make a big difference compared to what we ship by default right now.
Flags: needinfo?(jaws)
You need to log in before you can comment on or make changes to this bug.