Re: Question regarding adding a new generation to mono's GC
Ciprian Mustiata <[email protected]> Sat, 6 Nov 2010 09:25:50 +0100
| Newsgroups | gmane.comp.gnome.mono.garbage-collection |
|---|---|
| Message-ID | <[email protected]> |
--===============1768105649== Content-Type: multipart/alternative; boundary=000e0ce0d75abe4ff704945e2434 --000e0ce0d75abe4ff704945e2434 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable You are right As of today as SGen works is like this: Gen0 (or nursery) and Old Generation split in two: the free list for large objects and the old generation. Your task will consist in following: create Gen1 and you will have the following design: Gen0: short lived objects Gen1: medium lived objects (using bump-pointer) Gen2: long lived objects (using bump-pointer) GenFreeList: large objects (regardless of generation) I really hope that your project will evolve nicely and I would love to see this addition to Mono runtime On Sat, Nov 6, 2010 at 1:56 AM, J=E9r=F4me De Cuyper <[email protected]>wrote: > This is my first message on the mono-gc mailing list and I hope I will no= t > break any implicit rule it may have. Otherwise please let me know! > > I decided to use my CS thesis as an opportunity to contribute some code t= o > the mono project. Lupus kindly offered the following task: > > "we currently have 2 generations: introduce a third one that sits between > the nursery and the old generation. It should be a bump-pointer > style generation for fast gen0 collections." > > Before starting to dig into the code, I need to justify the change that i= s > proposed. I suppose the purpose of a new generation is to create a group= of > objects from > a different age in order to recollect as much of them as possible > before sending them to the two oldest generations. Is that correct? > > Please correct me but I'm guessing the new flow of collection would be as > follow: > > gen0 - newest objects - bump-pointer based > *gen1 - middle aged objects - bump-pointer based (the new generation)* > gen2 - oldest generation - size-segregated freelists > gen3 - oldest generation - bump-pointer based > > Thank you! > > J=E9r=F4me De Cuyper > http://www.jdecuyper.com > > > > _______________________________________________ > Mono-gc-list maillist - [email protected] > http://lists.ximian.com/mailman/listinfo/mono-gc-list > > --000e0ce0d75abe4ff704945e2434 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable You are right<br><br>As of today as SGen works is like this:<br>Gen0 (or nu= rsery) and Old Generation split in two: the free list for large objects and= the old generation.<br><br>Your task will consist in following: create Gen= 1 and you will have the following design:<br> Gen0: short lived objects<br>Gen1: medium lived objects (using bump-pointer= )<br>Gen2: long lived objects (using bump-pointer)<br>GenFreeList: large ob= jects (regardless of generation)<br><br>I really hope that your project wil= l evolve nicely and I would love to see this addition to Mono runtime<br> <br><div class=3D"gmail_quote">On Sat, Nov 6, 2010 at 1:56 AM, J=E9r=F4me D= e Cuyper <span dir=3D"ltr"><<a href=3D"mailto:[email protected]"= >[email protected]</a>></span> wrote:<br><blockquote class=3D"gm= ail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-le= ft:1ex;"> <div><div>This is my first message on the mono-gc mailing list and I hope I= will not break any implicit rule it may have. Otherwise please let me know= !</div><div><br></div><div>I decided to use my CS thesis as an opportunity = to contribute some code to the mono project. Lupus kindly offered the follo= wing task:</div> <div><br></div><div><div>"we currently have 2 generations: introduce a= third one that sits=A0between the nursery and the old generation. It shoul= d be a bump-pointer</div><div>style generation for fast gen0 collections.&q= uot;</div> </div><div><br></div><div><div>Before starting to dig into the code, I need= to justify the change that is proposed. I suppose the purpose of a new gen= eration is to create a =A0group of objects from</div><div>a different age i= n order to recollect as much of them as possible before=A0sending them to t= he two oldest generations. Is that correct?</div> </div></div><div><br></div><div>Please correct me but I'm guessing the = new flow of collection would be as follow:=A0</div><div><br></div><div>gen0= - newest objects -=A0<span style=3D"font-family:arial, sans-serif;font-siz= e:13px;border-collapse:collapse">bump-pointer based</span></div> <div><i>gen1 - middle aged objects =A0-=A0<span style=3D"font-family:arial,= sans-serif;font-size:13px;border-collapse:collapse">bump-pointer based (th= e new generation)</span></i></div><div>gen2=A0- oldest generation -=A0<span= style=3D"font-family:arial, sans-serif;font-size:13px;border-collapse:coll= apse">size-segregated freelists</span></div> <div>gen3 - oldest generation -=A0<span style=3D"font-family:arial, sans-se= rif;font-size:13px;border-collapse:collapse">bump-pointer based</span></div= ><div><br></div><div>Thank you!</div><div> <br> </div>J=E9r=F4me De Cuyper<br><a href=3D"http://www.jdecuyper.com" target= =3D"_blank">http://www.jdecuyper.com</a><br><br><br> <br>_______________________________________________<br> Mono-gc-list maillist =A0- =A0<a href=3D"mailto:[email protected]= om">[email protected]</a><br> <a href=3D"http://lists.ximian.com/mailman/listinfo/mono-gc-list" target=3D= "_blank">http://lists.ximian.com/mailman/listinfo/mono-gc-list</a><br> <br></blockquote></div><br> --000e0ce0d75abe4ff704945e2434-- --===============1768105649== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Mono-gc-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-gc-list --===============1768105649==--