Firefox/Goals/2010Q1/IO Reduction
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