NOTICE: getcpages - waiting for 1 contiguous pages

Jack F. Vogel jackv at turnkey.tcc.com
Sun Jun 16 06:53:27 AEST 1991


In article <1991Jun14.202957.1408 at hawkmoon.MN.ORG> det at hawkmoon.MN.ORG (Derek E. Terveer) writes:
|My machine has been crashing at least once per day with the following panic
|which is preceded by a number of NOTICEs.  I am not sure what the getcpages
|message indicates other than the obvious; that somewhere the kernel required
|at least one page of contiguous "memory".  And because it was in swap (and
|swapchunk) when it died, i presume that the swapper paniced when it couldn't
|swap in? a page of memory from the swap device?  I say "in" because I have 16MB
|of swap space allocated and i have never seen that dip below about 10MB
|available, even with X-windows running and lots of stuff going on.  So, i find
|it hard to believe that Esix had trouble swapping out to the swap area on disk.
 
|Kernel Stack before Trap:
|STKADDR   FRAMEPTR  FUNCTION  POSSIBLE ARGUMENTS
|e0000f00  e0000f30  swap     (d023aa00,1,0,0)
|e0000f38  e0000f6c  swapchun (d01fbad8,0,c03fe020,d01fbad8)
|e0000f74  e0000f84  addspg   (d01fbad8,c03fe020,0,0)
|e0000f8c  e0000fe0  getpages (d01fbad8,0,0,0)
|e0000fe8  e0000ff8  vhand    (43b95c,0,0,0)


Sorry, you are wrong. This stack trace shows that it is the pager "vhand"
that is running, and what it is doing is stealing unreferenced pages and
sending them out to the swap device. The pager and swapper share certain
routines like getpages(), swapchunk(), and swap(). I am not familiar with
the SVR3.2 source but AIX is SVR2 based and it has these routines as well.
I have never heard of the routine getcpages() nor addspg(), so I am not
sure what these do. The way these routines work within the AIX kernel is
that getpages() scans page tables for stealable pages, it will accumulate
a "chunk" of contiguous pte's, then swapchunk() is called to allocate
space on the swap device, the blocks on the swap device MUST be contiguous
due to the way that swap() works. Finally, swap() is the routine where
the actual I/O is done by setting up the physio buffers and then calling
the stragegy routine for the device.

What is odd is the NOTICE seems to indicate that the pager can't get even
a single page on the swap device, and generally if you were really out
of space I would think the kernel would kill certain processes. Also, the
panic you actually got was a kernel page fault, looks kind of like swap()
had a bogus buffer pointer or something. 

All in all, I would say you need to talk to the Esix support folks, where
somebody can check the source and tell you exactly what's going on. I
don't believe running out of swap is your problem here, and if it were
I don't think it should cause a panic.

Good Luck!

Disclaimer: I'm paid to hack the kernel, not to speak for the company.

-- 
Jack F. Vogel			jackv at locus.com
AIX370 Technical Support	       - or -
Locus Computing Corp.		jackv at turnkey.TCC.COM



More information about the Comp.unix.sysv386 mailing list