> On 19 Jun, 2015, at 05:47, Juliusz Chroboczek 
> <[email protected]> wrote:
> 
>> I am curious if anyone has tried this new socket option in appropriate apps,
> 
> I'm probably confused, but I don't see how this is different from setting 
> SO_SNDBUF.  I realise that's lower in the stack, but it should have a similar 
> effect, shouldn't it?

What I understand of it is:

Reducing SO_SNDBUF causes send() to block until all of the data can be 
accommodated in the smaller buffer.  But select() will return the socket as 
soon as there is *any* space in that buffer to stuff data into.

TCP_NOTSENT_LOWAT causes select() to not return the socket until the data in 
the buffer falls below the mark, which may (and should) be a mere fraction of 
the total buffer size.

It’s a subtle difference, but worth noting.  The two options effectively apply 
to completely different system calls.

You could use both in the same program, but generally SO_SNDBUF would be set to 
a higher value than the low water mark.  This allows a complete chunk of data 
to be stuffed into the buffer, and the application can then spend more time 
waiting in select() - where it is in a better position to make control 
decisions which are likely to be latency sensitive, and it can service other 
sockets which might be draining or filling at a different rate.

 - Jonathan Morton

_______________________________________________
Bloat mailing list
[email protected]
https://lists.bufferbloat.net/listinfo/bloat

Reply via email to