Subject: re: UVM failure :(
To: matthew green <mrg@eterna.com.au>
From: Michael L. Hitch <mhitch@lightning.oscs.montana.edu>
List: port-pmax
Date: 11/22/1998 12:23:56
On Nov  3, 10:07pm, matthew green wrote:
>      Hmm - another question:  how big is your swap partition?  Mine is
>    172MB, which is about 43000 pages.  That's not too far off the value
>    from your panic.
> 
> it's 200MB, but i *also* have a 40MB buffer cache -- that's where
> all my kmem is going, i imagine...
>    
>      I know I've run UVM on this system previously, so I wonder what has
>    changed?
> 
> do you have a 40MB buffer cache? :-)

  I'm only using about 10MB.

  I think I've tracked down the problem - and it's not the buffer cache.

  When pmap_bootstrap() calculates how bib the PTE table for the kernel
should be, it takes into account the buffer cache (and a few other
thinsg).  The problem is that it doesn't account for the memory
allocation used by swapctl when it addes the swap space.  There's a
comment about '1024 coming from PAGER_MAP_SIZE in vm_pager_init()', but
vm_pager_init() is no longer being used.

  I think if you increase the 1024 value. that should result in more memory
available.  I tested it with an additional 200MB swap partition on my
5000/25 at home.  Ah - I also just rebooted the 5000/200 that failed
before, and it looks like it came back.

  Also, there's a 256 in the Sysmapsize calculation that is 'maxproc *
UPAGES' in the alpha pmap.c.

  I don't know how to handle the space needed for adding the swap
partition(s) - at the time the kernel initializes the kenrnel virtual
space, it has no idea of how much swap space is going to be added.
On the mips, it need 16 bytes per page of swap.

  I wrote a little program to dump out the kernel_map allocations, and
it looks like there may be a few more allocations that aren't accounted
for in the Sysmapsize calculation.  [Sysmapsize is also used to set the
kernel virtual memory size.]  I haven't tracked down where all these
allocations are coming from.

  Rats - After starting X on my 5000/25, I can't log on - fork() can't
allocate memory.  That 200MB additional swap was too much :-(

Michael

-- 
Michael L. Hitch			mhitch@montana.edu
Computer Consultant
Information Technology Center
Montana State University	Bozeman, MT	USA