Firefox/Projects/Startup Time Improvements: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 6: Line 6:
'''Description:''' Investigate areas for improving startup time of the Mozilla platform, find & fix issues that help Fennec and WinCE.
'''Description:''' Investigate areas for improving startup time of the Mozilla platform, find & fix issues that help Fennec and WinCE.


'''Phase 1: Exploration''' 7/13 - 7/24, Achieve visibility into the performance-related problem areas during browser startup, and to use that visibility to create actionable bugs, creating a clear development path to move forward on.
;Bugs that affect startup are identified by "[ts]" in the whiteboard field.
 
'''Phase 2: Seek and Destroy''' 7/27 - 8/7, More research into causes of I/O usage, and evaluation of approaches for large-scale mitigation. Fix bugs in which a resolution path is already clear, and that would provide a human-noticeable win in Fennec or WinCe. For areas not immediately fixable, file bugs and ensure that the relevant people are aware of the problem, and work to get those bugs with potentially big wins prioritized.
 
= Bug visibility =
 
We've been using "[ts]" in the whiteboard field for our newly filed bugs as well as pre-existing.
* [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3A%5Bts%5D ts bugs].
* [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3A%5Bts%5D ts bugs].
;Meta bugs
* {{bug|459117}} Fennec performance meta bug
* {{bug|447581}} Startup meta bug
* {{bug|479078}} Startup research meta bug
* {{bug|7251}} very old startup meta bug


= Instrumentation =
= Instrumentation =


== Create an easily accessible timeline of the startup path (David, Vlad) ==
;Create an easily accessible timeline of the startup path (David, Vlad)
* '''Status''': in progress
* '''Status''': in progress
* '''Usage''': [https://wiki.mozilla.org/Firefox/Sprints/Startup_Time_Improvements/StartupPatchUsage#Quick_Start steps here]
* '''Usage''': [https://wiki.mozilla.org/Firefox/Sprints/Startup_Time_Improvements/StartupPatchUsage#Quick_Start steps here]
Line 32: Line 20:
** Example output: [http://people.mozilla.org/~dietrich/ddahl_sample_output.txt raw log]
** Example output: [http://people.mozilla.org/~dietrich/ddahl_sample_output.txt raw log]


== Mine the Ts DTrace viz/logs (Drew) ==
;Mine the Ts DTrace viz/logs (Drew)
* '''Status''': complete, moved on to filesystem operations below
* '''Status''': complete, moved on to filesystem operations below
* '''Results'''
* '''Results'''
Line 41: Line 29:
** I think these two bugs aren't worth pursuing.  As Gavin comments in them, the latency I noticed is due to unavoidable things like XBL attachment and flushing layout.  Moreover, they contribute very, very little to startup time.
** I think these two bugs aren't worth pursuing.  As Gavin comments in them, the latency I noticed is due to unavoidable things like XBL attachment and flushing layout.  Moreover, they contribute very, very little to startup time.


== Log and mine filesystem operations during startup (Ryan, Drew) ==
;Log and mine filesystem operations during startup (Ryan, Drew)
* '''Status''': in progress
* '''Status''': in progress
* '''Todo'''
* '''Todo'''
Line 57: Line 45:
** [[Firefox/Projects/Startup_Time_Improvements/IO_Scratchpad]]
** [[Firefox/Projects/Startup_Time_Improvements/IO_Scratchpad]]


= Static Analysis =
= Current Activity =


== Find dead code with JSHydra (David Dahl) ==
;Find dead code with JSHydra (David Dahl)
* '''Status''': in progress
* '''Status''': in progress
* '''Todo'''
* '''Todo'''
Line 68: Line 56:
= Testing =
= Testing =


== Dirty profile testing (Alice, David Dahl, Dietrich) ==
;Dirty profile testing (Alice, David Dahl, Dietrich)
* '''Status''': in progress
* '''Status''': partially complete
* '''Todo'''
* '''Todo'''
** Create various scenarios to measure
** Create various scenarios to measure
Line 76: Line 64:
** Roll-up reporting of results
** Roll-up reporting of results
* '''Results'''
* '''Results'''
** Builds marked "dirty" on the [http://tinderbox.mozilla.org/showbuilds.cgi?tree=MozillaTest test tree]
** Builds marked "dirty" on the [http://tinderbox.mozilla.org/showbuilds.cgi?tree=Firefox tree]


== JSHydra continuous testing ==
;Cold Startup Measurement (Alice, Drew)
* '''Status''': in progress
* '''Todo'''
** Talos patches for head/tail script support
** Talos head/tail scripts for cold startup for all platforms
*** disable fastload, OS-specific calls
** deploy to test tree
** deploy to mozilla-central
* '''Done'''
** determine simulated cold startup methods for all platforms
* '''Results'''
 
;JSHydra continuous testing
* '''Status''': not started
* '''Status''': not started
* '''Todo'''
* '''Todo'''
Line 86: Line 86:
*** dead code finder
*** dead code finder


= Miscellaneous Improvements =
= Needs Action =


Notes, other ideas to develop further, bugs to file, etc.
Notes, other ideas to develop further, bugs to file, etc.
Line 111: Line 111:
* sql query count measurement (find my bug for this)
* sql query count measurement (find my bug for this)


Notes:
Needs investigation:
* Hot vs. cold testing: running with fastload crippled/disabled
* .order files (webkit)
* Needs investigation: [https://bugzilla.mozilla.org/show_bug.cgi?id=279839#c29 string pool for jsxpcom]
* [https://bugzilla.mozilla.org/show_bug.cgi?id=279839#c29 string pool for jsxpcom]


= References =
= References =
;Meta bugs
* {{bug|459117}} Fennec performance meta bug
* {{bug|447581}} Startup meta bug
* {{bug|479078}} Startup research meta bug
* {{bug|7251}} very old startup meta bug


* Vlad's blog posts
* Vlad's blog posts
Confirmed users, Bureaucrats and Sysops emeriti
2,088

edits