freebsd-dev/sys/conf
Attilio Rao 774d251d99 Sync back vmcontention branch into HEAD:
Replace the per-object resident and cached pages splay tree with a
path-compressed multi-digit radix trie.
Along with this, switch also the x86-specific handling of idle page
tables to using the radix trie.

This change is supposed to do the following:
- Allowing the acquisition of read locking for lookup operations of the
  resident/cached pages collections as the per-vm_page_t splay iterators
  are now removed.
- Increase the scalability of the operations on the page collections.

The radix trie does rely on the consumers locking to ensure atomicity of
its operations.  In order to avoid deadlocks the bisection nodes are
pre-allocated in the UMA zone.  This can be done safely because the
algorithm needs at maximum one new node per insert which means the
maximum number of the desired nodes is the number of available physical
frames themselves.  However, not all the times a new bisection node is
really needed.

The radix trie implements path-compression because UFS indirect blocks
can lead to several objects with a very sparse trie, increasing the number
of levels to usually scan.  It also helps in the nodes pre-fetching by
introducing the single node per-insert property.

This code is not generalized (yet) because of the possible loss of
performance by having much of the sizes in play configurable.
However, efforts to make this code more general and then reusable in
further different consumers might be really done.

The only KPI change is the removal of the function vm_page_splay() which
is now reaped.
The only KBI change, instead, is the removal of the left/right iterators
from struct vm_page, which are now reaped.

Further technical notes broken into mealpieces can be retrieved from the
svn branch:
http://svn.freebsd.org/base/user/attilio/vmcontention/

Sponsored by:	EMC / Isilon storage division
In collaboration with:	alc, jeff
Tested by:	flo, pho, jhb, davide
Tested by:	ian (arm)
Tested by:	andreast (powerpc)
2013-03-18 00:25:02 +00:00
..
files Sync back vmcontention branch into HEAD: 2013-03-18 00:25:02 +00:00
files.amd64 Remove the virtio dependency entry for the VirtIO device drivers. This 2013-03-06 07:17:53 +00:00
files.arm Add __aeabi_memset to libkern, implemented using memset, as clang may 2013-03-16 23:11:55 +00:00
files.i386 Remove the virtio dependency entry for the VirtIO device drivers. This 2013-03-06 07:17:53 +00:00
files.ia64 Hoist the MI compat_freebsd32 files up into files from files.*. 2012-10-25 04:30:48 +00:00
files.mips Merge Perforce changeset 219925 to head: 2013-01-12 15:58:20 +00:00
files.pc98 Disconnect non-MPSAFE SMBFS from the build in preparation for dropping 2012-10-18 12:04:56 +00:00
files.powerpc Add the bus attachment for the embedded EHCI HC. 2012-11-03 21:08:27 +00:00
files.sparc64 Disconnect non-MPSAFE SMBFS from the build in preparation for dropping 2012-10-18 12:04:56 +00:00
kern.mk Introduce a new make variable COMPILER_TYPE that specifies what 2012-09-13 16:00:46 +00:00
kern.post.mk Remove the links: target. It too is homelessly outdated since it 2012-10-25 04:55:04 +00:00
kern.pre.mk Fix LINT build for arm: NOTES defines LDFLAGS by way of a make option 2012-11-29 03:48:39 +00:00
kmod_syms.awk
kmod.mk Split sdhci driver in two parts: sdhci and sdhci_pci. 2012-10-16 01:10:43 +00:00
ldscript.amd64
ldscript.arm Correctly align the unwind tables. Without this clang may incorrectly align 2013-03-10 00:47:19 +00:00
ldscript.i386
ldscript.ia64
ldscript.mips
ldscript.mips.cfe
ldscript.mips.mips64
ldscript.mips.octeon1
ldscript.powerpc
ldscript.powerpc64 Add the .opd section, this is helps booting a profiled kernel. 2012-01-20 18:52:31 +00:00
ldscript.sparc64
Makefile.amd64 Remove duplication and centralize testing of various config(8)ed features. 2012-09-12 14:19:40 +00:00
Makefile.arm The -mno-apcs-frame argument is unavaliable on clang, also ignore it there. 2013-03-17 00:56:17 +00:00
Makefile.i386 Define several extra macros in bsd.sys.mk and sys/conf/kern.pre.mk, to 2012-02-28 18:30:18 +00:00
Makefile.ia64
Makefile.mips Fill out fake preload structure to let userland tools like pmc(3) know 2012-03-15 05:29:51 +00:00
Makefile.pc98 MFi386: r232263 2012-11-10 14:56:35 +00:00
Makefile.powerpc Remove duplication and centralize testing of various config(8)ed features. 2012-09-12 14:19:40 +00:00
Makefile.sparc64
makeLINT.mk Disable INET6 support in modules when building the LINT-NOINET6 kernel. 2012-04-04 21:31:20 +00:00
makeLINT.sed Match the files directive and all the ways to add or subtract options 2011-10-04 17:11:38 +00:00
newvers.sh print compiler version in the kernel banner 2013-02-02 11:58:35 +00:00
NOTES Fix minor spelling error in a comment. 2013-03-14 19:36:20 +00:00
options Re-enable CTL in GENERIC on i386 and amd64, but turn on the CTL disable 2013-03-04 21:18:45 +00:00
options.amd64 Rename the IVY_RNG option to RDRAND_RNG. 2012-09-13 10:12:16 +00:00
options.arm Replace generic ARM11 option with more specific 2012-12-20 04:32:02 +00:00
options.i386 Rename the IVY_RNG option to RDRAND_RNG. 2012-09-13 10:12:16 +00:00
options.ia64 Port the new PV entry allocator from amd64/i386. This allocator has two 2012-10-26 03:02:39 +00:00
options.mips Add basic support for the Ubiquiti EdgeRouter Lite. 2013-01-02 23:17:50 +00:00
options.pc98
options.powerpc Initial support for running FreeBSD on the Nintendo Wii. We're able to 2012-08-21 06:31:26 +00:00
options.sparc64 - While Netra X1 generally show no ill effects when registering a power 2013-03-02 00:37:31 +00:00
systags.sh
WITHOUT_SOURCELESS Move WITHOUT_SOURCELESS_* files to sys/conf/ in order to avoid "universe" 2012-02-12 14:55:27 +00:00
WITHOUT_SOURCELESS_HOST Fix a typo. 2012-02-12 19:29:34 +00:00
WITHOUT_SOURCELESS_UCODE Move WITHOUT_SOURCELESS_* files to sys/conf/ in order to avoid "universe" 2012-02-12 14:55:27 +00:00