Archive for 2018-12-30

Transmission network problem

Recently started in debug mode on Transmission and I see:

[17:42:40.319] UDP Failed to set receive buffer: requested 4194304, got 262142 (tr-udp.c:75)
[17:42:40.319] UDP Please add the line "net.core.rmem_max = 4194304" to /etc/sysctl.conf (tr-udp.c:80)
[17:42:40.319] UDP Failed to set send buffer: requested 1048576, got 262142 (tr-udp.c:86)
[17:42:40.319] UDP Please add the line "net.core.wmem_max = 1048576" to /etc/sysctl.conf (tr-udp.c:91)

By tuning the two variables, higher throughput can be achieved more easily using uTP.

Here’s the relevant part from the changeset :

Since we are using a single UDP socket to implement multiple UTP sockets,
and since we are not always timely in servicing an incoming UDP packet,
it is important to use a large receive buffer. The send buffer is probably
less critical, we increase it nonetheless.

Four megabytes might seem huge for embedded clients, but running behind a dedicated connection, it might even become too small. I recommend using 16 megabytes for receive buffering and 4 for the send buffer. That is, because uTP implements a retransmission algorithm and by scaling up the buffers we can achieve fewer retransmits because of dropped datagrams. Let’s set it up that way.

Check actual settings:

sysctl -p

do the modifications:

echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 4194304' >> /etc/sysctl.conf
sysctl -p

src: https://falkhusemann.de/blog/2012/07/transmission-utp-and-udp-buffer-optimizations/