Paging-space problems

John D. McCalpin mccalpin at perelandra.cms.udel.edu
Fri Nov 16 07:03:08 AEST 1990


>On 15 Nov 90 18:09:19 GMT,dennis at gpu.utcs.utoronto.ca (Dennis Ferguson) said:

Dennis> In article <1990Nov14.223820.29154 at arnor.uucp> rhoover at cirrus.watson.ibm.com (Roger Hoover) writes:
>In article <MARC.90Nov14153807 at marc.watson.ibm.com>, marc at arnor.uucp writes:
>|> malloc fails when the request causes the heap to exceed the 
>|> ulimit for data.  It has nothing to do with paging space.
>|> 

Dennis> System V (or at least the release I was familiar with) doesn't
Dennis> do this.  Instead it allocates page space dynamically, when
Dennis> you need to page something out.  Running processes have no
Dennis> page space allocation unless they actually have pages out on
Dennis> the backing store.  The good effects of this are that you can
Dennis> run System V systems with no page space at all if need be, and
Dennis> that the total in-use memory allowed is related to (physical
Dennis> memory + page space) rather than just page space. 

Dennis> I think AIX exhibits the latter behaviour exactly.  

This does not mesh with my experience with AIX.  Under AIX 3.1 on my
RS/6000, I find that I cannot run jobs for which there is not enough
paging space available on the disk --- even though there is plenty of
memory to contain the job.

Examples:
(1) With 16 MB paging space, the O/S used 12 MB and reported 4 MB
free.  With either 8 MB or 32 MB installed in the machine, I was
unable to run jobs with an *active working set* larger than 4 MB.

(2) With 36 MB paging space, the O/S used 12 MB and reported 24 MB
free.  With 32 MB RAM, I was able to run jobs with *active working
sets* right up to the 24 MB paging space limit.  A check with 'ps v'
showed that the jobs were completely in RAM.

So what do I mean by *active working set*?  Well, I'm not sure how the
O/S figures it out, but the following program runs until the part of
the array that is *actually used* gets too big for the currently
available paging space:

	parameter (n = 2**22)
	doubleprecision a(n)

	do length=65536,n,65536
		do i=1,length
			a(i) = float(i)
		end do
		print *,'Size (MB) :',float(length*8)/float(2**20)
	end do
	end

So somewhere this datum has to fit into theories on how AIX does
paging....
--
John D. McCalpin			mccalpin at perelandra.cms.udel.edu
Assistant Professor			mccalpin at vax1.udel.edu
College of Marine Studies, U. Del.	J.MCCALPIN/OMNET



More information about the Comp.unix.aix mailing list