FreeBSD src
Go to file
Gleb Smirnoff 756a541279 Allocate pager bufs from UMA instead of 80-ish mutex protected linked list.
o In vm_pager_bufferinit() create pbuf_zone and start accounting on how many
  pbufs are we going to have set.
  In various subsystems that are going to utilize pbufs create private zones
  via call to pbuf_zsecond_create(). The latter calls uma_zsecond_create(),
  and sets a limit on created zone. After startup preallocate pbufs according
  to requirements of all pbuf zones.

  Subsystems that used to have a private limit with old allocator now have
  private pbuf zones: md(4), fusefs, NFS client, smbfs, VFS cluster, FFS,
  swap, vnode pager.

  The following subsystems use shared pbuf zone: cam(4), nvme(4), physio(9),
  aio(4). They should have their private limits, but changing that is out of
  scope of this commit.

o Fetch tunable value of kern.nswbuf from init_param2() and while here move
  NSWBUF_MIN to opt_param.h and eliminate opt_swap.h, that was holding only
  this option.
  Default values aren't touched by this commit, but they probably should be
  reviewed wrt to modern hardware.

This change removes a tight bottleneck from sendfile(2) operation, that
uses pbufs in vnode pager. Other pagers also would benefit from faster
allocation.

Together with:	gallatin
Tested by:	pho
2019-01-15 01:02:16 +00:00
bin Fix an edge case when parsing large numbers which resulted in inconsistent 2019-01-09 09:36:54 +00:00
cddl MFV r342532: 5882 Temporary pool names 2018-12-26 11:03:14 +00:00
contrib Update to ELF Tool Chain r3668 2019-01-10 14:35:23 +00:00
crypto Remove unused sqlite3 bundled with heimdal. 2019-01-09 01:09:42 +00:00
etc netmap: add suite of unit tests 2018-12-31 11:17:58 +00:00
gnu Create crtsavres.o for powerpc builds 2019-01-12 21:29:54 +00:00
include Fix mismatch from r342379. 2018-12-23 20:51:13 +00:00
kerberos5 Use ${SRCTOP}/contrib/com_err/com_err.h instead of the installed com_err.h. 2019-01-14 06:34:54 +00:00
lib o Move zone limit from keg level up to zone level. This means that now 2019-01-15 00:02:06 +00:00
libexec Fix rtld-elf compilation warning for powerpc64 ELFv2 ABI 2019-01-13 02:33:20 +00:00
release Turn off ec2_ephemeralswap for now 2019-01-09 03:55:25 +00:00
rescue rescue: set NO_SHARED in Makefile 2018-11-19 22:18:18 +00:00
sbin pfctl: Fix 'set skip' handling for groups 2019-01-13 05:30:26 +00:00
secure Enable devcryptoeng for OpenSSL. 2018-12-12 21:56:47 +00:00
share Add missing documentation for dev.acpi_ibm.0.mic_led added in r335304 2019-01-12 17:52:52 +00:00
stand Add Dell Chromebook to the list of devices with E820 extmem quirk enabled 2019-01-14 01:30:48 +00:00
sys Allocate pager bufs from UMA instead of 80-ish mutex protected linked list. 2019-01-15 01:02:16 +00:00
targets retire LINKER_FEATURES filter flag 2018-11-12 20:44:22 +00:00
tests pf tests: Test PR 229241 2019-01-13 05:31:53 +00:00
tools Add four kerberos CLI utilities to OptionalObsoleteFiles.inc 2019-01-14 03:13:31 +00:00
usr.bin Fix indentation in ruptime command output for hosts in the "down" state. 2019-01-12 12:57:32 +00:00
usr.sbin This new version of bluetooth-config.sh tries to follow the style of other 2019-01-14 08:23:47 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.gitattributes MK_ZFS -> {MK_ZFS|MK_LOADER_ZFS}, this is so we can diable userland / kernel 2019-01-05 22:45:20 +00:00
.gitignore Ignore _.universe-toolchain file. 2018-07-01 13:50:37 +00:00
COPYRIGHT Happy New Year 2019! 2019-01-01 00:25:25 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS Register a pre-commit review for ipfilter. 2018-12-24 01:12:22 +00:00
Makefile Update comment about 'universe' disk usage 2018-11-10 19:09:48 +00:00
Makefile.inc1 Remove iBCS2: plug a wart missed in r342242 2018-12-19 22:08:51 +00:00
Makefile.libcompat Use ...-freebsd13.0 in -target strings. 2018-11-12 16:55:20 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc Remove iBCS2, part1: userspace 2018-12-19 21:56:54 +00:00
README Import ELF Tool Chain snapshot at r3668 2019-01-10 14:18:11 +00:00
README.md README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
UPDATING Add UPDATING entry for r342635. 2018-12-31 00:15:05 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html