Date: Sat, 19 Apr 2003 11:55:38 -0700 From: Terry Lambert <tlambert2@mindspring.com> To: Lucky Green <shamrock@cypherpunks.to> Cc: freebsd-current@FreeBSD.ORG Subject: Re: Broken memory management on system with no swap Message-ID: <3EA19BAA.C133A3DC@mindspring.com> References: <000501c30682$4e5e64b0$6601a8c0@VAIO650>
next in thread | previous in thread | raw e-mail | index | archive | help
Lucky Green wrote: > There appears to be a memory management bug that affects systems without > swap files. Processes are killed off due to the server being "out of > swap space" even though top shows some 800MB of "inactive" memory > available. > > Apr 18 18:13:25 pakastelohi kernel: swap_pager_getswapspace: failed This is generally an attempt to get a swap mapping for backing store for the process. It could be that all your "inactive" memory has been spoken for. > I suspect that for some reason memory listed as "inactive" by top is not > being correctly allocated to new processes when no swapfile is > available, since the errors do not appear until memory listed as "free" > has dropped to about 1.5-3k. If you had provided a traceback, I would guess that this happened as a call from swap_pager_reserve(), as opposed to a call from swap_pager_strategy() or swap_pager_putpages(). This can only happen if you are using an md device; are you using an md device (ramdisk)? If so: cut it out, or make sure the MD_RESERVE bit is not set. Probably the correct thing to do is to remove the reference to swap_pager_reserve() in md (and make it use the abstract interface) and remove the reference to swap_pager_putpages() in default_pager.c default_pager_putpages() (and make it use the abstract interface *). * All other references in the system are made through struct pagerops element dereferences. If you are using md, you could probably get away with replacing the swap pager reference with a phys pager reference; same for the default pager's reference. You might even want to consider making the pagertab[] a result of a linker set, instead of a statically declared thing in vm_pager.c, and making the swap_pager completely optional to the system... -- Terry
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3EA19BAA.C133A3DC>