Subject: Re: memory tester shows up swap/page tuning bug [was Re: BUFFERCACHE,
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: John S. Dyson <toor@dyson.iquest.net>
List: tech-kern
Date: 09/15/1996 20:29:45
> 
> I've looked at the 4.4-Lite2 VM changes and nothing leaps out as being
> related to this.   Does anyone (Mike Hibler, perhaps, or any of the
> FreeBSD people) recognize these symptoms at all?  It's a very annoying
> bug, to say the least....
> 

Try this.  Sleeping on lbolt is a bit bogus.  Waking up on vm_pages_needed
is likely more correct, with a timeout of some reasonable amount of time.
(I don't know what the hz variable is on NetBSD, so I just filled in a
number.)  No guarantees -- this fix (if I think what the problem is)
is not quite correct.  A correct fix is much much more complex :-).

Good luck!!!

*** vm_pageout.c	Mon Feb  5 07:26:54 1996
--- vm_pageout.c.new	Sun Sep 15 20:19:18 1996
***************
*** 325,333 ****
  		 * FAIL on a write is interpreted to mean a resource
  		 * shortage, so we put pause for awhile and try again.
  		 * XXX could get stuck here.
  		 */
! 		(void) tsleep((caddr_t)&lbolt, PZERO|PCATCH, "pageout", 0);
  		break;
  	}
  	case VM_PAGER_FAIL:
  	case VM_PAGER_ERROR:
--- 325,334 ----
  		 * FAIL on a write is interpreted to mean a resource
  		 * shortage, so we put pause for awhile and try again.
  		 * XXX could get stuck here.
  		 */
! 		(void) tsleep((caddr_t)&vm_pages_needed,
! 			PZERO|PCATCH, "pageout", 100);
  		break;
  	}
  	case VM_PAGER_FAIL:
  	case VM_PAGER_ERROR: