From dd0ad26ea9824b75accced2b56328cbb222c4c6d Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Wed, 28 Oct 2026 19:40:34 +0100 Subject: Default udp workers to 1, as it is the most sane choice everywhere, also reflect the new udp parallelism in the man pages --- opentracker.conf.sample | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'opentracker.conf.sample') diff --git a/opentracker.conf.sample b/opentracker.conf.sample index 4adb736..1d535e8 100644 --- a/opentracker.conf.sample +++ b/opentracker.conf.sample @@ -23,7 +23,7 @@ # # workers= handle this udp socket in blocking reads in that # many dedicated worker threads instead of in the -# event loop. Ignored for tcp. +# event loop. Defaults to 1. Ignored for tcp. # shared allow another process to bind the same address and # let the kernel share the traffic. Only useful if you # deliberately run a second tracker there. @@ -37,6 +37,18 @@ # listen.udp.workers 4 # listen.shared 1 # +# Raising the worker count pays off where the kernel spreads arriving +# datagrams over a group of sockets bound to one address. Linux does so +# and FreeBSD has since 12.0, Darwin does not. opentracker asks at start +# up and binds one socket per worker only where the answer is yes. Where +# it is no, all workers read the one socket and contend for its receive +# queue, which costs more than it returns. See the TUNING section of +# opentracker.conf(5); tests/udp_scaling.py sweeps the setting on the +# machine that will carry the traffic. +# +# A count of 0 answers udp from the event loop, in the thread that also +# serves tcp, which is what opentracker did before. +# # Note, that using 0.0.0.0 for udp sockets may yield surprising results. # An answer packet sent on that socket will not necessarily have the # source address that the requesting client may expect, but any address -- cgit v1.3