Javascript:SpiderMonkey:ProjectGenerationGarbageCollection: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Endgame schedule: Add "Current Estimated Date" column)
Line 17: Line 17:
* Burndown of rooting hazards and unsafe references: https://people.mozilla.com/~sfink/analysis
* Burndown of rooting hazards and unsafe references: https://people.mozilla.com/~sfink/analysis
* Burndown of bugs blocking Exact Rooting: [https://metrics.mozilla.com/bugzilla-analysis/Dashboard-FinalBurndown.html#esfilter=%257B%22or%22%3A%255B%0A%09%257B%22term%22%3A%257B%22bug_id%22%3A753203%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A745742%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A773686%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A789551%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A791022%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A906940%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A813244%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A848151%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A831379%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A868799%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A877658%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A884617%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898220%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898606%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A791062%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A834909%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A831409%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898554%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A901731%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898970%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A864785%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A868483%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A877699%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898815%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900144%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A899251%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A899251%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900998%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898608%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900713%257D%257D%0A%255D%257D&forTitle=Exact+Rooting&dueDate=2013-10-22&sampleMin=2013-08-01 https://metrics.mozilla.com/...]
* Burndown of bugs blocking Exact Rooting: [https://metrics.mozilla.com/bugzilla-analysis/Dashboard-FinalBurndown.html#esfilter=%257B%22or%22%3A%255B%0A%09%257B%22term%22%3A%257B%22bug_id%22%3A753203%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A745742%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A773686%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A789551%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A791022%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A906940%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A813244%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A848151%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A831379%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A868799%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A877658%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A884617%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898220%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898606%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A791062%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A834909%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A831409%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898554%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A901731%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898970%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A864785%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A868483%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A877699%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898815%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900144%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A899251%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A899251%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900998%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A898608%257D%257D,%0A%09%257B%22term%22%3A%257B%22blocked_by%22%3A900713%257D%257D%0A%255D%257D&forTitle=Exact+Rooting&dueDate=2013-10-22&sampleMin=2013-08-01 https://metrics.mozilla.com/...]
* Burndown of bugs blocking GGC: TBD


{| class="wikitable"
{| class="wikitable"
! Milestone
! Milestone
! Bug
! Bug
! Estimated Date
! Old Estimated Date
! Current Estimated Date
! Actual Date
! Actual Date
! Nightly Version
! Nightly Version
|-
| ...
|
|
|
|
|-
|-
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 26 (B2G 1.2) is uplifted to Aurora]]
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 26 (B2G 1.2) is uplifted to Aurora]]
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" | 2013-09-16
| style="background:#def;" | 2013-09-16
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
Line 35: Line 42:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898608 898608]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898608 898608]
| 2013-09-23
| 2013-09-23
| 2013-10-02
|  
|  
| 27
| 27
Line 41: Line 49:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909]
| 2013-09-25
| 2013-09-25
| 2013-10-03
|  
|  
| 27
| 27
Line 47: Line 56:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898606 898606]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898606 898606]
| 2013-10-18
| 2013-10-18
| 2013-10-07
|  
|  
| 27
| 27
Line 53: Line 63:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909]
| 2013-10-22
| 2013-10-22
| 2013-10-08
|  
|  
| 27
| 27
Line 59: Line 70:
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" | 2013-10-28
| style="background:#def;" | 2013-10-28
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
Line 65: Line 77:
|  
|  
|  
|  
|
|
|
| 28
| 28
Line 71: Line 84:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=877471 877471]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=877471 877471]
| 2013-11-__
| 2013-11-__
| 2013-10-__
|  
|  
| 28
| 28
Line 77: Line 91:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=875863 875863]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=875863 875863]
| 2013-11-__
| 2013-11-__
|
|  
|  
| 28
| 28
Line 83: Line 98:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558]
| 2013-11-__
| 2013-11-__
|
|  
|  
| 28
| 28
Line 89: Line 105:
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558]
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558]
| 2013-11-__
| 2013-11-__
|
|  
|  
| 28
| 28
|-
|-
| ...
| ...
|
|  
|  
|  
|  
Line 101: Line 119:
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" | 2013-12-09
| style="background:#def;" | 2013-12-09
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
|-
|-
| ...
| ...
|
|  
|  
|  
|  
Line 113: Line 133:
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" | 2014-01-20
| style="background:#def;" | 2014-01-20
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
| style="background:#def;" |
|-
|-
| ...
| ...
|
|  
|  
|  
|  

Revision as of 06:36, 30 August 2013

Wiki conversion of original Google Document: https://docs.google.com/a/jamsni.com/document/d/1-GZ8F0ZabvdpCnRQaecId0yuu4QFYr5pAvnRC_KFchc/edit

Objective

Implement Generational Garbage collection in Spider Monkey. <Some goal based off V8 performance delta % on Earley Boyer benchmark>

Accountable: Naveed
Responsible: Terrence, Steve, Jon, Nicholas, evilpie and Ms2ger
Consulted: bhackett billm
Informed: Product Marketing

Tracking Bug: [meta] Implement generational garbage collection - bug 619558

Milestones

Endgame schedule

Milestone Bug Old Estimated Date Current Estimated Date Actual Date Nightly Version
...
Nightly 26 (B2G 1.2) is uplifted to Aurora 2013-09-16
All unsafe references found by static analysis have been fixed 898608 2013-09-23 2013-10-02 27
Static analysis of unsafe references is unhidden on TBPL 834909 2013-09-25 2013-10-03 27
All rooting hazards found by static analysis have been fixed 898606 2013-10-18 2013-10-07 27
Static analysis of rooting hazards is unhidden on TBPL 834909 2013-10-22 2013-10-08 27
Nightly 27 is uplifted to Aurora 2013-10-28
... 28
All GGC crashes found by fuzzers have been fixed 877471 2013-11-__ 2013-10-__ 28
AWFY with GGC >= AWFY without GGC 875863 2013-11-__ 28
GGC is enabled for desktop and Android 619558 2013-11-__ 28
GGC is enabled for B2G 1.3 619558 2013-11-__ 28
... 28
Nightly 28 (B2G 1.3) is uplifted to Aurora 2013-12-09
... 29
Nightly 29 is uplifted to Aurora 2014-01-20
... 30

Original schedule

Milestone Task Deliverable Assigned Estimated Weeks Expected Date Actual Date
1 Rooting analysis in the shell (x64) green on mozilla-inbound sfink, jonco, evilpie, Ms2ger 2 3/7/2013 3/2/2013
2 Rooting analysis in the shell (arm) green on mozilla-inbound sfink 2 pending
3 Exactly rooted shell (x64) green on mozilla-inbound sfink, jonco, evilpie, Ms2ger 2 3/14/2013 done?
4 Exactly rooted shell (arm) green on mozilla-inbound sfink 2 pending
4.1 Exactly rooted js/src green on mozilla-inbound jonco 3 5/9/2013 in progress
5 GGC no-jit shell only build on TBPL (x64) green on mozilla-inbound terrence 6 2/21/2013 4/7/2013
6 GGC no-jit shell only build on TBPL (arm) green on mozilla-inbound sfink, terrence 2 pending
7 JIT support (x64) (Bug 706885) TBPL build using JITs and Ion+Baseline+GGC displayed on AWFY bhacket 8 3/15/2013 4/7/2013
8 JIT support (arm) TBPL build using JITs and Ion+Baseline+GGC displayed on AWFY bhacket 2 pending
9 Optimized GGC in shell (x64 + arm) Ion+GGC faster than Ion-GGC on AWFY bhacket 12 6/1/2013 not started
10 Static rooting analysis - browser available via mrgiggles and URL sfink, bhacket 12 6/1/2013 done
10.1 Static analysis on TBPL - browser visible on tbpl sfink not started
10.2 Static rooting analysis - b2g available via mrgiggles and URL sfink pending
10.3 Static analysis on TBPL - b2g visible on tbpl sfink not started
11 Exactly rooted browser (x64 + arm) green on mozilla-inbound sfink, jonco, evilpie, Ms2ger, terrence 16 7/1/2013 in progress
12 GGC in the browser (x64 + arm) green on AWFY terrence 16 10/1/2013 not started

Steps

Exact Rooting done in JS Shell bug 753203

12 weeks started

JIT Integration with post barriers - 4 weeks, parallelized

Generational Garbage Collection in the Shell

  • Implement prototype algorithm (terrence) - 1 week
  • This is a potential milestone: we would need to build it and test it on TBPL similar to how |r| works now -- |GGCJS| - done.
  • Re-implement HashTable rekeying
    • We undid this code because it was a perf regression and was still a bit buggy. (terrence) - 3 weeks
    • at least part of this is bug 726687

Exactly Root the Browser bug 831379 - 10 weeks

  • This is a potential milestone: we would turn on exact rooting for release FF at this point. We would not get a performance boost from this (necessarily), but it would lock in our work to this point.

Performance Tuning - 4 weeks (This should probably start asap)

  • Implement a Nursery bug 706885 - 1 week
  • Test against V8 Earley-Boyer benchmark.
    • Also v8 deltablue, raytrace
  • We may need to Implement Bill’s Pools/Zones idea to get the nursery to the requisite perf bug 759585 - 6 weeks - done
  • Refactor code to avoid rooting on hot paths and keep rooter overhead acceptable bug 831886 (bhackett) - done

Make the Post Barrier Verifier Green in the browser bug 764882

  • Investigate how long it will take to do generational barriers - 1 week
  • We may need to rewrite the maps in xpconnect and the browser in terms of HashTable: this could be a bunch of work.
  • Make JS_IsAboutToBeFinalized indirect bug 765432 - 10 weeks

Other

  • Should we establish a new benchmark specifically for GGC. (sfink votes yes)
    • What would it measure? there are multiple goals, e.g. throughput/MMU/pause time
    • Should we make it a public benchmark?
    • What workloads should we consider?
    • compartmental GC very important to us, not necessarily applicable to other implementations
    • allocation rate (broken down into live vs garbage), steady behavior vs swapping between allocation + computation modes, etc.
  • How can we keep our advantage on Splay benchmark
    • possible to do with TI --- look at types of objects promoted from nursery to major heap, eventually start allocating them directly in the major heap
  • Compacting GC - Revisit in Febuary/March - 1 Month
    • Delayed until exact rooting is fully done. We can add this in if we have time in the schedule that we cannot parallelize.

Risks

  • Team is responsible for many top crashers
  • External rooting API has not been designed
  • GGC algorithm has not been decided on - it may not be faster
  • JSD1 exact rooting is lurking