OPNsense - FreeBSD source
Find a file
Mark Johnston 1bae9dc584 netmap: Make memory pools NUMA-aware
Each netmap adapter associated with a physical adapter is attached to a
netmap memory pool.  contigmalloc() is used to allocate physically
contiguous memory for the pool, but ideally we would ensure that all
such memory is allocated from the NUMA domain local to the adapter.

Augment netmap's memory pools with a NUMA domain ID, similar to how
IOMMU groups are handled in the Linux port.  That is, when attaching to
a physical adapter, ensure that the associated memory pools are local to
the adapter's associated memory domain, creating new pools as needed.

Some types of ifnets do not have any defined NUMA affinity; in this case
the domain ID in question is the sentinel value -1.

Add a sysctl, dev.netmap.port_numa_affinity, which can be used to enable
the new behaviour.  Keep it disabled by now to avoid surprises in case
netmap applications are relying on zero-copy optimizations to forward
packets between ports belonging to different NUMA domains.

Reviewed by:	vmaffione
MFC after:	2 weeks
Sponsored by:	Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D46666
2024-10-14 13:33:33 +00:00
.cirrus-ci Cirrus-CI: add some timing info on pkg install failure 2021-08-04 15:02:00 -04:00
.github ZTS: Fix summary page creation 2024-10-03 11:42:25 -07:00
bin ps(1): Complete libxo transition 2024-10-13 02:21:46 +08:00
cddl zfs: merge openzfs/zfs@b10992582 2024-10-11 08:43:49 +02:00
contrib capsicum-test: rights are propagated on sctp_peeloff(2) 2024-10-08 20:41:45 -04:00
crypto openssl: Remove the specific version numbers from the instructions. 2024-09-08 09:45:31 -07:00
etc env: Add a handful of test cases. 2024-10-07 23:01:09 +02:00
gnu Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
include ZAP: Align za_name in zap_attribute_t to 8 bytes 2024-10-04 11:06:26 -07:00
kerberos5 Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
lib pf: convert DIOCGETRULESET to netlink 2024-10-10 14:10:41 +02:00
libexec rc/tests: Skip oomprotect tests in a jail 2024-10-14 12:30:23 +02:00
release EC2: Disable floppy and parallel port devices 2024-10-12 22:43:33 -07:00
rescue Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
sbin fdisk: emit deprecation notice when run 2024-10-13 13:52:14 -04:00
secure Update config/build info for OpenSSL 3.0.15 2024-09-07 21:34:18 -07:00
share netmap: Make memory pools NUMA-aware 2024-10-14 13:33:33 +00:00
stand loader: default: Add a default splash screen 2024-10-14 11:27:41 +02:00
sys netmap: Make memory pools NUMA-aware 2024-10-14 13:33:33 +00:00
targets Add targets/pseudo/bootstrap-packages 2024-10-11 14:15:47 -07:00
tests tests: move sysctl_security_jail_children.sh to the right directory 2024-10-13 13:50:22 -07:00
tools Unicode: prepare update to unicode 16 and CLDR 45 2024-10-14 10:43:38 +02:00
usr.bin w(1): fix libxo output being locale dependant 2024-10-14 10:43:38 +02:00
usr.sbin makefs: Record a larger TXG number in the uberblock 2024-10-14 13:14:37 +00:00
.arcconfig arcanist: use FreeBSD/git project repository instead of FreeBSD/svn 2022-08-23 14:16:41 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Cirrus-CI: switch to llvm18 by default 2024-04-07 17:23:25 -04:00
.clang-format clang-format: Minor tweaks 2024-04-30 17:33:43 -04:00
.git-blame-ignore-revs iflib: Ignore fa7045f99c in blame 2024-09-22 10:09:29 +08:00
.gitattributes Remove SVN related Git attributes 2023-12-26 10:28:28 -07:00
.gitignore .gitignore: add sys/*/compile 2024-02-02 09:20:36 -07:00
.mailmap AUTHORS: refresh with recent new contributors 2024-09-24 09:03:05 -07:00
CONTRIBUTING.md openssl: Import OpenSSL 3.0.15. 2024-09-03 20:56:17 -07:00
COPYRIGHT copyright: Bump the copyright date. 2023-12-31 23:15:43 -07:00
LOCKS Update LOCKS for Git 2023-12-26 10:28:25 -07:00
MAINTAINERS man filesystems: fix more xrefs after move to s4 2024-06-27 18:32:05 -06:00
Makefile armv6: Remove support for building armv6 2024-07-12 11:31:53 +00:00
Makefile.inc1 pkgbase: fix incremental generation of packages 2024-10-10 08:48:28 +02:00
Makefile.libcompat Remove residual blank line at start of Makefile 2024-07-15 16:43:39 -06:00
Makefile.sys.inc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
ObsoleteFiles.inc ObsoleteFiles: fix the libmd.so version bump order 2024-09-30 14:59:37 -05:00
README.md vendor/expat: import 2.6.3 2024-09-27 20:21:31 -07:00
RELNOTES RELNOTES: document update of unicode and cldr 2024-10-14 10:57:04 +02:00
UPDATING UPDATING: Note higher-risk than I'd like ciss changes 2024-10-13 23:37:46 -06:00

FreeBSD Source:

This is the top level of the FreeBSD source directory.

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), FreeBSD handbook on building userland, and Handbook for kernels for more information, including setting make(1) variables.

For information on the CPU architectures and platforms supported by FreeBSD, see the FreeBSD website's Platforms page.

For official FreeBSD bootable images, see the release page.

Source Roadmap:

Directory Description
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 Commands and libraries under the GNU General Public License (GPL) or Lesser General Public License (LGPL). Please see gnu/COPYING and gnu/COPYING.LIB 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 (see sys/README.md).
targets Support for experimental DIRDEPS_BUILD
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 FreeBSD Handbook.