fabulous fabulous at
Wed Jun 30 09:49:49 PDT 2004

Thank you very very much.. but sysctl sendspace/recvspace will be the 
limits then? can I set SO_SNDBUF to something higher than tcp.sendspace?

I'm thinking of setting tcp.sendspace to 64k and using setsockopt on 
ircd to set it to 2k (why an irc connection would need more than that?), 
so apache will use 64k and ircd 2k.. am I right? :P


Sean Chittenden wrote:

>> Is there any way to change its value according to the connection's uid 
>> or port?
> Not with sysctl(8).  You can by hacking the application and adding a few 
> setsockopt(2) calls, specifically the SO_RCVBUF and SO_SNDBUF options.  
> Here's a sample snippit you could follow:
> /* Add these #includes if they aren't already there */
> #include <err.h>
> #include <sysexits.h>
> /* Add this to the top of the function that calls listen(2) */
> int rcvbuf = 4096;
> int sndbuf = 4096;
> /* And add these calls before the application makes its listen(2) call. 
>  You may find that some applications are already setting their send and 
> receive buffer sizes. */
> if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, sizeof(rcvbuf)) != 0)
>   err(EX_OSERR, "setsockopt(2) for SO_RCVBUF failed");
> if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(sndbuf)) != 0)
>   err(EX_OSERR, "setsockopt(2) for SO_SNDBUF failed");
>> I need small sendspaces to ircd and bigger ones to apache..
> Add the above to each of the applications before they make their 
> listen(2) calls.  It's a shame more applications don't let you tweak 
> this value via a config file.
> -sc

More information about the freebsd-performance mailing list