[comp.lang.lisp] Allegro: loading into oldspace

murthy@skuld.cs.cornell.edu (Chet Murthy) (10/29/89)

Hi. Does anybody out there know how to load into oldspace under Allegreo CL?

I need to load a 24Mbyte file into Allegro, and when I try it with
the vanilla GC options, utilization gets really, really bad.  When I tried
setting the generation-spread, which is the variable which controls
how fast an object is tenured from newspace into oldspace, to 1, which is
supposedly the lowest value, it didn't help a bit.  Also, the oldspaces
that Allegro creates are really puny - 40k words (I think) in size.  I'd like
to create _huge_ ones, 40Mb in size, etc.  Does anyone have pointers to how
to do either?  I tried looking around in the Allegro manuals, including
the Generational GC implementation guide, to no avail.

Thanks in advance,
--chet--

	--chet--
	murthy@cs.cornell.edu

barmar@kulla (Barry Margolin) (10/29/89)

By definition, objects can't be created in oldspace.  New objects are
always created in newspace.  When a copying garbage collector runs,
newspace is renamed to oldspace and non-garbage objects are then copied
from oldspace to newspace (in the case of a real-time GC, actually to a
subspace called "copyspace").

In general, a copying GC requires that you have enough VM for two copies of
every non-garbage object.  In some systems, the Lisp environment is broken
up into "areas", and areas can be GCed individually, which may reduce the
memory requirements; however, some garbage in those areas may not be
reclaimed because it is referenced by garbage in the non-GCed areas (during
a by-area GC, other areas are considered to contain only non-garbage).
Some Lisps also have "static" areas, which are not GCed by default (such
areas only have newspace).
Barry Margolin, Thinking Machines Corp.

barmar@think.com
{uunet,harvard}!think!barmar

cox@Franz.COM (Charles A. Cox) (10/30/89)

In article <33647@cornell.UUCP> murthy@skuld.cs.cornell.edu (Chet Murthy) writes:
   Hi. Does anybody out there know how to load into oldspace under
   Allegreo CL?

By definition, objects are created in newspace and then, if they
survive being scavenged `generation-spread' number of times, are moved
into oldspace.  The fastest way to move objects into oldspace in Franz
Inc. Allegro CL is to set this generation-spread parameter to 1 (which
I see, from the part of your note I didn't include here, is what you
did).

   [...] the oldspaces that Allegro creates are really puny - 40k
   words (I think) in size.  I'd like to create _huge_ ones, 40Mb in
   size, etc.  Does anyone have pointers to how to do either?  I tried
   looking around in the Allegro manuals, including the Generational
   GC implementation guide, to no avail.

I don't have an Allegro CL manual handy so I can't tell if the
procedure for creating larger old spaces is described there or not.  I
do know, however, that this information is in the installation guide
since the way to increase initial old and new space sizes is to
rebuild the lisp image.  If your version of lisp is recent enough to
have a `config' script with the distribution, that script will ask you
how big you want these sizes to be, and will then rebuild and
reinstall your lisp.

	Hope this helps, 
	Charley
--
---
Charles A. Cox, Franz Inc.        1995 University Avenue, Suite 275
Internet: cox@franz.com           Berkeley, CA  94704
uucp:     uunet!franz!cox         Phone: (415) 548-3600    FAX: (415) 548-8253