cvs commit: src/sys/netinet tcp_subr.c tcp_timer.h

Don Lewis truckman at FreeBSD.org
Thu Aug 2 14:49:37 PDT 2007


On 31 Jul, Peter Wemm wrote:
> peter       2007-07-31 22:11:56 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/netinet          tcp_subr.c tcp_timer.h 
>   Log:
>   Change TCPTV_MIN to be independent of HZ.  While it was documented to
>   be in ticks "for algorithm stability" when originally committed, it turns
>   out that it has a significant impact in timing out connections.  When we
>   changed HZ from 100 to 1000, this had a big effect on reducing the time
>   before dropping connections.
>   
>   To demonstrate, boot with kern.hz=100.  ssh to a box on local ethernet
>   and establish a reliable round-trip-time (ie: type a few commands).
>   Then unplug the ethernet and press a key.  Time how long it takes to
>   drop the connection.
>   
>   The old behavior (with hz=100) caused the connection to typically drop
>   between 90 and 110 seconds of getting no response.
>   
>   Now boot with kern.hz=1000 (default).  The same test causes the ssh session
>   to drop after just 9-10 seconds.  This is a big deal on a wifi connection.
>   
>   With kern.hz=1000, change sysctl net.inet.tcp.rexmit_min from 3 to 30.
>   Note how it behaves the same as when HZ was 100.  Also, note that when
>   booting with hz=100, net.inet.tcp.rexmit_min *used* to be 30.

I think this explains I was seeing so many dropped connections to my
machine that has been having the "nfe0: watchdog timeout (missed Tx
interrupts) -- recovering" problem.



More information about the cvs-src mailing list