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