Recent changes impeded building and testing on smaller boxes

James E Keenan jkeen at verizon.net
Sun Sep 26 13:33:57 UTC 2010


James E Keenan wrote:
>
> Last night bacek was able to devote some attention to this problem. He
> pointed to a particular line of code recently merged in from the
> gc_massacre branch and asked me to make a manual change:
>
> $ svn diff
> Index: src/gc/gc_ms2.c
> ===================================================================
> --- src/gc/gc_ms2.c (revision 49323)
> +++ src/gc/gc_ms2.c (working copy)
> @@ -623,7 +623,8 @@
>
> /* Collect every 256M allocated. */
> /* Hardcode for now. Will be configured via CLI */
> - self->gc_threshold = 256 * 1024 * 1024;
> +/* self->gc_threshold = 256 * 1024 * 1024; */
> + self->gc_threshold = 64 * 1024 * 1024;
> }
> interp->gc_sys->gc_private = self;
>
>
> 256M happens to be amount of Physical Memory reported by 'top' for this
> machine. Changing the gc_threshold from 256M to 64M did enable 'make
> test' to run completely (including t/compilers/opsc/*.t) and PASS in
> about 19 minutes. So the value of the gc_threshold does have a
> significant impact on whether parrot will run (in any meaningful sense)
> on a particular machine.
>

I decided to extend this experiment by further decreasing the value 
assigned to self->gc_threshold by another factor of 4:

Index: src/gc/gc_ms2.c
===================================================================
--- src/gc/gc_ms2.c     (revision 49339)
+++ src/gc/gc_ms2.c     (working copy)
@@ -623,7 +623,9 @@

          /* Collect every 256M allocated. */
          /* Hardcode for now. Will be configured via CLI */
-        self->gc_threshold = 256 * 1024 * 1024;
+/*        self->gc_threshold = 256 * 1024 * 1024; */
+/*        self->gc_threshold = 64 * 1024 * 1024; */
+        self->gc_threshold = 16 * 1024 * 1024;
      }
      interp->gc_sys->gc_private = self;

With this setting, 'make' completed in 11:40 (versus 12:20 with setting 
of 64M), the tests in t/compilers/opsc/*.t took 6:05 (versus something 
over 7 minutes; I didn't record exact value), and 'make test' as a whole 
took 15:28 (versus something in the 19-minute) range.  This suggests 
that on this low-physical-memory box, I get better performance the 
*lower* I set the GC threshold.

Thank you very much.
kid51



More information about the parrot-dev mailing list