Closed Bug 810558 Opened 12 years ago Closed 8 years ago

Extract data from auto-submitted profiles

Categories

(Core :: Gecko Profiler, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: BenWa, Unassigned)

References

()

Details

We're hoping to start gather profiles automatically for start-up and ideally more in the future. Building tools to extract useful information would help. Here are questions this tool should ideally be able to answer: 1) What are interesting points in the profile collected? This is hard to fit an exact criteria. Right now I'm experimenting with a point in the profile that has two non trivial subtree. 2) How does a given function vary in the set of profiles? Does it take roughly the same duration or does it vary quite a bit? Which profiles in the set are attributed to these outliers. 3) How does 2 set of profiles differ? Say one set is collected on a high-end machine, one is collected a slow netbook. Which areas of the profiles vary the most? How does performance of specific code path vary (Basic vs. Accelerated Compositing on startup for example).
After a bit of hacking I'm already coming up with interesting results but I have many improvements yet to do. Here's a list of 'interesting' functions for start-up. Note that nothing is hard coded: CFRunLoopRunSpecific (in CoreFoundation) + 290 gfx::DrawThebesLayer Input::nsInputStreamPump::OnInputStreamReady JS::Evaluate(JSContext*, JS::Handle<JSObject*>, JS::CompileOptions, unsigned short const*, unsigned long, JS::Value*) (in XUL) + 154 js::RunScript js::RunScript(JSContext*, JS::Handle<JSScript*>, js::StackFrame*) (in XUL) + 206 mozilla::layers::ContainerLayerOGL::RenderLayer(int, nsIntPoint const&) (in XUL) + 1400 nsAppShell::Run() (in XUL) + 50 nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool, unsigned int) (in XUL) + 226 nsDocLoader::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (in XUL) + 477 nsDocumentOpenInfo::OnStopRequest(nsIRequest*, nsISupports*, tag_nsresult) (in XUL) + 90 nsRefreshDriver::Notify nsThread::ProcessNextEvent(bool, bool*) (in XUL) + 717 nsTimerImpl::Fire() (in XUL) + 448 nsViewManager::PaintWindow(nsIWidget*, nsIntRegion, unsigned int) (in XUL) + 156 nsXULDocument::EndUpdate(unsigned int) (in XUL) + 14 nsXULDocument::StartLayout() (in XUL) + 169 NS_ProcessNextEvent_P(nsIThread*, bool) (in XUL) + 48 NS_ProcessPendingEvents_P(nsIThread*, unsigned int) (in XUL) + 76 Paint::PresShell::Paint ssi_restoreHistoryPrecursor (resource:///modules/sessionstore/SessionStore.jsm:2891) ssi_restoreWindow (resource:///modules/sessionstore/SessionStore.jsm:2622) Startup::XRE_Main Timer::Fire XREMain::XRE_main(int, char**, nsXREAppData const*) (in XUL) + 269 XREMain::XRE_main(int, char**, nsXREAppData const*) (in XUL) + 455 It finds session store, js, paint and compositing right off the bat. I think nailing down 1) will give us a good primitive to solve 2) and 3).
Note that my work and a dataset of 10 mac startup profiles are posted: https://github.com/bgirard/SPSProcessor
This is an interesting experiment but I'm going to close this bug for now because we have no plans for automatic profile submission + processing at the moment.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.