freebsd-dev/sys/vm
Konstantin Belousov 449c2e92c9 Split the pagequeues per NUMA domains, and split pageademon process
into threads each processing queue in a single domain.  The structure
of the pagedaemons and queues is kept intact, most of the changes come
from the need for code to find an owning page queue for given page,
calculated from the segment containing the page.

The tie between NUMA domain and pagedaemon thread/pagequeue split is
rather arbitrary, the multithreaded daemon could be allowed for the
single-domain machines, or one domain might be split into several page
domains, to further increase concurrency.

Right now, each pagedaemon thread tries to reach the global target,
precalculated at the start of the pass.  This is not optimal, since it
could cause excessive page deactivation and freeing.  The code should
be changed to re-check the global page deficit state in the loop after
some number of iterations.

The pagedaemons reach the quorum before starting the OOM, since one
thread inability to meet the target is normal for split queues.  Only
when all pagedaemons fail to produce enough reusable pages, OOM is
started by single selected thread.

Launder is modified to take into account the segments layout with
regard to the region for which cleaning is performed.

Based on the preliminary patch by jeff, sponsored by EMC / Isilon
Storage Division.

Reviewed by:	alc
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
2013-08-07 16:36:38 +00:00
..
_vm_radix.h
default_pager.c
device_pager.c
memguard.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
memguard.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
phys_pager.c
pmap.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
redzone.c
redzone.h
sg_pager.c
swap_pager.c When swap pager allocates metadata in the pagedaemon context, allow it 2013-07-11 20:33:57 +00:00
swap_pager.h
uma_core.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
uma_dbg.c - Add a per-zone lock for zones without kegs. 2013-06-20 19:08:12 +00:00
uma_dbg.h
uma_int.h Since r251709 a slab no longer use 8-bit indicies to manage items, 2013-07-24 06:13:00 +00:00
uma.h - Resolve bucket recursion issues by passing a cookie with zone flags 2013-06-26 00:57:38 +00:00
vm_extern.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_fault.c Revert r253939: 2013-08-05 08:55:35 +00:00
vm_glue.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_init.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_kern.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_kern.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_map.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_map.h Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_meter.c
vm_mmap.c Fix previous commit when option RACCT is not used. 2013-07-22 22:16:47 +00:00
vm_object.c Replace kernel virtual address space allocation with vmem. This provides 2013-08-07 06:21:20 +00:00
vm_object.h Never remove user-wired pages from an object when doing 2013-07-11 05:47:26 +00:00
vm_page.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_page.h Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_pageout.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_pageout.h
vm_pager.c - Add a general purpose resource allocator, vmem, from NetBSD. It was 2013-06-28 03:51:20 +00:00
vm_pager.h - Add a general purpose resource allocator, vmem, from NetBSD. It was 2013-06-28 03:51:20 +00:00
vm_param.h Unbreak sysctl ABI changes introduced in r253662 2013-07-29 18:48:51 +00:00
vm_phys.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_phys.h Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm_radix.c To reduce the amount of arithmetic performed in the various radix tree 2013-05-11 18:01:41 +00:00
vm_radix.h
vm_reserv.c Refactor vm_page_alloc()'s interactions with vm_reserv_alloc_page() and 2013-05-12 16:50:18 +00:00
vm_reserv.h Refactor vm_page_alloc()'s interactions with vm_reserv_alloc_page() and 2013-05-12 16:50:18 +00:00
vm_unix.c
vm_zeroidle.c Split the pagequeues per NUMA domains, and split pageademon process 2013-08-07 16:36:38 +00:00
vm.h rename scheduler->swapper and SI_SUB_RUN_SCHEDULER->SI_SUB_LAST 2013-07-24 09:45:31 +00:00
vnode_pager.c - Correct a stale comment. We don't have vclean() anymore. The work is 2013-07-23 22:52:38 +00:00
vnode_pager.h