Closed
Bug 1107949
Opened 10 years ago
Closed 9 years ago
The framerate actor stops recording after a tab navigation in e10s
Categories
(DevTools :: Performance Tools (Profiler/Timeline), defect)
Tracking
(e10s+, firefox38 fixed)
RESOLVED
FIXED
Firefox 38
People
(Reporter: vporof, Assigned: jsantell)
References
Details
(Whiteboard: [e10s-m6])
Attachments
(1 file, 1 obsolete file)
7.77 KB,
patch
|
vporof
:
review+
|
Details | Diff | Splinter Review |
Only in e10s
Reporter | ||
Updated•10 years ago
|
Blocks: perf-tool-v2
Updated•10 years ago
|
Blocks: dte10s
tracking-e10s:
--- → +
Assignee | ||
Comment 1•10 years ago
|
||
I believe the cause of the inability to get more data on the front end is `FramerateActor._onRefreshDriverTick` not called after refresh
Updated•10 years ago
|
Whiteboard: [e10s-m6]
Assignee | ||
Comment 3•10 years ago
|
||
Looks like this is no longer an issue in e10s. I can run the perf++ tool, and click on links/navigate using URL bar and the perf tool keeps recording correctly. Please confirm, Victor.
Assignee: nobody → jsantell
Flags: needinfo?(vporof)
Reporter | ||
Comment 4•10 years ago
|
||
Nope, still doesn't work. Refreshing while recording stops the framerate graph.
Flags: needinfo?(vporof)
Comment 5•10 years ago
|
||
So, this is still a problem according to Victor. Jordan, is this still on your radar? It's one of our high priority bugs for e10s.
Flags: needinfo?(jsantell)
Assignee | ||
Comment 6•10 years ago
|
||
I was wrong -- Victor's right, still an issue. I think this is a platform issue, will work on a STR for chrome window and request animation frame and file a bug if this is the case
Flags: needinfo?(jsantell)
Assignee | ||
Comment 7•10 years ago
|
||
For non-e10s, we take the content window and get the corresponding top-level chrome browser window. In e10s there is no wrapper around the content window, so this kinda makes sense. What framerates do we intend while it's reloading? There's no content to exist until the window is recreated. Can attach anything to the `this._chromeWin` as a test and it gets cleared upon refreshing the page, for example. With e10s, I'm not sure what should be the intended result. We can restart the rAF on reload, and in the mean time, spit out 60 FPS? Thoughts?
Flags: needinfo?(vporof)
Flags: needinfo?(ejpbruel)
Reporter | ||
Comment 8•9 years ago
|
||
(In reply to Jordan Santell [:jsantell] [@jsantell] from comment #7) > > With e10s, I'm not sure what should be the intended result. We can restart > the rAF on reload, and in the mean time, spit out 60 FPS? Thoughts? Presumably the time in between the current page navigation end (when the content window stops being available) and the other page navigation start (when a new content window is available) is infinitesimally small. All we need is a content window, and since that is almost immediately available, so I wouldn't worry about doing anything magical in between. Just stop recording ticks for a brief time while we retrigger rAF.
Flags: needinfo?(vporof)
Reporter | ||
Updated•9 years ago
|
Blocks: enable-perf-tool
Assignee | ||
Comment 9•9 years ago
|
||
Woopwoop
Flags: needinfo?(ejpbruel)
Attachment #8561789 -
Flags: review?(vporof)
Assignee | ||
Comment 10•9 years ago
|
||
https://treeherder.mozilla.org/#/jobs?repo=try&revision=3f86b661fd8c
Reporter | ||
Comment 11•9 years ago
|
||
Comment on attachment 8561789 [details] [diff] [review] 1107949-framerate-e10s.patch Review of attachment 8561789 [details] [diff] [review]: ----------------------------------------------------------------- I'd like us to avoid the call watcher, and possibly remove the redundant _delta property. Test looks good! ::: toolkit/devtools/server/actors/framerate.js @@ +25,5 @@ > initialize: function(conn, tabActor) { > protocol.Actor.prototype.initialize.call(this, conn); > this.tabActor = tabActor; > + this._observer = new ContentObserver(this.tabActor); > + this._win = tabActor.window; s/_win/_contentWin/ to make this more obvious. @@ +30,3 @@ > this._onRefreshDriverTick = this._onRefreshDriverTick.bind(this); > + this._onGlobalCreated = this._onGlobalCreated.bind(this); > + on(this._observer, "global-created", this._onGlobalCreated); You can now use `on(this.tabActor, "window-ready", this._onGlobalCreated);` instead of the call watcher. We should deprecate it. @@ +118,5 @@ > > // Store the amount of time passed since the recording started. > + let currentTime = this._win.performance.now() + this._delta; > + // Store _lastTickTime so we can use this as a delta on a page refresh > + // to normalize times Nit: . after sentences. @@ +130,5 @@ > + * When the content window for the tab actor is created. > + */ > + _onGlobalCreated: function (win) { > + if (this._recording) { > + this._delta = this._lastTickTime; Instead of having a whole new _delta, why not simply change the _startTime? Same math happens in _onRefreshDriverTick.
Attachment #8561789 -
Flags: review?(vporof)
Assignee | ||
Comment 12•9 years ago
|
||
Removed content observer, modify start time via elapsed time on page reload
Attachment #8561789 -
Attachment is obsolete: true
Attachment #8562933 -
Flags: review?(vporof)
Reporter | ||
Updated•9 years ago
|
Attachment #8562933 -
Flags: review?(vporof) → review+
Comment 13•9 years ago
|
||
Will this fix allow us to mark the bug as resolved? Thanks for your work on this Jordan. Great job!
Reporter | ||
Comment 15•9 years ago
|
||
https://hg.mozilla.org/integration/fx-team/rev/bba3baa6b36e
Keywords: checkin-needed
Whiteboard: [e10s-m6] → [e10s-m6][fixed-in-fx-team]
Reporter | ||
Comment 16•9 years ago
|
||
Merge: https://treeherder.mozilla.org/#/jobs?repo=gum&revision=08329c29ef68
Comment 17•9 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/bba3baa6b36e
Status: NEW → RESOLVED
Closed: 9 years ago
status-firefox38:
--- → fixed
Flags: in-testsuite+
Resolution: --- → FIXED
Whiteboard: [e10s-m6][fixed-in-fx-team] → [e10s-m6]
Target Milestone: --- → Firefox 38
Updated•6 years ago
|
Product: Firefox → DevTools
You need to log in
before you can comment on or make changes to this bug.
Description
•