Xref: utzoo comp.lang.fortran:1869 comp.sys.att:5987 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!bionet!agate!ucbvax!tut.cis.ohio-state.edu!rutgers!att!cuuxb!dlm From: dlm@cuuxb.ATT.COM (Dennis L. Mumaugh) Newsgroups: comp.lang.fortran,comp.sys.att Subject: Re: Gigantic character variables Summary: tune kernel add swap Message-ID: <2670@cuuxb.ATT.COM> Date: 30 Mar 89 15:57:11 GMT References: <589@mbph.UUCP> Reply-To: dlm@cuuxb.UUCP (Dennis L. Mumaugh) Followup-To: comp.lang.fortran Organization: ATT Data Systems Group, Lisle, Ill. Lines: 52 In article <589@mbph.UUCP> hybl@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@cuuxb.att.com