freebsd-nq/sys/vm
Mark Johnston ec492b13f1 Add a small allocator for exec_map entries.
Upon each execve, we allocate a KVA range for use in copying data to the
new image. Pages must be faulted into the range, and when the range is
freed, the backing pages are freed and their mappings are destroyed. This
is a lot of needless overhead, and the exec_map management becomes a
bottleneck when many CPUs are executing execve concurrently. Moreover, the
number of available ranges is fixed at 16, which is insufficient on large
systems and potentially excessive on 32-bit systems.

The new allocator reduces overhead by making exec_map allocations
persistent. When a range is freed, pages backing the range are marked clean
and made easy to reclaim. With this change, the exec_map is sized based on
the number of CPUs.

Reviewed by:	kib
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D8921
2017-01-05 01:44:12 +00:00
..
_vm_radix.h During vm_page_cache()'s call to vm_radix_insert(), if vm_page_alloc() was 2016-12-01 17:26:37 +00:00
default_pager.c Provide introductory description of the default pager. 2016-12-14 23:36:32 +00:00
device_pager.c Add a new populate() pager method and extend device pager ops vector 2016-12-08 11:26:11 +00:00
memguard.c
memguard.h
phys_pager.c Implement the populate() pager method for phys pager. 2016-12-08 11:35:53 +00:00
pmap.h Various changes to pmap_ts_referenced() 2016-09-10 16:49:25 +00:00
redzone.c
redzone.h
sg_pager.c
swap_pager.c Add a page queue for holding dirty anonymous unswappable pages. 2017-01-03 00:05:44 +00:00
swap_pager.h Add a page queue for holding dirty anonymous unswappable pages. 2017-01-03 00:05:44 +00:00
uma_core.c Print flags in hex instead of decimal. 2017-01-02 16:50:52 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h
uma.h
vm_domain.c Remove cpu_spinwait after seq_consistent. 2016-12-30 06:26:17 +00:00
vm_domain.h
vm_extern.h
vm_fault.c Fix two similar bugs in the populate vm_fault() code. 2016-12-30 18:55:33 +00:00
vm_glue.c
vm_init.c Add a small allocator for exec_map entries. 2017-01-05 01:44:12 +00:00
vm_kern.c Add a small allocator for exec_map entries. 2017-01-05 01:44:12 +00:00
vm_kern.h Add a small allocator for exec_map entries. 2017-01-05 01:44:12 +00:00
vm_map.c Style fixes for vm_map_insert(). 2017-01-01 18:49:46 +00:00
vm_map.h
vm_meter.c Remove redundancy in vmtotal(). 2016-12-26 19:29:04 +00:00
vm_mmap.c Remove most of the code for implementing PG_CACHED pages. (This change does 2016-11-15 18:22:50 +00:00
vm_object.c Improve vm_object_scan_all_shadowed() to also check swap backing objects. 2016-12-18 20:56:14 +00:00
vm_object.h Eliminate every mention of PG_CACHED pages from the comments in the machine- 2016-12-12 17:47:09 +00:00
vm_page.c Move bogus_page declaration to vm_page.h and initialization to vm_page.c. 2017-01-04 22:27:19 +00:00
vm_page.h Move bogus_page declaration to vm_page.h and initialization to vm_page.c. 2017-01-04 22:27:19 +00:00
vm_pageout.c Add a page queue for holding dirty anonymous unswappable pages. 2017-01-03 00:05:44 +00:00
vm_pageout.h
vm_pager.c Move bogus_page declaration to vm_page.h and initialization to vm_page.c. 2017-01-04 22:27:19 +00:00
vm_pager.h Add a new populate() pager method and extend device pager ops vector 2016-12-08 11:26:11 +00:00
vm_param.h
vm_phys.c
vm_phys.h
vm_radix.c Previously, vm_radix_remove() would panic if the radix trie didn't 2016-12-08 04:29:29 +00:00
vm_radix.h Previously, vm_radix_remove() would panic if the radix trie didn't 2016-12-08 04:29:29 +00:00
vm_reserv.c Relax the object type restrictions on vm_page_alloc_contig(). Specifically, 2016-12-28 18:32:13 +00:00
vm_reserv.h Relax the object type restrictions on vm_page_alloc_contig(). Specifically, 2016-12-28 18:32:13 +00:00
vm_unix.c
vm.h
vnode_pager.c Fix assertion that checks that pages are consecutive to properly 2017-01-04 22:31:09 +00:00
vnode_pager.h