From owner-cvs-src@FreeBSD.ORG Wed Sep 6 13:56:35 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D16F016A4DD; Wed, 6 Sep 2006 13:56:35 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9E57A43D45; Wed, 6 Sep 2006 13:56:35 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k86DuZYm016070; Wed, 6 Sep 2006 13:56:35 GMT (envelope-from glebius@repoman.freebsd.org) Received: (from glebius@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k86DuZ0w016069; Wed, 6 Sep 2006 13:56:35 GMT (envelope-from glebius) Message-Id: <200609061356.k86DuZ0w016069@repoman.freebsd.org> From: Gleb Smirnoff Date: Wed, 6 Sep 2006 13:56:35 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/netinet in_pcb.c tcp_subr.c tcp_timer.c tcp_var.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Sep 2006 13:56:35 -0000 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. 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. o Disable probably necessary, but now unused tcp_twrecycleable() function. Reviewed by: ru Revision Changes Path 1.181 +0 -16 src/sys/netinet/in_pcb.c 1.259 +3 -4 src/sys/netinet/tcp_subr.c 1.83 +12 -7 src/sys/netinet/tcp_timer.c 1.134 +2 -0 src/sys/netinet/tcp_var.h