freebsd-dev/sys/arm
Andrew Gallatin 542970fa2d Remove IPSEC from GENERIC due to performance issues
Having IPSEC compiled into the kernel imposes a non-trivial
performance penalty on multi-threaded workloads due to IPSEC
refcounting. In my benchmarks of multi-threaded UDP
transmit (connected sockets), I've seen a roughly 20% performance
penalty when the IPSEC option is included in the kernel (16.8Mpps
vs 13.8Mpps with 32 senders on a 14 core / 28 HTT Xeon
2697v3)). This is largely due to key_addref() incrementing and
decrementing an atomic reference count on the default
policy. This cause all CPUs to stall on the same cacheline, as it
bounces between different CPUs.

Given that relatively few users use ipsec, and that it can be
loaded as a module, it seems reasonable to ask those users to
load the ipsec module so as to avoid imposing this penalty on the
GENERIC kernel. Its my hope that this will make FreeBSD look
better in "out of the box" benchmark comparisons with other
operating systems.

Many thanks to ae for fixing auto-loading of ipsec.ko when
ifconfig tries to configure ipsec, and to cy for volunteering
to ensure the the racoon ports will load the ipsec.ko module

Reviewed by:	cem, cy, delphij, gnn, jhb, jpaetzel
Differential Revision:	https://reviews.freebsd.org/D20163
2019-05-09 22:38:15 +00:00
..
allwinner arm: allwinner: a10: Correct pin functions 2019-04-27 14:59:08 +00:00
altera/socfpga arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
amlogic/aml8726 arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
annapurna/alpine arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
arm Only set up the interrupts that will actually be used in arm generic_timer. 2019-04-17 15:27:11 +00:00
broadcom/bcm2835 Move the reporting of spurious interrupts under bootverbose control, because 2019-04-21 17:39:01 +00:00
cloudabi32 Remove sv_pagesize, originally introduced with r100384. 2019-03-01 16:16:38 +00:00
conf Remove IPSEC from GENERIC due to performance issues 2019-05-09 22:38:15 +00:00
freescale arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
include Use named field's initializer when constructing <foo>_platform structure. 2019-03-19 14:32:54 +00:00
mv arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
nvidia arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
qemu arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
ralink arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
rockchip arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
samsung/exynos arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
ti arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
versatile arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
xilinx arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00