Date: Wed, 6 Sep 2006 13:56:35 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/netinet in_pcb.c tcp_subr.c tcp_timer.c tcp_var.h Message-ID: <200609061356.k86DuZ0w016069@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609061356.k86DuZ0w016069>