NetBSD/sys/uvm
atatat 94ef8e0795 Add an implementation of forward merging of new map entries. Most new
allocations can be merged either forwards or backwards, meaning no new
entries will be added to the list, and some can even be merged in both
directions, resulting in a surplus entry.

This code typically reduces the number of map entries in the
kernel_map by an order of magnitude or more.  It also makes possible
recovery from the pathological case of "5000 processes created and
then killed", which leaves behind a large number of map entries.

The only forward merge case not covered is the instance of an amap
that has to be extended backwards (WIP).  Note that this only affects
processes, not the kernel (the kernel doesn't use amaps), and that
merge opportunities like this come up *very* rarely, if at all.  Eg,
after being up for eight days, I see only three failures in this
regard, and even those are most likely due to programs I'm developing
to exercise this case.

Code reviewed by thorpej, matt, christos, mrg, chuq, chuck, perry,
tls, and probably others.  I'd like to thank my mother, the Hollywood
Foreign Press...
2002-10-18 13:18:42 +00:00
..
Makefile a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_amap_i.h In amap_ref, only increment the amap's refcnt after we have established 2002-08-22 23:39:37 +00:00
uvm_amap.c add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to 2002-09-15 16:54:26 +00:00
uvm_amap.h add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to 2002-09-15 16:54:26 +00:00
uvm_anon.c add missing anon lock around call to uvm_anon_lockloanpg(). 2002-09-21 06:16:07 +00:00
uvm_anon.h replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}. 2001-05-26 16:32:40 +00:00
uvm_aobj.c In uao_put(), if we wait for the busy page owned by someone else, 2002-05-09 07:04:23 +00:00
uvm_aobj.h a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_bio.c remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
uvm_ddb.h replace vm_map{,_entry}_t with struct vm_map{,_entry} *. 2001-06-02 18:09:08 +00:00
uvm_device.c Merge the gehenna-devsw branch into the trunk. 2002-09-06 13:18:43 +00:00
uvm_device.h
uvm_extern.h encapsulate knowledge of uarea allocation in some new functions. 2002-09-22 07:20:29 +00:00
uvm_fault_i.h a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_fault.c When breaking an loan due to a page fault, check to see if the other 2002-09-02 21:09:50 +00:00
uvm_fault.h introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different 2001-12-31 22:34:39 +00:00
uvm_glue.c encapsulate knowledge of uarea allocation in some new functions. 2002-09-22 07:20:29 +00:00
uvm_glue.h
uvm_init.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_io.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_km.c Garbage collect some leftover (and unneeded) code. OK'ed by chs. 2002-10-05 17:26:06 +00:00
uvm_km.h a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_loan.c when dropping a kernel loan, if this was the last loan-to-kernel but 2002-07-14 23:53:41 +00:00
uvm_loan.h several changes prompted by loaning problems: 2001-11-06 08:07:49 +00:00
uvm_map_i.h add a new flag VM_MAP_DYING, which is set before we start 2002-09-22 07:21:29 +00:00
uvm_map.c Add an implementation of forward merging of new map entries. Most new 2002-10-18 13:18:42 +00:00
uvm_map.h add a new flag VM_MAP_DYING, which is set before we start 2002-09-22 07:21:29 +00:00
uvm_meter.c add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_mmap.c #if 0 the call to uvm_map_checkprot() in sys_munmap() -- it's not documented, 2002-09-27 19:13:29 +00:00
uvm_object.h count aobj pages (most notably kernel stack pages) as anon pages 2002-06-20 15:05:29 +00:00
uvm_page_i.h a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_page.c remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
uvm_page.h a whole bunch of changes to improve performance and robustness under load: 2001-09-15 20:36:31 +00:00
uvm_pager_i.h remove trailing whitespace. 2001-05-25 04:06:11 +00:00
uvm_pager.c uao_find_swslot()'s second argument is in units of pages, not bytes. 2002-10-01 07:52:30 +00:00
uvm_pager.h remove PGO_WEAK, it isn't needed anymore. 2002-03-25 02:08:09 +00:00
uvm_param.h add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_pdaemon.c count aobj pages (most notably kernel stack pages) as anon pages 2002-06-20 15:05:29 +00:00
uvm_pdaemon.h remove trailing whitespace. 2001-05-25 04:06:11 +00:00
uvm_pglist.c Big cleanup and speed improvements to pglist_alloc code: 2002-06-27 18:05:29 +00:00
uvm_pglist.h use the correct symbol for multi-include protection. 2001-08-25 20:37:46 +00:00
uvm_pmap.h add pmap_remove_all() hook (empty on most platforms so far). 2002-09-22 07:17:08 +00:00
uvm_prot.h remove trailing whitespace. 2001-05-25 04:06:11 +00:00
uvm_stat.c add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_stat.h Include <sys/kernel.h> if UVMHIST is defined - the "cold" variable is 2002-03-05 05:45:54 +00:00
uvm_swap.c remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
uvm_swap.h Move swapctl(SWAP_STATS) implementation to a separate function called 2002-03-18 11:43:01 +00:00
uvm_unix.c Make the coredump routine exec-format/emulation specific. Split 2001-12-08 00:35:25 +00:00
uvm_user.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_vnode.c Merge the gehenna-devsw branch into the trunk. 2002-09-06 13:18:43 +00:00
uvm.h Protect "struct uvm" with _KERNEL. 2002-09-15 01:01:32 +00:00