[Larceny-users] GC options

Sven.Hartrumpf at FernUni-Hagen.de Sven.Hartrumpf at FernUni-Hagen.de
Thu Jan 25 09:32:38 EST 2007


Hello Felix.

Mon, 22 Jan 2007 13:06:03 -0500, Felix wrote:
> Yes, I felt a little lost looking at that table as well.  The size of  
> heap area number 0 may be inversely related to the running time of  
> your program, but since the other parameters were not fixed, I don't  
> think that's a solid conclusion to draw.

Yes, I need to test some more parameter combinations.
But are there any rough constraints for combinations that make some
sense? Like:
- number of generations
- size0 compared to size1
- size1 compared to size2
- other relevant parameters
- ...

> What percentage of the time is devoted to garbage collection?  If  
> you're using the Larceny time (or run-benchmark) routine, it will  
> print out a gc time information line separately from the running time.

Here is the output for a larceny run with default settings:
Note, that GC needs 17.07%.

Overall memory statistics
  Generations....: 3
  Words allocated: 119341312544
  Words reclaimed: 0
  Words copied...: 14281042810
  GC time (ms)...: 1359532 real, 1359640 cpu
    promotion....: 1253939 real, 1254046 cpu
    collection...: 105593 real, 105594 cpu
    full gc......: 0 real, 0 cpu
  Heap allocation
    maximum......: 199874560
    current......: 74182656
    current used.: 74180534
  Heap fragmentation
    maximum......: 0
    current......: 0
  Remset allocation
    maximum......: 77824
    current......: 69632
  Other RTS allocation
    maximum......: 0
    current......: 524288
  Total allocation
    maximum......: 200468480
    current......: 74776576
  Full collection
    collections..: 0
    objs marked..: 0
    ptrs traced..: 0
Per-generation information
  Generation #0,0
    Collections....: 0
    Promotions.....: 0
    GC time (ms)...: 0 real, 0 cpu
      promotion....: 0 real, 0 cpu
      collection...: 0 real, 0 cpu
    Generation size: 262144
      allocated....: 262144
      in use.......: 262138
  Generation #1,0
    Collections....: 119
    Promotions.....: 455119
    GC time (ms)...: 1359532 real, 1359640 cpu
      promotion....: 1253939 real, 1254046 cpu
      collection...: 105593 real, 105594 cpu
    Generation size: 130049024
      allocated....: 72771584
      in use.......: 72769468
  Generation #2,0
    Collections....: 0
    Promotions.....: 0
    GC time (ms)...: 0 real, 0 cpu
      promotion....: 0 real, 0 cpu
      collection...: 0 real, 0 cpu
    Generation size: 1148928
      allocated....: 1148928
      in use.......: 1148928
Stack information
  Frames flushed.: 4862730
  Words flushed..: 40542294
  Frames restored: 9180648
  Stacks created.: 648079
Miscellaneous
  Elapsed time...: 7964347
  CPU time.......: 7963797


The following output is from larceny -load 4 -size1 16M -size2 32M -size3 512M:

 Overall memory statistics
  Generations....: 3
  Words allocated: 119312013370
  Words reclaimed: 0
  Words copied...: 4483819718
  GC time (ms)...: 543144 real, 543195 cpu
    promotion....: 504784 real, 504936 cpu
    collection...: 38360 real, 38259 cpu
    full gc......: 0 real, 0 cpu
  Heap allocation
    maximum......: 268150784
    current......: 161920000
    current used.: 161891042
  Heap fragmentation
    maximum......: 0
    current......: 0
  Remset allocation
    maximum......: 114688
    current......: 69632
  Other RTS allocation
    maximum......: 0
    current......: 1048576
  Total allocation
    maximum......: 269268992
    current......: 163038208
  Full collection
    collections..: 0
    objs marked..: 0
    ptrs traced..: 0
Per-generation information
  Generation #0,0
    Collections....: 0
    Promotions.....: 0
    GC time (ms)...: 0 real, 0 cpu
      promotion....: 0 real, 0 cpu
      collection...: 0 real, 0 cpu
    Generation size: 4194304
      allocated....: 4194304
      in use.......: 4194298
  Generation #1,0
    Collections....: 27
    Promotions.....: 28419
    GC time (ms)...: 543144 real, 543195 cpu
      promotion....: 504784 real, 504936 cpu
      collection...: 38360 real, 38259 cpu
    Generation size: 193292288
      allocated....: 156576768
      in use.......: 156547816
  Generation #2,0
    Collections....: 0
    Promotions.....: 0
    GC time (ms)...: 0 real, 0 cpu
      promotion....: 0 real, 0 cpu
      collection...: 0 real, 0 cpu
    Generation size: 1148928
      allocated....: 1148928
      in use.......: 1148928
Stack information
  Frames flushed.: 1721070
  Words flushed..: 14336234
  Frames restored: 3324130
  Stacks created.: 221287
Miscellaneous
  Elapsed time...: 7853543
  CPU time.......: 7851002

Now, only 6.91% for GC, it seems to be good enough for my purposes.
And this percentage is really much smaller than in any other Scheme
I have tried. Excellent!

> > Are there any ways to exclude large read only structures from GC
> > (besides using a database or similar)?
> 
> 1. When you say "large", how large do you mean?  More than 4 KB?

Yes, list and vector structure more like 10-100 MB.

> 2. What do you mean by "exclude" ?
> 
> The reason I ask these questions is that Larceny already has a large  
> object space that is collected via mark-sweep rather than a copying  
> collector.  So if the goal of "exclusion" is to avoid paying the cost  
> of copying such objects,

Yes, that is the goal.

> it is not necessary.

Greetings
Sven



More information about the Larceny-users mailing list