From owner-cvs-all@FreeBSD.ORG Thu Feb 1 18:34:56 2007 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2976416A407 for ; Thu, 1 Feb 2007 18:34:56 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id 8DE0213C4B4 for ; Thu, 1 Feb 2007 18:34:55 +0000 (UTC) (envelope-from andre@freebsd.org) Received: (qmail 42666 invoked from network); 1 Feb 2007 18:12:51 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 1 Feb 2007 18:12:51 -0000 Message-ID: <45C232D1.8010704@freebsd.org> Date: Thu, 01 Feb 2007 19:34:57 +0100 From: Andre Oppermann User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 To: Andre Oppermann References: <200702011832.l11IWEGu090482@repoman.freebsd.org> In-Reply-To: <200702011832.l11IWEGu090482@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/netinet tcp_input.c tcp_output.c tcp_usrreq.c tcp_var.h X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Feb 2007 18:34:56 -0000 Andre Oppermann wrote: > andre 2007-02-01 18:32:14 UTC > > FreeBSD src repository > > Modified files: > sys/netinet tcp_input.c tcp_output.c tcp_usrreq.c > tcp_var.h > Log: > Auto sizing TCP socket buffers. > > Normally the socket buffers are static (either derived from global > defaults or set with setsockopt) and do not adapt to real network > conditions. Two things happen: a) your socket buffers are too small > and you can't reach the full potential of the network between both > hosts; b) your socket buffers are too big and you waste a lot of > kernel memory for data just sitting around. > > With automatic TCP send and receive socket buffers we can start with a > small buffer and quickly grow it in parallel with the TCP congestion > window to match real network conditions. > > FreeBSD has a default 32K send socket buffer. This supports a maximal > transfer rate of only slightly more than 2Mbit/s on a 100ms RTT > trans-continental link. Or at 200ms just above 1Mbit/s. With TCP send > buffer auto scaling and the default values below it supports 20Mbit/s > at 100ms and 10Mbit/s at 200ms. That's an improvement of factor 10, or > 1000%. For the receive side it looks slightly better with a default of > 64K buffer size. > > New sysctls are: > net.inet.tcp.sendbuf_auto=1 (enabled) > net.inet.tcp.sendbuf_inc=8192 (8K, step size) > net.inet.tcp.sendbuf_max=262144 (256K, growth limit) > net.inet.tcp.recvbuf_auto=1 (enabled) > net.inet.tcp.recvbuf_inc=16384 (16K, step size) > net.inet.tcp.recvbuf_max=262144 (256K, growth limit) > > Tested by: many (on HEAD and RELENG_6) > Approved by: re > MFC after: 1 month Sponsored by: TCP/IP Optimzation Fundraise 2005. This is the pre-last major thing coming out of it. -- Andre