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">&lt;<a href=3D"mailto:[email protected]"=
>[email protected]</a>&gt;</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>&quot;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&#39;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==--