SO_SNDBUF and SO_RCVBUF

Ask for help and report issues with the Mac OS X version of Transmission
Post Reply
x190
Posts: 5094
Joined: Sun Nov 30, 2008 4:59 am

SO_SNDBUF and SO_RCVBUF

Post by x190 »

Code: Select all

2011-05-22 18:04:29 -0600 fdlimit.c:645 [Debug] Transmission: SO_SNDBUF size is 131070
2011-05-22 18:04:29 -0600 fdlimit.c:647 [Debug] Transmission: SO_RCVBUF size is 262140
As near as I can tell these values are returned by the system but may be influenced by the application.

Would it be helpful if Transmission tried to reduce these values via setsockopt()?
SO_SNDBUF and SO_RCVBUF are options to adjust the normal buffer sizes
allocated for output and input buffers, respectively. The buffer size
may be increased for high-volume connections, or may be decreased to
limit the possible backlog of incoming data. The system places an abso-
lute limit on these values.
Jordan
Transmission Developer
Posts: 2311
Joined: Sat May 26, 2007 3:39 pm
Location: Titania's Room

Re: SO_SNDBUF and SO_RCVBUF

Post by Jordan »

Yes, IMO it would be interesting & possibly useful to know what the kind of performance you get by lowering those values to be small enough that they don't trigger the error message anymore. That's not something that I (or Juliusz, afaik) tested on OS X.
x190
Posts: 5094
Joined: Sun Nov 30, 2008 4:59 am

Re: SO_SNDBUF and SO_RCVBUF

Post by x190 »

Appreciate the reply. I take it you thought I was referring to µTP? I have shown that you can build and run without error with any combination of SND/RCV buffers to a total of 4 * 1024 *1024. Trouble is the current code is asking for a total of 5 * 1024 * 1024 (4 * ... RCV + 1 * ... SND) resulting in the error (RCV) "asked for 4194304 got 42080". Should be easy to fix---pick a number between 1 and 4. :)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Actually, in this post I was referring to TCP connections and thinking of slow-death-like issues. In the code I can only find setsockopt() being used for announces (2-3KB) and clientisSeed (8 KB RCV net.c) but not for leechers. Since the application is allowed to override default values after reaching the threshold number of sockets (default 64) then calling setsockopt() for leechers and using any appropriate value less than the default (65535 SND 65535 RCV) might help stave off system freeze particularly for users who like to use hundreds of connections.
Jordan
Transmission Developer
Posts: 2311
Joined: Sat May 26, 2007 3:39 pm
Location: Titania's Room

Re: SO_SNDBUF and SO_RCVBUF

Post by Jordan »

Interesting theory... couldn't hurt to try :wink:
Post Reply