Performance/Status Meetings/2008-January-16

From MozillaWiki
Jump to: navigation, search

« Back to Status Meetings

Gecko 1.9 Performance and Leaks Meeting Details

  • Wednesdays - Firefox 3 - 10:00am Pacific, 1:00pm Eastern
  • Script Conference Room, Building S, Mountain View
  • 650-903-0800 or 650-215-1282 x91 Conf# 217 (US/INTL)
  • 1-800-707-2533 (pin 369) Conf# 217 (US)
  • #perf for backchannel


  • Lots of leaks with extensions.
    • Many look like shut-down leaks. Would still be good to get these fixed so that we know for sure that they are shut-down leaks, and to make it easier to find other leaks. Have been giving these P3 priority.
    • Some do not look like shut-down leaks, have been marking these P1 or P2.
    • Will test which cause leaks that grow over time and make sure these are given top priority.
  • Tomcats testing procedure documented here: [1] and leak testing plan here [2]
  • Peterv has a patch to fix bug in cycle collector that causes many random crashes bug 407034, and a patch to fix one source of hidden-window-leaks which is likely source of many extension leaks bug 412491.
  • More progress on making DEBUG_CC more useful by dbaron bug 410116. Seems mostly fixed.
  • We need better tools in non-debug builds that extension authors can use for leak testing. Leak gauge should already work?

Action Items

  • AI:sicking Look into enabling trace-refcount, without the tracing part in nightlies.
  • AI:cbarrett Look into OS leaks on Mac.
  • AI:dbaron Make assertions fatal on new windows leak box.
  • AI:sicking Test leaked handles on windows manually using purify.
  • AI:sayrer Run leak buster while looking for trace-malloc leaks. [didn't get this done--sayrer]
  • AI:sicking to go through and prioritize leak bugs


  • Alix wonders about areas where we improved FF2->FF3. We want this for documentation purposes. Email alix with any things you know we have improved (
    • For features page on main website
    • For press reviewers' guide
    • Needs concrete examples of speedups (pages, percentages, etc.)
    • Will wait until b3 to have concrete numbers
    • Concrete details: work that's happened, benchmarks that we're using, and what we expect in real-world usage
  • JPEG/image speedups
  • Txul platform differences according to mac mini machines
    • mac: slowest on 1.8, slower still on 1.9 (30% regression) Looks even or better than branch
    • windows: fastest on 1.8, now in second place (30% regression) -- improving, still slower
    • linux: middle on 1.8, now fastest on 1.9 (30% improvement)
  • massive Ts regression in 2006
    • Ts analysis: bug 406810
    • Related to thread manager landing
    • Darin thinks it might be excessive painting.
  • Profile Guided Optimization
    • WPO turned on for windows (bug 361343) -- nice performance win on XP
    • Spidermonkey seems to respond well to PGO under GCC (bug 410994)
    • sayrer has entire browser building with -fprofile-generate on Linux. no results yet.
    • dbaron: shipped fx 1.0 with PGO on linux as well, was a 10% perf win... but compiler upgrade + build system breakage stopped us. We need to restart this on linux (and see about OSX).
    • -GL breaks some things on win32
  • On radar (unowned stuff that people have mentioned have mentioned we should look at at some point)
    • Theme optimization
    • roc's scrollbar issues
    • startup performance (fastload perf, loading libXUL and other files, etc.) (unowned)
    • more work to speed up onSecurityChange, but further work will require SSL work and reducing the number of notifications
    • XPConnect accessor speed (bug 412531) (request for priority+owner by dietrich)

  • Start/Stop Shark from JS (bug 411365 Patch)
    • Gets really clean profiles.
    • Install newest CHUD
    • Start Shark App.
    • Good setting for brief events is config->advanced 20us sample rate
    • Put shark in remote mode
    • Example from bug 412396 test:
 <title>Test JPEG Rendering Time - (Hacked from scragz' test)</title>
 <script type="text/javascript">
 startShark(); // Start sampling
 startDate = new Date();
 startTime = startDate.getTime() / 1000;
 window.onload = function () {
   var ignoreMe = document.body.offsetWidth;
   var endTime = new Date();
 function calceRenderingTime() {
   stopShark(); // Stop sampling 
   endDate = new Date();
   endTime = endDate.getTime() / 1000;
   alert(endTime - startTime);
 <body onload="calceRenderingTime();">

Action Items

  • make faster


  • bug 407459 -- Hook up jemalloc to our build
    • ported to windows, mac and linux. integrated to build system on mac and linux. windows work continuing. Hope to have numbers by end of the week.
  • bug 403830 -- Content arena
  • Other bugs (should have perf and footprint keywords)
    • bug 403354 -- Get rid of nsCStringArray ParseString usage (maybe fixed?)
    • bug 407442 -- nsEventListenerManager allocates a lot [patch]
    • bug 408113 -- JS reallocate context->stackPool arenas way too often [patch]
    • bug 408301 -- XPConnect wrappers w/o XPConnect proto don't share JS scopes with their protos. [patch]
    • bug 410250 -- nsID/nsJSID stupid mallocs [patch]
    • bug 410357 -- use nsAutoTArray for nsCSSDeclaration::mOrder [patch]
    • bug 410392 -- stack allocate gfx objects [patch, needs work]
    • bug 408921 -- Arenas size+header are too big for size classification

Action Items

  • fix things