freebsd-nq/sys
Lawrence Stewart ca09d7728b Retire the system-wide, per-reassembly queue segment limit. The mechanism is far
too coarse grained to be useful and the default value significantly degrades TCP
performance on moderate to high bandwidth-delay product paths with non-zero loss
(e.g. 5+Mbps connections across the public Internet often suffer).

Replace the outgoing mechanism with an individual per-queue limit based on the
number of MSS segments that fit into the socket's receive buffer. This should
strike a good balance between performance and the potential for resource
exhaustion when FreeBSD is acting as a TCP receiver. With socket buffer
autotuning (which is enabled by default), the reassembly queue tracks the
socket buffer and benefits too.

As the XXX comment suggests, my testing uncovered some unexpected behaviour
which requires further investigation. By using so->so_rcv.sb_hiwat
instead of sbspace(&so->so_rcv), we allow more segments to be held across both
the socket receive buffer and reassembly queue than we probably should. The
tradeoff is better performance in at least one common scenario, versus a devious
sender's ability to consume more resources on a FreeBSD receiver.

Sponsored by:	FreeBSD Foundation
Reviewed by:	andre, gnn, rpaulo
MFC after:	2 weeks
2010-10-16 07:12:39 +00:00
..
amd64 Update pmap_extract() to handle 1GB page mappings. Some device drivers 2010-10-15 15:23:34 +00:00
arm Remove a device_printf() accidentally left in r213894. 2010-10-15 15:16:36 +00:00
boot mdoc: drop redundant .Pp and .LP calls 2010-10-08 12:40:16 +00:00
bsm
cam Decrease poll interval from 1000 to 100us. This significantly reduces 2010-09-22 05:17:18 +00:00
cddl Pass a format string to panic() and to taskqueue_start_threads(). 2010-10-13 17:13:43 +00:00
compat Remove stale comment. 2010-10-14 19:30:44 +00:00
conf Add three new drivers for fan control and temperature reading on the 2010-10-15 20:08:16 +00:00
contrib Merge ACPICA 20101013. 2010-10-13 21:37:02 +00:00
crypto Change two missed instances of 'retq' in aeskeys_i386.S to 'retl', which 2010-10-13 17:55:53 +00:00
ddb One more use for _SIG_VALID. 2010-07-12 10:18:10 +00:00
dev Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 23:34:31 +00:00
fs Ignore the return value of DE_INTERNALIZE(). 2010-10-13 11:37:39 +00:00
gdb there must be only one SYSINIT with SI_SUB_RUN_SCHEDULER+SI_ORDER_ANY order 2010-09-30 17:05:23 +00:00
geom The canonical way to print __func__ when using KASSERT() is to write 2010-10-13 11:35:59 +00:00
gnu The r184588 changed the layout of struct export_args, causing an ABI 2010-10-10 07:05:47 +00:00
i386 Remove trailing ", " from `sysctl machdep.idle_available' output. 2010-10-12 20:53:12 +00:00
ia64 Fix bogus error message from bus_dmamem_alloc() about incorrect alignment. 2010-09-29 21:53:11 +00:00
isa bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
kern In kern_sigtimedwait(), move initialization code out of process lock, 2010-10-14 08:01:33 +00:00
kgssapi
libkern Make the RPC specific __rpc_inet_ntop() and __rpc_inet_pton() general 2010-09-24 15:01:45 +00:00
mips Converted the remainder of the NIC drivers to use the mii_attach() 2010-10-15 15:00:30 +00:00
modules Now that all previous users of mii_phy_probe() have been converted 2010-10-15 15:46:58 +00:00
net Only hide the ifa and not the tp under #ifdef INET as the tp is needed 2010-10-01 15:14:14 +00:00
net80211 Fix background roaming to actually work in AUTO roaming mode. 2010-10-01 09:18:30 +00:00
netatalk
netgraph When calling panic(), always pass a format string. 2010-10-13 17:21:21 +00:00
netinet Retire the system-wide, per-reassembly queue segment limit. The mechanism is far 2010-10-16 07:12:39 +00:00
netinet6 Purposely tell the compiler that we ignore the return value of ADDCARRY() 2010-10-13 10:45:22 +00:00
netipsec Remove dead code: 2010-10-14 15:15:22 +00:00
netipx
netnatm
netncp
netsmb
nfs Move sys/nfsclient/nfs_lock.c into sys/nfs and build it as a separate 2010-07-24 22:11:11 +00:00
nfsclient Do not fork nfsiod directly from the vop methods. This causes LORs between 2010-09-12 19:06:08 +00:00
nfsserver - When VFS_VGET() is not supported, switch to VOP_LOOKUP(). 2010-08-26 23:41:40 +00:00
nlm Make the RPC specific __rpc_inet_ntop() and __rpc_inet_pton() general 2010-09-24 15:01:45 +00:00
opencrypto Add support for AES-XTS. 2010-09-23 11:52:32 +00:00
pc98 Remove trailing ", " from `sysctl machdep.idle_available' output. 2010-10-12 20:53:12 +00:00
pci Convert the PHY drivers to honor the mii_flags passed down and convert 2010-10-15 14:52:11 +00:00
powerpc Add three new drivers for fan control and temperature reading on the 2010-10-15 20:08:16 +00:00
rpc Fix the krpc so that it can handle NFSv3,UDP mounts with a read/write 2010-10-13 00:57:14 +00:00
security Replace sbuf_overflowed() with sbuf_error(), which returns any error 2010-09-10 16:42:16 +00:00
sparc64 Explicitly lower the PIL to 0 as part of enabling interrupts, similar to 2010-10-14 21:46:53 +00:00
sun4v Just use the sparc64 version of this header rather than duplicating it. 2010-10-08 14:50:58 +00:00
sys Use a safer mechanism for determining if a task is currently running, 2010-10-13 22:59:04 +00:00
teken Make ^L with cons25 and origin mode bit more sane. 2010-08-09 18:07:15 +00:00
tools Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
ufs The r184588 changed the layout of struct export_args, causing an ABI 2010-10-10 07:05:47 +00:00
vm Change uma_zone_set_max to return the effective value of "nitems" after 2010-10-16 04:41:45 +00:00
x86 Restore pre-r212778 optimization, skipping timer reprogramming when it is 2010-09-18 07:36:43 +00:00
xdr
xen
Makefile