Subject: CVS commit: syssrc
To: None <source-changes@netbsd.org>
From: Jason R Thorpe <thorpej@netbsd.org>
List: source-changes
Date: 01/29/2001 01:30:48
Module Name:	syssrc
Committed By:	thorpej
Date:		Sun Jan 28 23:30:48 UTC 2001

Modified Files:
	syssrc/sys/uvm: uvm_anon.c uvm_aobj.c uvm_fault.c uvm_map.c
	    uvm_page_i.h uvm_pager.c uvm_pdaemon.c uvm_vnode.c

Log Message:
Page scanner improvements, behavior is actually a bit more like
Mach VM's now.  Specific changes:
- Pages now need not have all of their mappings removed before being
  put on the inactive list.  They only need to have the "referenced"
  attribute cleared.  This makes putting pages onto the inactive list
  much more efficient.  In order to eliminate redundant clearings of
  "refrenced", callers of uvm_pagedeactivate() must now do this
  themselves.
- When checking the "modified" attribute for a page (for clearing
  PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on
  the page (saves a potentially expensive pmap operation).
- When scanning the inactive list, if a page is referenced, reactivate
  it (this part was actually added in uvm_pdaemon.c,v 1.27).  This
  now works properly now that pages on the inactive list are allowed to
  have mappings.
- When scanning the inactive list and considering a page for freeing,
  remove all mappings, and then check the "modified" attribute if the
  page is marked PG_CLEAN.
- When scanning the active list, if the page was referenced since its
  last sweep by the scanner, don't deactivate it.  (This part was
  actually added in uvm_pdaemon.c,v 1.28.)

These changes greatly improve interactive performance during
moderate to high memory and I/O load.


To generate a diff of this commit:
cvs rdiff -r1.13 -r1.14 syssrc/sys/uvm/uvm_anon.c
cvs rdiff -r1.37 -r1.38 syssrc/sys/uvm/uvm_aobj.c
cvs rdiff -r1.54 -r1.55 syssrc/sys/uvm/uvm_fault.c
cvs rdiff -r1.88 -r1.89 syssrc/sys/uvm/uvm_map.c
cvs rdiff -r1.15 -r1.16 syssrc/sys/uvm/uvm_page_i.h
cvs rdiff -r1.38 -r1.39 syssrc/sys/uvm/uvm_pager.c
cvs rdiff -r1.28 -r1.29 syssrc/sys/uvm/uvm_pdaemon.c
cvs rdiff -r1.41 -r1.42 syssrc/sys/uvm/uvm_vnode.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.