Weldon,

Thank you, for your interest. The main idea of the implementation is
just education of myself. I wanted to start with train algorithm to
better understand its pros and cons. I didn't supposed to stick with
that algorithm. Moreover, when just starting the implementation I
noticed some potential performance issues. This made me reevaluate the
idea and move further.

Of cause, it is possible to take working implementation or jump into
the best solution, but thus I will make no decision my self and will
not know whole picture of possible solutions.

Btw, I have found small performance improvement to GCv4 which can be
easily added to it.

Well, I'm going to do this development just for education and to
extend my own horizon. It can be done here or privately. Either
variant is acceptable for me.
--
Ivan

On 6/13/06, Weldon Washburn <[EMAIL PROTECTED]> wrote:
 Ivan,

Please note that two guys who worked for me on ORP
(http://orp.sourceforge.net/ ) spent 2-3 years building and tuning the
train algorithm.  We could never get the performance to acceptable
level.  Ultimately we ditched the train algorithm and built GCV4 in
less than 3 months.  GCV4 was never finished.  I suspect other VM
builders also experimented with the train algorithm and abandoned it.
As far as I know, there are no production or research MRTEs containing
the train algorithm.  Also note there is already a complete
implementation of the train algorithm in Apache compatible licensed
open source.  Look for orp-1.0.10.tgz on
http://sourceforge.net/projects/orp ).  The train algorithm is
contained in the directory gc_v2.  Since the GC/VM interface has not
evolved much in the transition from ORP to DRLVM, it should be an easy
port.  This port would be interesting for two reasons:

a)
A teaching tool to show why/where the train algorithm fails.  Tony
Printezis and Richard Jones wrote an excellent paper that used GCspy
to graphically demonstrate where the train algorithm falls down.

Look for, "GCspy: An Adaptable Heap Visualization Framework" by Tony
Printezis and Richard Jones,
(http://www.cs.kent.ac.uk/pubs/2002/1426/index.html ).  Also look for,
(http://research.sun.com/projects/gcspy/printezis-garthwaite-ismm2002.pdf
), "Visualizing the Train Garbage Collector".

It might be interesting to hook up GCV2 and GCspy to harmonydrlvm and
reproduce this paper.  This would calibrate GCspy for future
harmonydrlvm work.

b)
GC_V2 really stressed the write barrier subsystem. (GCV2 does a
substantial amount of object copying.)  If GC_V2 can be ported
quickly, it might be a good stepping stone to getting MMTk going.

On 6/9/06, Ivan Volosyuk <[EMAIL PROTECTED]> wrote:
> While some works going on to properly integrate DRLVM in harmony build 
system...
>
> I would like to start development of new garbage collector. I know
> about Weldon's work related to MMTk. I am not sure that it is the
> right way.
>
> Instead of doing GC based on java, I would concentrate on the one
> written in C. I think that the VM written in C (or C++ ) should have
> GC written the same way.
>
> I have some experience in garbage collectors (stop-the-world ones for
> now) and want to extend my knowledge in this area. That is one of the
> reasons I want to make the GC, but do not port the existing one. I
> hope I will eventually produce something which is better then existing
> implementations or at least a few new ideas.
>
> I would like to start implementing something similar to Train
> algorithm, then possibly modify it in direction to Garbage First
> collector. I want to create something with high performance and low
> pauses.  At the beginning it will not even compile. I do not expect
> this to be interesting to anyone for some time, but as Geir always
> suggests I going to do this in public to avoid surprises.
>
> All required VM functionality (for GC written in C) is already in
> place. DRLVM's interfaces for GC is ok for me and should be quite
> portable. Write barriers implementation is already in place, suitable
> for C-based Gc: (Harmony-504 (me), Harmony-581 (Ming Wu)).
>
> As I don't have commiter account, I going to create one JIRA and start
> to fill it with patches. In the patches I will create directory
> enhanced/drlvm/trunk/vm/gcx and will start to fill it with stubs and
> implementation. I am going to do it mostly at spare time.

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to