freebsd-dev/sys/vm
Alan Cox cf4682ae23 Eliminate the reactivation of cached pages in vm_fault_prefault() and
vm_map_pmap_enter() unless the caller is madvise(MADV_WILLNEED).  With
the exception of calls to vm_map_pmap_enter() from
madvise(MADV_WILLNEED), vm_fault_prefault() and vm_map_pmap_enter()
are both used to create speculative mappings.  Thus, always
reactivating cached pages is a mistake.  In principle, cached pages
should only be reactivated by an actual access.  Otherwise, the
following misbehavior can occur.  On a hard fault for a text page the
clustering algorithm fetches not only the required page but also
several of the adjacent pages.  Now, suppose that one or more of the
adjacent pages are never accessed.  Ultimately, these unused pages
become cached pages through the efforts of the page daemon.  However,
the next activation of the executable reactivates and maps these
unused pages.  Consequently, they are never replaced.  In effect, they
become pinned in memory.
2007-05-22 04:45:59 +00:00
..
default_pager.c /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
device_pager.c Replace PG_BUSY with VPO_BUSY. In other words, changes to the page's 2006-10-22 04:28:14 +00:00
memguard.c Improve memguard a bit: 2005-12-30 11:45:07 +00:00
memguard.h Improve memguard a bit: 2005-12-30 11:45:07 +00:00
phys_pager.c Minor typo fix, noticed while I was going through *_pager.c files. 2007-04-10 12:34:51 +00:00
pmap.h Complete the transition from pmap_page_protect() to pmap_remove_write(). 2006-08-01 19:06:06 +00:00
redzone.c Add buffer corruption protection (RedZone) for kernel's malloc(9). 2006-01-31 11:09:21 +00:00
redzone.h Add buffer corruption protection (RedZone) for kernel's malloc(9). 2006-01-31 11:09:21 +00:00
swap_pager.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
swap_pager.h - Move 'struct swdevt' back into swap_pager.h and expose it to userland. 2007-02-07 17:43:11 +00:00
uma_core.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
uma_dbg.c Improve canonicalization of copyrights. Order copyrights by order of 2005-07-16 09:51:52 +00:00
uma_dbg.h Improve canonicalization of copyrights. Order copyrights by order of 2005-07-16 09:51:52 +00:00
uma_int.h Update stale comment on protecting UMA per-CPU caches: we now use 2007-05-09 22:53:34 +00:00
uma.h Add uma_set_align() interface, which will be called at most once during 2007-02-11 20:13:52 +00:00
vm_contig.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_extern.h Close race between vmspace_exitfree() and exit1() and races between 2006-05-29 21:28:56 +00:00
vm_fault.c Eliminate the reactivation of cached pages in vm_fault_prefault() and 2007-05-22 04:45:59 +00:00
vm_glue.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_init.c Add the vm.exec_map_entries tunable and read-only sysctl, which controls 2005-04-25 19:22:05 +00:00
vm_kern.c When KVA is exhausted, try the vm_lowmem event for the last time before 2007-04-05 20:52:51 +00:00
vm_kern.h The clean_map has been made local to vm_init.c long ago. 2006-11-20 16:23:34 +00:00
vm_map.c Eliminate the reactivation of cached pages in vm_fault_prefault() and 2007-05-22 04:45:59 +00:00
vm_map.h Close race between vmspace_exitfree() and exit1() and races between 2006-05-29 21:28:56 +00:00
vm_meter.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_mmap.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_object.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_object.h Eliminate OBJ_WRITEABLE. It hasn't been used in a long time. 2006-07-21 06:40:29 +00:00
vm_page.c - rename VMCNT_DEC to VMCNT_SUB to reflect the count argument. 2007-05-20 22:33:42 +00:00
vm_page.h Define every architecture as either VM_PHYSSEG_DENSE or 2007-05-05 19:50:28 +00:00
vm_pageout.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_pageout.h /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
vm_pageq.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm_pager.c Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
vm_pager.h Update some comments to reflect the change from spl-based to lock-based 2005-05-18 22:08:52 +00:00
vm_param.h Correct two comments. 2007-04-19 04:52:47 +00:00
vm_unix.c /* -> /*- for license, minor formatting changes 2005-01-07 02:29:27 +00:00
vm_zeroidle.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vm.h Retire debug.mpsafevm. None of the architectures supported in CVS require 2006-07-21 23:22:49 +00:00
vnode_pager.c - define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating 2007-05-18 07:10:50 +00:00
vnode_pager.h Move the body of vop_stdcreatevobject() over to the vnode_pager under 2005-01-24 21:21:59 +00:00