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... -- TerryReceived on Sat Apr 19 2003 - 09:56:58 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:04 UTC