Subject: Re: memory tester shows up swap/page tuning bug [was Re: BUFFERCACHE,
To: None <firstname.lastname@example.org, jonathan@DSG.Stanford.EDU>
From: Wolfgang Solfrank <email@example.com>
Date: 09/16/1996 15:25:02
> If I understand John's patch, it works because it's re-invoking the
> the pageout daemon anytime a low free-pages condition is signalled (by
> a wakeup on the relevant variable, e.g., from swap_pages_iodone(),
> after a pageout to swap backing store completes.) This happens
> "enough" to stop the system ever running completely out of free pages,
> thus avoiding the freeze behaviour.
Well, actually it's simpler than this. Without John's patch the sleep is for
one second. With John's patch it sleeps till the next time that vm_pages_needed
is wakeup'ed. This may be done by something signalling low free-pages condition.
The reasons that the pageout sleeps at the place that gets modified by John's
patch is some resource shortage in a pager. Now if the resource shortage is in
the swap pager (which is probably the case in your frozen situation), the
finishing of an I/O operation in the swap pager will call swap_pager_iodone
(in swap_pager.c) which does a wakeup on vm_pages_needed, so voila, the pageout
daemon gets woken up.
ws@TooLs.DE (Wolfgang Solfrank, TooLs GmbH) +49-228-985800