From: Chet Murthy
Subject: Allegro: loading into oldspace
Date: 
Message-ID: <33647@cornell.UUCP>
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--
	······@cs.cornell.edu

From: Barry Margolin
Subject: Re: Allegro: loading into oldspace
Date: 
Message-ID: <31203@news.Think.COM>
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.

······@think.com
{uunet,harvard}!think!barmar
From: Zany Cornetto
Subject: Re: Allegro: loading into oldspace
Date: 
Message-ID: <CHRIS.89Oct30164651@jung.harlqn.co.uk>
In a generation based garbage collector the ability to allocate
objects in other than the first generation is extremely useful.  For
example, if you have a large datastructure whose lifetime is such that
it will be promoted into the highest generation then it seems sensible
to allocate it there directly rather than expend resources repeatably
copying it, from semispace to semispace, and from generation to
generation.  Our programming environment LispWorks provides a macro
which enables the programmer to specify which generation to use for
allocation during the execution of its body. Arranging for promotion
to occur after just one garbage collection is also quite useful.  In
LispWorks the garbage collector is configured to behave this was
during the loading of fasl files.

	(with-fast-promotion 1
	   ;; load the fasl file	
	   .......
	   )

This ensures that short lives objects created during the execution of
random top-level forms are GCed.



--

chris richardson
----------------
·····@harlqn.co.uk, ..!uunet!mcvax!harlqn.co.uk!chris
Harlequin Ltd, Barrington Hall, Barrington, Cambridge, CB2 5RG, England.
Phone: 0223 872522 (National), +44-223-872522 (International).
From: Charles A. Cox
Subject: Re: Allegro: loading into oldspace
Date: 
Message-ID: <COX.89Oct29093357@akbar.Franz.COM>
In article <·····@cornell.UUCP> ······@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: ···@franz.com           Berkeley, CA  94704
uucp:     uunet!franz!cox         Phone: (415) 548-3600    FAX: (415) 548-8253