[developers] [oe at csli.stanford.edu: tuning image size and the garbage collector]

Stephan Oepen oe at csli.Stanford.EDU
Fri Jun 9 21:20:49 CEST 2006


g'day,

attached below is a query i (think i) sent to Franz earlier this week,
but have not heard back about yet.  i am wondering whether anyone on
this list has knowledge about gc() internals and the interactions with 
memory layout (possibly specific to the AMD64 architecture)?  also, i
am curious as to whether our 2 -- 10 gbyte process sizes are unique,
or whether others are operating in a comparable space (well, maybe we
should just learn how to code memory-efficiently)?  

the pieces of ACL documentation that discuss tuning gc() performance,
memory layout, et al. have been routine literature for me over the past
fifteen or so years, but still i get a sense of `black art' when trying
to optimize in that neighborhood :-).  any words of wisdom or pointers
to related materials would be very much appreciated!

                                         many thanks in advance  -  oe

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ Universitetet i Oslo (IFI); Boks 1080 Blindern; 0316 Oslo; (+47) 2285 7989
+++     CSLI Stanford; Ventura Hall; Stanford, CA 94305; (+1 650) 723 0515
+++       --- oe at csli.stanford.edu; oe at ifi.uio.no; stephan at oepen.net ---
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


[--- start of forwarded message ---]

Date: Mon, 5 Jun 2006 20:46:15 +0200
From: oe at csli.stanford.edu (Stephan Oepen)
To: support at franz.com
Cc: developers at delph-in.net
Subject: tuning image size and the garbage collector

hei!

i am wondering about gc() performance: every now and again and recently
with distressing frequency, i experience a global gc() that requires on
the order of seven minutes to complete.  here are some gc() messages:

  [20:18:39] gc-after-hook(): local; new: 911819488; old: 0; efficiency: 81.

  Indexing completescavenging...done
  Mark Pass...done(1,270+0), marked 6303240 objects, overflows = 0, \
    max depth (minus ovflow) = 16.
  Weak-vector Pass...done(0+0).
  Cons-cell swap...done(40+0), 696311 cons cells moved
  Oldarea break chain...done(100+0), 68252 holes totalling 40041472 bytes
  Page-compaction data...done(0+0).
  Address adjustment...done(409,990+50).
  Compacting other objects...done(190+0).
  Page compaction...done(0+0), 0 pages moved
  New rootset...done(500+0), 58773 rootset entries
  Building new pagemap...done(110+0).
  Merging empty oldspaces...done, 0 oldspaces merged.
  global gc recovered 53360048 bytes of old space.
  scavenging...done
   eff: 2%, copy new: 243086224 + old: 0 = 243086224
    Page faults: non-gc = 0 major + 39011 minor, gc = 0 major + 47676 minor

  [20:25:45] gc-after-hook(): global; new: 243086224; old: 0; efficiency: 2.

the one time-consuming step appears to be `address adjustment', so now
i wonder what exactly is done there and how i get it to be so bad?  it
seems ACL while in that phase is interacting badly with my Linux: load
goes up to above 4, even though there is only one active process.  ACL
itself has a process size of around 1.6 gbyte at this point (and there
is lots more physical memory available).

i also have the impression that the number of `cons cells moved' has a
direct impact on the time taken in address adjustment.  furthermore, i
believe that ACL 8.0 made this problem worse.  i have tried a range of
image creation parameters (initial new- and oldspace sizes, lisp heap, 
incremental growth parameters, et al.), but so far to no avail.

at this point, i believe i would benefit from a developer looking over
the gc() messages above and pointing out (a) whether there is anything
odd-looking there and (b) summarizing what exactly goes on in address
adjustment and how i can affect the amount of work done in that phase?

                                        many thanks in advance  -  oe

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ Universitetet i Oslo (IFI); Boks 1080 Blindern; 0316 Oslo; (+47) 2285 7989
+++     CSLI Stanford; Ventura Hall; Stanford, CA 94305; (+1 650) 723 0515
+++       --- oe at csli.stanford.edu; oe at ifi.uio.no; stephan at oepen.net ---
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[--- end of forwarded message ---]



More information about the developers mailing list