Closed Bug 740946 Opened 12 years ago Closed 12 years ago

Port Firefox's profiler to Thunderbird

Categories

(Thunderbird :: Installer, defect)

x86
All
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
Thunderbird 16.0

People

(Reporter: mconley, Assigned: mconley)

References

Details

(Whiteboard: [leave open])

Attachments

(3 files)

Benoit Gerard and a few other folks have been working on a kick-butt profiler for Gecko apps to diagnose UI jank / stickiness.

If we're serious about improving TB responsiveness, we might want to consider integrating this work.

The work is split into several parts:

1)  We need to include profiler.xpt in our package-manifest.in in order to get Thunderbird to start spewing profiling goodness
2)  For bonus points, we'd need to submit patches to the Profiler add-on to make getting profile dumps easy.  The Github repo for the add-on is at https://github.com/bgirard/Gecko-Profiler-Addon
3)  We could inject some new probe points that are TB specific

Thoughts?
Summary: Include profiler.xpt in package-manifest.in → Port Firefox's profiler to Thunderbird
Yea, that's exactly what needs to be done. Step 1 is trivial and step 3 is optional.

The real work is in Step 2. The profiler add-on used the Add-on SDK and the modules (tab, panel) are not compatible. We either need to port these modules or write a simple button/hotkey at a minimum to trigger a profile dump.
Whiteboard: [mentor=mconley][lang=js]
We're adding support for the remote debugging protocol. I imagine that Thunderbird will also support it. If that's the case then we wouldn't need thunderbird to run an extension and it could be controlled from Firefox like Fennec.
Assignee: nobody → mconley
Whiteboard: [mentor=mconley][lang=js]
I actually made some decent progress on this today - check out the pretty picture.
Here's a super early iteration of the add-on. It'll only be useful on a TB built with attachment 632819 [details] [diff] [review].

The add-on adds an item to the statusbar. Clicking on it will (eventually) open a content tab to the parser web app.

I say eventually, because there's a processing phase where the add-on prepares the profile, and for now, there's absolutely zero user-feedback that this is happening. So you just kinda have to trust that it'll open. I hope to fix that soon.

A few caveats:

* Stackwalking seems to be unstable in Linux, so it's currently disabled. Seems to work alright on Windows / OSX
* The add-on does not tear itself down correctly, so repeated enable/disable in the same session will populate your status bar with a ton of those "Dump Profile" items.
* The profiler cannot be enabled / disabled yet. It simply runs from the point where the add-on is enabled until shutdown.
(In reply to Mike Conley (:mconley) from comment #5)
> Here's a super early iteration of the add-on. It'll only be useful on a TB
> built with attachment 632819 [details] [diff] [review].

I vote that we just land that now. I don't see why we would wait.
Comment on attachment 632819 [details] [diff] [review]
Add profiler.xpt to package-manifest [checked-in]

Benoit:

Good point.

-Mike
Attachment #632819 - Flags: review?(mbanner)
Attachment #632819 - Flags: review?(mbanner) → review+
comm-central: https://hg.mozilla.org/comm-central/rev/abcc437cc1f7

Leaving open until I can get the appropriate changes to the addon merged.
Attachment #632819 - Attachment description: Add profiler.xpt to package-manifest → Add profiler.xpt to package-manifest [checked-in]
Whiteboard: [leave open]
Add-on changes merged in.

Folks, it looks like we got ourselves a profiler!

https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi

Instructions:

1) Install the add-on in a recent Daily. Two items should be added to your status bar - "Disabled", and "Dump Profile".
2) Click on "Disabled" to toggle the add-on to the "Enabled" mode.
3) Do things that cause performance issues.
4) Click on "Dump Profile". A content tab will open in the Cleopatra app, which you can use to drill down and see where things are slowing down.

Check out https://developer.mozilla.org/en/Performance/Profiling_with_the_Built-in_Profiler for more details.

For bonus points, enable stackwalking on OSX and Windows by compiling with the --enable-profiling flag.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 16.0
Also note that "Dump Profile" will not work unless the profiler is set to the "Enabled" mode.

"Dump Profile" will only show you the activity since the last time you "Enabled" it.
Blocks: 1106414
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: