freebsd-dev/sys/vm
Andrew Gallatin 8b0dafdb2f vm: implement vm_page_reclaim_contig_domain_ext()
Implement vm_page_reclaim_contig_domain_ext() to reclaim multiple
contiguous regions at once.  This makes it more efficient for users
that need multiple contiguous regions to reclaim those regions
efficiently.

This is needed because callers like ktls may need to reclaim many
contiguous regions, and each scan of physical memory can take
multiple seconds on a large memory machine (order of 100GB of
RMA).  Rather than modifying the core algorithm, I extended
vm_page_reclaim_contig_domain() to take a "desired_runs" argument to
allow the caller to request that it reclaim more than just a single
run. There is no functional change intended for all existing
callers.

The first user for this interface is the ktls code
(https://reviews.freebsd.org/D39421). By reclaiming multiple runs,
ktls goes from consuming hours of CPU to refill its buffer zone to
just seconds or minutes.

Differential Revision: https://reviews.freebsd.org/D39739
Sponsored by:	Netflix
Reviewed by:	alc, jhb, markj
2023-05-09 13:09:34 -04:00
..
_vm_phys.h
_vm_radix.h
device_pager.c
memguard.c
memguard.h
phys_pager.c vm: fix a number of functions to match the expected prototypes 2023-04-25 19:58:18 +02:00
pmap.h
redzone.c
redzone.h
sg_pager.c vm: fix a number of functions to match the expected prototypes 2023-04-25 19:58:18 +02:00
swap_pager.c vm: fix a number of functions to match the expected prototypes 2023-04-25 19:58:18 +02:00
swap_pager.h Make swap_pager_freespace() global 2022-12-09 14:15:37 +02:00
uma_core.c uma: Never pass cache zones to memguard 2022-10-19 14:36:36 -04:00
uma_dbg.c
uma_dbg.h
uma_int.h
uma.h
vm_domainset.c
vm_domainset.h
vm_dumpset.h Fix various places which cast a pointer to a vm_paddr_t or vice versa. 2022-10-03 16:10:41 -07:00
vm_extern.h kmem_malloc/free: Use void * instead of vm_offset_t for kernel pointers. 2022-09-22 15:09:19 -07:00
vm_fault.c vm: add unlocked page lookup before trying vm_fault_soft_fast 2023-03-25 22:14:59 +00:00
vm_glue.c vm: ansify 2023-02-13 18:23:21 +00:00
vm_init.c kmem_malloc/free: Use void * instead of vm_offset_t for kernel pointers. 2022-09-22 15:09:19 -07:00
vm_kern.c kmem_malloc/free: Use void * instead of vm_offset_t for kernel pointers. 2022-09-22 15:09:19 -07:00
vm_kern.h
vm_map.c amd64: fix PKRU and swapout interaction 2023-04-15 02:53:59 +03:00
vm_map.h
vm_meter.c
vm_mmap.c
vm_object.c Drop space in "vm object" lock name to improve wchan 2023-02-15 08:31:17 -05:00
vm_object.h vm: add VM_OBJECT_UNLOCK 2023-03-11 11:08:21 +00:00
vm_page.c vm: implement vm_page_reclaim_contig_domain_ext() 2023-05-09 13:09:34 -04:00
vm_page.h vm: implement vm_page_reclaim_contig_domain_ext() 2023-05-09 13:09:34 -04:00
vm_pageout.c vm: reduce lock contention when processing vm batchqueues 2022-12-14 14:34:07 -05:00
vm_pageout.h protosw: retire pr_drain and use EVENTHANDLER(9) directly 2022-08-17 11:50:31 -07:00
vm_pagequeue.h vm: centralize VM_BATCHQUEUE_SIZE definition 2023-01-21 14:30:00 -05:00
vm_pager.c vm: fix a number of functions to match the expected prototypes 2023-04-25 19:58:18 +02:00
vm_pager.h vm_pager: add method to veto page allocation 2022-12-09 14:15:37 +02:00
vm_param.h
vm_phys.c
vm_phys.h
vm_radix.c
vm_radix.h
vm_reserv.c
vm_reserv.h
vm_swapout_dummy.c
vm_swapout.c
vm_unix.c
vm.h vm/vm.h: cleanup 2022-09-17 11:58:52 +03:00
vnode_pager.c vnode_pager_input: return runningbufspace back 2023-03-26 00:55:29 +02:00
vnode_pager.h