Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!elroy.jpl.nasa.gov!turnkey!jackv From: jackv@turnkey.tcc.com (Jack F. Vogel) Newsgroups: comp.unix.sysv386 Subject: Re: NOTICE: getcpages - waiting for 1 contiguous pages Keywords: Esix 5.3.2-D, panic Message-ID: <1991Jun15.205327.10904@turnkey.tcc.com> Date: 15 Jun 91 20:53:27 GMT References: <1991Jun14.202957.1408@hawkmoon.MN.ORG> Reply-To: jackv@turnkey.TCC.COM (Jack F. Vogel) Organization: Turnkey Computer Consultants, Westchester, CA Lines: 53 In article <1991Jun14.202957.1408@hawkmoon.MN.ORG> det@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@locus.com AIX370 Technical Support - or - Locus Computing Corp. jackv@turnkey.TCC.COM