cvs commit: src/sys/netinet tcp_subr.c tcp_timer.h
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
> 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-all