Firefox/Goals/2010Q1/IO Reduction

From MozillaWiki
< Firefox‎ | Goals‎ | 2010Q1
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Reducing I/O operations on the main thread will remove potential points of hanging that users experience, providing a substantially better user experience to our users. Removing at least 50% of our current I/O operations (as of January 1, 2010) from the main thread.

  • Project Lead: sdwilsh
  • Project Members: Bjarne, mak, rflint, Unfocused

Status

MISSED. 42 - 43% of the IO has been removed from mozilla-central. Up to 23.4% is real close. See this table for more details

Goals

  • Reduce at least 50% of the I/O operations on the main thread (read, write, fsync, fstat) based on a certain set of criteria.

Non-Goals

  • Reduce the number of I/O operations that we do

Timeline / Milestones

Initial numbers from v1.2 of the criteria are:

  • write counts: 4362
  • read counts: 1636
  • fsync counts: 47
  • fstat counts: 1517
  • total count: 7562

Note: You will find 5803 writes in the log, however 1441 of them are due to PR_SetPollableEvent. There is a bug in the DTrace script that we haven't been able to figure out that attributes it to some file when it is actually writing to a named pipe or socket. We don't actually care about this write, so we've adjusted the total to reflect this.

Finishing numbers from v1.2 of the criteria are:

  • write counts: 1431
  • read counts: 1649
  • fsync counts: 19
  • fstat counts: 1268
  • total count: 4367

Note: You will find 2968 writes in the log, however 1537 of them are due to PR_SetPollableEvent. There is a bug in the DTrace script that we haven't been able to figure out that attributes it to some file when it is actually writing to a named pipe or socket. We don't actually care about this write, so we've adjusted the total to reflect this.

These are the bugs of interest:

Bug Owner Status reads writes fsyncs fstats I/O Responsible
bug 513074 - remove sync writes from current cache Bjarne landed 0 898 0 0 11.9%
bug 549767 - Write/flush cache metadata off main-thread Bjarne MISSED; needs a new patch 0 1220 0 0 16.1%
bug 536978 - Cookies should write asynchronously sdwilsh landed 0 1786 19 265 27.4%
bug 553489 - Make setAndLoadFaviconForPage completely async mak landed 9 92 9 8 1.6%
bug 513008 - Eliminate synchronous reads from cache michal.novotny MISSED; needs a new patch to finish up and get final review 554 0 0 0 7.3%
bug 541779 - Make site-specific zoom check asynchronous rflint landed 150 0 0 0 2.0%
bug 461199 - Make visitedness checks asynchronous sdwilsh landed; but not showing up in DTrace likely because it was hitting the SQLite cache before.  ?  ?  ?  ?  ?

Requirements

This work must be landed on mozilla-central by March 31, 2010.

Dependencies

None

Testing

Our normal automated testing should be sufficient here. Numbers of calls are generated by this DTrace script.

Related Projects

None