freebsd-dev/sys/vm
Matthew Dillon b9b7a4be90 Add a sequential iteration optimization to vm_object_page_clean(). This
moderately improves msync's and VM object flushing for objects containing
randomly dirtied pages (fsync(), msync(), filesystem update daemon),
and improves cpu use for small-ranged sequential msync()s in the face of
very large mmap()ings from O(N) to O(1) as might be performed by a database.

A sysctl, vm.msync_flush_flag, has been added and defaults to 3 (the two
committed optimizations are turned on by default).  0 will turn off both
optimizations.

This code has already been tested under stable and is one in a series of
memq / vp->v_dirtyblkhd / fsync optimizations to remove O(N^2) restart
conditions that will be coming down the pipe.

MFC after:	3 days
2002-03-06 02:42:56 +00:00
..
default_pager.c With Alfred's permission, remove vm_mtx in favor of a fine-grained approach 2001-07-04 16:20:28 +00:00
device_pager.c With Alfred's permission, remove vm_mtx in favor of a fine-grained approach 2001-07-04 16:20:28 +00:00
phys_pager.c With Alfred's permission, remove vm_mtx in favor of a fine-grained approach 2001-07-04 16:20:28 +00:00
pmap.h Fix a horribly suboptimal algorithm in the vm_daemon. 2002-02-27 18:03:02 +00:00
swap_pager.c Use thread0.td_ucred instead of proc0.p_ucred. This change is cosmetic 2002-02-27 19:18:10 +00:00
swap_pager.h - If swap metadata does not fit into the KVM, reduce the number of 2000-12-13 10:01:00 +00:00
vm_contig.c Call vm_pageq_remove_nowakeup() rather than duplicating it. 2002-03-03 22:36:14 +00:00
vm_extern.h Pre-KSE/M3 commit. 2002-02-07 20:58:47 +00:00
vm_fault.c Changes to make the OOM killer much more effective: 2002-02-19 18:34:02 +00:00
vm_glue.c Remove unused variable (td) 2002-02-26 01:01:37 +00:00
vm_init.c Move most of the kernel submap initialization code, including the 2001-08-22 04:07:27 +00:00
vm_kern.c vm/vm_kern.c: rate limit (to once per second) diagnostic printf when 2001-12-01 00:21:30 +00:00
vm_kern.h Introduce numerous SMP friendly changes to the mbuf allocator. Namely, 2001-06-22 06:35:32 +00:00
vm_map.c Fix a race with free'ing vmspaces at process exit when vmspaces are 2002-02-05 21:23:05 +00:00
vm_map.h Fix a race with free'ing vmspaces at process exit when vmspaces are 2002-02-05 21:23:05 +00:00
vm_meter.c In a threaded world, differnt priorirites become properties of 2002-02-11 20:37:54 +00:00
vm_mmap.c Simple p_ucred -> td_ucred changes to start using the per-thread ucred 2002-02-27 18:32:23 +00:00
vm_object.c Add a sequential iteration optimization to vm_object_page_clean(). This 2002-03-06 02:42:56 +00:00
vm_object.h Implement kern.maxvnodes. adjusting kern.maxvnodes now actually has a 2001-10-26 00:08:05 +00:00
vm_page.c o Create vm_pageq_enqueue() to encapsulate code that is duplicated time 2002-03-04 18:55:26 +00:00
vm_page.h o Create vm_pageq_enqueue() to encapsulate code that is duplicated time 2002-03-04 18:55:26 +00:00
vm_pageout.c Fix a horribly suboptimal algorithm in the vm_daemon. 2002-02-27 18:03:02 +00:00
vm_pageout.h Changes to make the OOM killer much more effective: 2002-02-19 18:34:02 +00:00
vm_pageq.c o Create vm_pageq_enqueue() to encapsulate code that is duplicated time 2002-03-04 18:55:26 +00:00
vm_pager.c * Move bswlist declaration and initialization from kern/vfs_bio.c to 2002-03-05 18:20:58 +00:00
vm_pager.h With Alfred's permission, remove vm_mtx in favor of a fine-grained approach 2001-07-04 16:20:28 +00:00
vm_param.h Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader 2001-10-10 23:06:54 +00:00
vm_swap.c Simple p_ucred -> td_ucred changes to start using the per-thread ucred 2002-02-27 18:32:23 +00:00
vm_unix.c Garbage-collect options ACPI_NO_ENABLE_ON_BOOT, AML_DEBUG, BLEED, 2002-02-15 13:16:11 +00:00
vm_zeroidle.c In a threaded world, differnt priorirites become properties of 2002-02-11 20:37:54 +00:00
vm_zone.c Back out all the pmap related stuff I've touched over the last few days. 2002-02-27 09:51:33 +00:00
vm_zone.h Add a zdestroy() function to the zone allocator. This is needed for the 2001-08-04 20:17:05 +00:00
vm.h Remove a parameter name from a prototype. 2002-01-25 21:33:10 +00:00
vnode_pager.c Simple p_ucred -> td_ucred changes to start using the per-thread ucred 2002-02-27 18:32:23 +00:00
vnode_pager.h vnode_pager_freepage() is really vm_page_free() in disguise, 2001-04-19 06:18:23 +00:00