Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Sep 2006 09:16:03 -0500 (CDT)
From:      Mike Silbersack <silby@silby.com>
To:        Gleb Smirnoff <glebius@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/netinet in_pcb.c tcp_subr.c tcp_timer.c  tcp_var.h
Message-ID:  <20060906091204.B6691@odysseus.silby.com>
In-Reply-To: <200609061356.k86DuZ0w016069@repoman.freebsd.org>

index | next in thread | previous in thread | raw e-mail


On Wed, 6 Sep 2006, Gleb Smirnoff wrote:

> glebius     2006-09-06 13:56:35 UTC
>
>  FreeBSD src repository
>
>  Modified files:
>    sys/netinet          in_pcb.c tcp_subr.c tcp_timer.c tcp_var.h
>  Log:
>  o Backout rev. 1.125 of in_pcb.c. It appeared to behave extremely
>    bad under high load. For example with 40k sockets and 25k tcptw
>    entries, connect() syscall can run for seconds. Debugging showed
>    that it iterates the cycle millions times and purges thousands of
>    tcptw entries at a time.
>    Besides practical unusability this change is architecturally
>    wrong. First, in_pcblookup_local() is used in connect() and bind()
>    syscalls. No stale entries purging shouldn't be done here. Second,
>    it is a layering violation.

So you're returning to the behavior where the system chokes and stops all 
outbound TCP connections because everything is in the timewait state? 
There has to be a way to fix the problem without removing this heuristic 
entirely.

How did you run your tests?

>  o Return back the tcptw purging cycle to tcp_timer_2msl_tw(),
>    that was removed in rev. 1.78 by rwatson. The commit log of this
>    revision tells nothing about the reason cycle was removed. Now
>    we need this cycle, since major cleaner of stale tcptw structures
>    is removed.

Looks good, this is probably the reason for the code in in_pcb behaving so 
poorly.  Did you test just this change alone to see if it solved the 
problem that you were seeing?

Mike "Silby" Silbersack


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060906091204.B6691>