Gigantic character variables

Dennis L. Mumaugh dlm at cuuxb.ATT.COM
Fri Mar 31 01:57:11 AEST 1989


In article <589 at mbph.UUCP> hybl at mbph.UUCP (Albert Hybl  Dept of Biophysics  SM) writes:
     For (K .LE. 7280900), the AT&T XLA+ fortran compiler compiled the
     program and its execution on our AT&T 3B2 worked!  That is not bad
     for a machine with only 4 M bytes of RAM memory.  Daniel also said
     "...modern paging operating systems should make the issue of gigantic
     arrays and small core practically moot. ...  You should be able to have
     an uninitialized array almost as big as the maximum process size on
     the 3B2 (16 meg)."
     
     When (K .GT. 7280900 Mbytes), the following run time diagnostics are
     printed and the executions are killed:
       XLA+ NOTICE:  growreg -- Insufficient memory to allocate 3621 pages -
              system call failed.      /* For K=7284000 */
       XLA+ NOTICE:  growreg -- Insufficient memory to allocate 8145 pages -
              system call failed.      /* For K=16665045 */
       XLA+  a.out too big         /* For K=16670045 and K=100000000 */
     Hmmm.. The diagnostics suggest that I may be able to tweak the
     system into giving me another 8 M bytes.  Does anyone know how
     I might do it?  
     
The kernel will not run a process unless there is enough space on
the swapping disk to accomodate ithe entire memory of the
process.  Your swapping space is insuffiecient to hold the whole
process as well as all the other processes who are running at the
same time.

One will have to increase the swap space to at least 16 megs (use
/etc/swap to add more space or repartition the swap disk).  In
addition the maximum memory a process is allowed is limited by
two different things:  First there is a hard limit imposed by the
fact that the user's address space is limited to only part of the
32 bit address space: the bottom half of the address space is
reserved for kernel use.  Then a large section is reserved for
the users ublock and stack.  The actual space available for a
user starts at 0x80800000.  The first part is used for the
program text, then comes data, bss and then the heap.

The second limit is there is a tuneable parameter in the kernel
that limits the maximum size of a process.  It is set in most
systems to give 16 megs of user accessible memory.  It can be
changed -- its name is MAXUMEM and is set to 8192.

The growreg messages are from the kernel and are printed on the
console and are explaining that there is insufficient swap
available to allow this process to run. [Similar messages occur
when a sbrk (or mallor) are given and there isn't room].

As I said above, increase your available swap.  You may also have
to increase MAXUMEM and rebuild and reboot.
-- 
=Dennis L. Mumaugh
 Lisle, IL  ...!{att,lll-crg,attunix}!cuuxb!dlm  OR dlm at cuuxb.att.com



More information about the Comp.sys.att mailing list