freebsd-nq/sys/vm
Konstantin Belousov f425ab8e50 Replace global swhash in swap pager with per-object trie to track swap
blocks assigned to the object pages.

- The global swhash_mtx is removed, trie is synchronized by the
  corresponding object lock.
- The swp_pager_meta_free_all() function used during object
  termination is optimized by only looking at the trie instead of
  having to search whole hash for the swap blocks owned by the object.
- On swap_pager_swapoff(), instead of iterating over the swhash,
  global object list have to be inspected. There, we have to ensure
  that we do see valid trie content if we see that the object type is
  swap.
Sizing of the swblk zone is same as for swblock zone, each swblk maps
SWAP_META_PAGES pages.

Proposed by:	alc
Reviewed by:	alc, markj (previous version)
Tested by:	alc, pho (previous version)
Sponsored by:	The FreeBSD Foundation
MFC after:	1 month
Differential revision:	https://reviews.freebsd.org/D11435
2017-08-25 23:13:21 +00:00
..
_vm_radix.h Add pctrie_init() and vm_radix_init() to initialize generic pctrie and 2017-07-19 20:52:47 +00:00
default_pager.c Provide introductory description of the default pager. 2016-12-14 23:36:32 +00:00
device_pager.c All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00
memguard.c All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00
memguard.h
phys_pager.c Implement the populate() pager method for phys pager. 2016-12-08 11:35:53 +00:00
pmap.h Add support for pmap_enter(..., psind=1) to the amd64 pmap. In other words, 2017-07-23 06:33:58 +00:00
redzone.c
redzone.h
sg_pager.c All these files need sys/vmmeter.h, but now they got it implicitly 2017-04-17 17:07:00 +00:00
swap_pager.c Replace global swhash in swap pager with per-object trie to track swap 2017-08-25 23:13:21 +00:00
swap_pager.h Remove unused function swap_pager_isswapped(). 2017-07-19 17:28:46 +00:00
uma_core.c When we are in UMA_STARTUP use startup_alloc() for any zone, not for 2017-06-08 21:33:19 +00:00
uma_dbg.c Fix memguard(9) in kernels with INVARIANTS enabled. 2016-06-01 22:31:35 +00:00
uma_dbg.h Move uma_dbg_alloc() and uma_dbg_free() into uma_core.c, which allows 2016-02-03 22:02:36 +00:00
uma_int.h uma: eliminate uk_slabsize field 2017-03-11 16:35:36 +00:00
uma.h Update a comment to reflect reality. 2017-03-13 18:45:25 +00:00
vm_domain.c Remove cpu_spinwait after seq_consistent. 2016-12-30 06:26:17 +00:00
vm_domain.h Add an initial NUMA affinity/policy configuration for threads and processes. 2015-07-11 15:21:37 +00:00
vm_extern.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_fault.c Address a compilation warning on some architectures that was introduced 2017-07-23 19:35:14 +00:00
vm_glue.c Modify vm_page_grab_pages() to handle VM_ALLOC_NOWAIT. 2017-08-11 16:29:22 +00:00
vm_init.c Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_kern.c Add vm_page_alloc_after(). 2017-08-15 16:39:49 +00:00
vm_kern.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_map.c Disable stack growth when accessed by AIO daemons. 2017-07-19 19:00:32 +00:00
vm_map.h Treat the addr argument for mmap(2) request without MAP_FIXED flag as 2017-06-28 04:02:36 +00:00
vm_meter.c Emulate pre-r317061 ABI. 2017-05-02 18:40:41 +00:00
vm_mmap.c Treat the addr argument for mmap(2) request without MAP_FIXED flag as 2017-06-28 04:02:36 +00:00
vm_object.c Replace global swhash in swap pager with per-object trie to track swap 2017-08-25 23:13:21 +00:00
vm_object.h Replace global swhash in swap pager with per-object trie to track swap 2017-08-25 23:13:21 +00:00
vm_page.c Add vm_page_alloc_after(). 2017-08-15 16:39:49 +00:00
vm_page.h Add vm_page_alloc_after(). 2017-08-15 16:39:49 +00:00
vm_pageout.c Increase the pageout cluster size to 32 pages. 2017-06-24 17:10:33 +00:00
vm_pageout.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_pager.c Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_pager.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm_param.h Commit the 64-bit inode project. 2017-05-23 09:29:05 +00:00
vm_phys.c Ifdef out the unused vm_rr_selectdomain(). 2017-02-02 17:44:55 +00:00
vm_phys.h Remove support for idle page zeroing. 2016-09-03 20:38:13 +00:00
vm_radix.c Add pctrie_init() and vm_radix_init() to initialize generic pctrie and 2017-07-19 20:52:47 +00:00
vm_radix.h Add pctrie_init() and vm_radix_init() to initialize generic pctrie and 2017-07-19 20:52:47 +00:00
vm_reserv.c Utilize pmap_enter(..., psind=1) in vm_fault_soft_fast() on amd64. (The 2017-07-23 16:28:13 +00:00
vm_reserv.h Utilize pmap_enter(..., psind=1) in vm_fault_soft_fast() on amd64. (The 2017-07-23 16:28:13 +00:00
vm_unix.c Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
vm.h Implement address space guards. 2017-06-24 17:01:11 +00:00
vnode_pager.c Mark pages after EOF as clean after pageout. 2017-07-26 20:07:05 +00:00
vnode_pager.h Mark pages after EOF as clean after pageout. 2017-07-26 20:07:05 +00:00