aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-10-11 20:47:42 +0200
committerChristophe Besson <cbesson@gmail.com>2026-10-11 20:47:42 +0200
commit2ef0c215ea4af421a4b22ab543a5999320998f68 (patch)
treed0c5d25fca95042c3c58724e1058f4d56b415f9f /packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
parent176b5ed563f7022009b70751e62b7ee7901e6da0 (diff)
downloadmeshbay-2ef0c215ea4af421a4b22ab543a5999320998f68.tar.gz
fix(node): a receive buffer that holds an upload's window
Uploads ran at 6.5 MB/s because the kernel dropped datagrams at the node's 256 KB socket. Asking for 4 MB gave 19.5 MB/s, no drop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
index 0baaf19..1976ad4 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -42,6 +42,7 @@ from meshbay_node.indexer import GroupIndex
from meshbay_node.roots import (
RootSet,
)
+from meshbay_node.transport.webrtc import udp_buffer
from meshbay_node.transport.webrtc.admin import AdminMixin
from meshbay_node.transport.webrtc.admission import AdmissionMixin
from meshbay_node.transport.webrtc.apps.music import MusicMixin
@@ -152,6 +153,17 @@ class WebRTCTransport:
# Above one, the peer connections live in that many processes of their
# own and the sessions here speak to them (transport/webrtc/workers.py).
# At one, this process holds them itself and none is started.
+ got = udp_buffer.granted()
+ if got < udp_buffer.WANTED:
+ # Said once, with what to change: nothing else would tell an
+ # operator why uploads to this node stay around 6 MB/s.
+ log.warning(
+ "UDP receive buffer is %d KB per socket, below the %d KB an "
+ "upload needs to run at full speed; raise net.core.rmem_max "
+ "to %d to lift it", got // 1024, udp_buffer.WANTED // 1024,
+ udp_buffer.WANTED)
+ else:
+ log.info("UDP receive buffer: %d KB per socket", got // 1024)
self._workers = WorkerPool(
min(max(1, int(connection_processes or 1)), max_processes()),
self._stun, ice_interfaces)