52
edits
No edit summary |
(Mark as Outdated) |
||
(18 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{outdated}} | |||
<p>Wiki conversion of original Google Document: https://docs.google.com/a/jamsni.com/document/d/1-GZ8F0ZabvdpCnRQaecId0yuu4QFYr5pAvnRC_KFchc/edit | <p>Wiki conversion of original Google Document: https://docs.google.com/a/jamsni.com/document/d/1-GZ8F0ZabvdpCnRQaecId0yuu4QFYr5pAvnRC_KFchc/edit | ||
</p> | </p> | ||
== Objective == | |||
<p>Implement Generational Garbage collection in Spider Monkey. <Some goal based off V8 performance delta % on Earley Boyer benchmark></p> | <p>Implement Generational Garbage collection in Spider Monkey. <Some goal based off V8 performance delta % on Earley Boyer benchmark></p> | ||
<b>Accountable</b>: Naveed<br /> | <b>Accountable</b>: Naveed<br /> | ||
Line 10: | Line 12: | ||
<br/> | <br/> | ||
<b>Tracking Bug:</b> [meta] Implement generational garbage collection - <span class="fck_mw_template"><span class="fck_mw_template"><span class="fck_mw_template">{{bug|619558}}</span></span></span> | <b>Tracking Bug:</b> [meta] Implement generational garbage collection - <span class="fck_mw_template"><span class="fck_mw_template"><span class="fck_mw_template">{{bug|619558}}</span></span></span> | ||
== Milestones == | |||
=== Endgame schedule === | |||
* 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/...] | |||
{| class="wikitable" | |||
! Milestone | |||
! Bug | |||
! Old Estimated Date | |||
! Current Estimated Date | |||
! Actual Date | |||
! Nightly Version | |||
|- | |||
| ... | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 26 (B2G 1.2) is uplifted to Aurora]] | |||
| style="background:#def;" | | |||
| style="background:#def;" | 2013-09-16 | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
|- | |||
| All unsafe references found by static analysis have been fixed | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898608 898608] | |||
| 2013-09-23 | |||
| 2013-10-02 | |||
| | |||
| 27 | |||
|- | |||
| Static analysis of unsafe references is unhidden on TBPL | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909] | |||
| 2013-09-25 | |||
| 2013-10-03 | |||
| | |||
| 27 | |||
|- | |||
| All rooting hazards found by static analysis have been fixed | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=898606 898606] | |||
| 2013-10-18 | |||
| 2013-10-07 | |||
| | |||
| 27 | |||
|- | |||
| Static analysis of rooting hazards is unhidden on TBPL | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=834909 834909] | |||
| 2013-10-22 | |||
| 2013-10-08 | |||
| | |||
| 27 | |||
|- | |||
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 27 is uplifted to Aurora]] | |||
| style="background:#def;" | | |||
| style="background:#def;" | 2013-10-28 | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
|- | |||
| ... | |||
| | |||
| | |||
| | |||
| | |||
| 28 | |||
|- | |||
| All GGC crashes found by fuzzers have been fixed | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=877471 877471] | |||
| 2013-11-__ | |||
| 2013-10-__ | |||
| | |||
| 28 | |||
|- | |||
| AWFY with GGC >= AWFY without GGC | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=875863 875863] | |||
| 2013-11-__ | |||
| | |||
| | |||
| 28 | |||
|- | |||
| GGC is enabled for desktop and Android | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558] | |||
| 2013-11-__ | |||
| | |||
| | |||
| 28 | |||
|- | |||
| GGC is enabled for B2G 1.3 | |||
| [https://bugzilla.mozilla.org/show_bug.cgi?id=619558 619558] | |||
| 2013-11-__ | |||
| | |||
| | |||
| 28 | |||
|- | |||
| ... | |||
| | |||
| | |||
| | |||
| | |||
| 28 | |||
|- | |||
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 28 (B2G 1.3) is uplifted to Aurora]] | |||
| style="background:#def;" | | |||
| style="background:#def;" | 2013-12-09 | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
|- | |||
| ... | |||
| | |||
| | |||
| | |||
| | |||
| 29 | |||
|- | |||
| style="background:#def;" | [[RapidRelease/Calendar|Nightly 29 is uplifted to Aurora]] | |||
| style="background:#def;" | | |||
| style="background:#def;" | 2014-01-20 | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
| style="background:#def;" | | |||
|- | |||
| ... | |||
| | |||
| | |||
| | |||
| | |||
| 30 | |||
|} | |||
=== Original schedule === | |||
{| class="wikitable" | |||
! 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}} === | |||
<p>12 weeks started | <p>12 weeks started | ||
</p> | </p> | ||
<ul><li> | <ul><li> Dynamic rooting analysis on tbpl (sfink) - done | ||
<ul><li> | <ul><li> Unhidden on inbound</li></ul> | ||
</li></ul> | |||
</li><li> Get the root analysis build green - done | </li><li> Get the root analysis build green - done | ||
<ul><li> Get jit-tests green <span class="fck_mw_template"><span class="fck_mw_template">{{bug|745742}}</span></span> | <ul><li> Get jit-tests green <span class="fck_mw_template"><span class="fck_mw_template">{{bug|745742}}</span></span> | ||
Line 185: | Line 310: | ||
<ul><li> Fix all discovered rooting hazards (~800) (sfink,jonco) - 4 weeks | <ul><li> Fix all discovered rooting hazards (~800) (sfink,jonco) - 4 weeks | ||
</li><li> Optimize all discovered over-rooting (~100) | </li><li> Optimize all discovered over-rooting (~100) | ||
</li><li> Automate static analysis <span class="fck_mw_template"><span class="fck_mw_template">{{bug|834912}}</span></span> (sfink | </li><li> Automate static analysis <span class="fck_mw_template"><span class="fck_mw_template">{{bug|834912}}</span></span> - done (sfink) | ||
</li><li> http://people.mozilla.org/~sfink/analysis/browser/rootingHazards.txt | |||
</li><li> http://people.mozilla.org/~sfink/ | </li><li> http://people.mozilla.org/~sfink/analysis/browser/gcFunctions.txt | ||
</li><li> http://people.mozilla.org/~sfink/ | </li><li> http://people.mozilla.org/~sfink/analysis/browser/allFunctions.txt | ||
</li><li> http://people.mozilla.org/~sfink/ | |||
</li></ul> | </li></ul> | ||
</li></ul> | </li></ul> | ||
=== JIT Integration with post barriers - 4 weeks, parallelized === | |||
<ul><li> IonMonkey <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831506}}</span></span> - 1 week (bhackett) | <ul><li> IonMonkey <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831506}}</span></span> - 1 week (bhackett) | ||
</li><li> JaegerMonkey <span class="fck_mw_template"><span class="fck_mw_template">{{bug|764876}}</span></span> - 2 days (bhackett) | </li><li> JaegerMonkey <span class="fck_mw_template"><span class="fck_mw_template">{{bug|764876}}</span></span> - 2 days (bhackett) | ||
</li><li> Baseline JIT <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831507}}</span></span> - <ask jandem/djvj for an estimate> | </li><li> Baseline JIT <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831507}}</span></span> - <ask jandem/djvj for an estimate> | ||
</li></ul> | </li></ul> | ||
=== Generational Garbage Collection in the Shell === | |||
<ul><li> Implement prototype algorithm (terrence) - 1 week | <ul><li> Implement prototype algorithm (terrence) - 1 week | ||
</li><li> This is a potential milestone: we would need to build it and test it on TBPL similar to how |r| works now -- |GGCJS|. | </li><li> This is a potential milestone: we would need to build it and test it on TBPL similar to how |r| works now -- |GGCJS| - done. | ||
</li><li> Re-implement HashTable rekeying | </li><li> Re-implement HashTable rekeying | ||
<ul><li> We undid this code because it was a perf regression and was still a bit buggy. (terrence) - 3 weeks | <ul><li> We undid this code because it was a perf regression and was still a bit buggy. (terrence) - 3 weeks | ||
Line 206: | Line 333: | ||
</li></ul> | </li></ul> | ||
</li></ul> | </li></ul> | ||
=== Exactly Root the Browser <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831379}}</span></span> - 10 weeks === | |||
<ul><li> 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. | <ul><li> 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. | ||
</li></ul> | </li></ul> | ||
=== Performance Tuning - 4 weeks (This should probably start asap) === | |||
<ul><li> Implement a Nursery <span class="fck_mw_template"><span class="fck_mw_template">{{bug|706885}}</span></span> - 1 week | <ul><li> Implement a Nursery <span class="fck_mw_template"><span class="fck_mw_template">{{bug|706885}}</span></span> - 1 week | ||
</li><li> Test against V8 Earley-Boyer benchmark. | </li><li> Test against V8 Earley-Boyer benchmark. | ||
<ul><li> Also v8 deltablue, raytrace | <ul><li> Also v8 deltablue, raytrace | ||
</li></ul> | </li></ul> | ||
</li><li> We may need to Implement Bill’s Pools/Zones idea to get the nursery to the requisite perf <span class="fck_mw_template"><span class="fck_mw_template">{{bug|759585}}</span></span> - 6 weeks | </li><li> We may need to Implement Bill’s Pools/Zones idea to get the nursery to the requisite perf <span class="fck_mw_template"><span class="fck_mw_template">{{bug|759585}}</span></span> - 6 weeks - done | ||
</li><li> Refactor code to avoid rooting on hot paths and keep rooter overhead acceptable <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831886}}</span></span> (bhackett) - done | </li><li> Refactor code to avoid rooting on hot paths and keep rooter overhead acceptable <span class="fck_mw_template"><span class="fck_mw_template">{{bug|831886}}</span></span> (bhackett) - done | ||
</li></ul> | </li></ul> | ||
=== Make the Post Barrier Verifier Green in the browser <span class="fck_mw_template"><span class="fck_mw_template">{{bug|764882}}</span></span> === | |||
<ul><li> Investigate how long it will take to do generational barriers - 1 week | <ul><li> Investigate how long it will take to do generational barriers - 1 week | ||
</li><li> We may need to rewrite the maps in xpconnect and the browser in terms of HashTable: this could be a bunch of work. | </li><li> We may need to rewrite the maps in xpconnect and the browser in terms of HashTable: this could be a bunch of work. | ||
</li><li> Make JS_IsAboutToBeFinalized indirect <span class="fck_mw_template"><span class="fck_mw_template">{{bug|765432}}</span></span> - 10 weeks | </li><li> Make JS_IsAboutToBeFinalized indirect <span class="fck_mw_template"><span class="fck_mw_template">{{bug|765432}}</span></span> - 10 weeks | ||
</li></ul> | </li></ul> | ||
== Other == | |||
<ul><li> Should we establish a new benchmark specifically for GGC. (sfink votes yes) | <ul><li> Should we establish a new benchmark specifically for GGC. (sfink votes yes) | ||
<ul><li> What would it measure? there are multiple goals, e.g. throughput/MMU/pause time | <ul><li> What would it measure? there are multiple goals, e.g. throughput/MMU/pause time | ||
Line 239: | Line 374: | ||
</li></ul> | </li></ul> | ||
</li></ul> | </li></ul> | ||
== Risks == | |||
<ul> | <ul> | ||
<li> Team is responsible for many top crashers</li> | <li> Team is responsible for many top crashers</li> |
edits