Sysctl knob(s) to set TCP 'nagle' time-out?

Jerahmy Pocott quakenet1 at optusnet.com.au
Mon Jun 23 09:14:07 UTC 2008


On 23/06/2008, at 6:27 PM, Matthew Dillon wrote:

>    Can it break down and cause excessive lag?  Yes, it can.   
> Interactive

>    games almost universally have to disable Nagle because the lag is
>    actually due to the data relay from client 1 -> server then  
> relaying
>    the interactive event to client 2.  Without an immediate  
> interactive
>    response to client 1 the ack gets delayed and the next event from
>    client 1 hits Nagle and stops dead in the water until the first  
> event
>    reaches client 2 and client 2 reacts to it (then client 2 ->  
> server ->
>    (abort delayed ack and send) -> client 1 (client 1's nagle now  
> allows
>    the second event to be transmitted).  That isn't a deadlock, just
>    really poor interactive performance in that particular situation.

Yeah, that's what I'm talking about.

True, it's not really a dead-lock, but it's terribly slow! The  
interaction can
cause a 200ms delay on a LAN, as can be seen with samba if you disable
tcp_nodelay..


>    In anycase, the usual solution is to disable Nagle rather then mess
>    with delayed acks.  What we need is a new Nagle that understands  
> the
>    new reality for interactive connections... something that doesn't  
> break
>    performance in the 'server in the middle' data relaying case.


Exactly, there is nothing really wrong with delayed acks.. But with  
sysctl
I CAN disable and mess with the delayed acks, but I can't seem to do
anything to Nagle.

That's why I was thinking if I could change the Nagle time-out to 0ms it
would effectively disable it..

Cheers.
J.


More information about the freebsd-stable mailing list