Return-Path: Delivered-To: new-httpd-archive@hyperreal.org Received: (qmail 15952 invoked by uid 6000); 10 Sep 1998 15:37:45 -0000 Received: (qmail 15933 invoked from network); 10 Sep 1998 15:37:44 -0000 Received: from mail2.digital.com (204.123.2.56) by taz.hyperreal.org with SMTP; 10 Sep 1998 15:37:44 -0000 Received: from pachyderm.pa.dec.com (pachyderm.pa.dec.com [16.4.16.23]) by mail2.digital.com (8.8.8/8.8.8/WV1.0g) with SMTP id IAA19004; Thu, 10 Sep 1998 08:37:23 -0700 (PDT) Received: by pachyderm.pa.dec.com; id AA20888; Thu, 10 Sep 1998 08:37:22 -0700 Date: Thu, 10 Sep 1998 08:37:22 -0700 From: jg@pa.dec.com (Jim Gettys) Message-Id: <9809101537.AA20888@pachyderm.pa.dec.com> X-Mailer: Pachyderm (client pachyderm.pa-x.dec.com, user jg) To: new-httpd@apache.org Cc: Simon Spero In-Reply-To: Subject: Re: Apache 2.0/NSPR Mime-Version: 1.0 Content-Type: text/plain Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org > Sender: new-httpd-owner@apache.org > From: Simon Spero > Date: Thu, 10 Sep 1998 01:46:21 -0400 (EDT) > To: new-httpd@apache.org > Subject: Re: Apache 2.0/NSPR > ----- > yeah-i would have said that if my head worked better at the moment. this > fits in o the send side buffer management. > > simon > On Wed, 9 Sep 1998, Dean Gaudet wrote: > > > > > > > On Thu, 10 Sep 1998, Simon Spero wrote: > > > > > 7) TCP changes: There are several changes that would be useful for a web > > > server. > > > > You forgot: > > > > 7.n) Get rid of Nagle, and get rid of auto-flush-on-write(). Allow the > > app to tell the kernel when it's at the end of what it's sending... > > there's no need for silly timers and that crud like in Nagle when the app > > is well behaved. > > > > Dean > > Yes, turn off Nagle once you do your own buffering... I did have a conversation with a TCP wizard (can't remember if it was Van, or possibly Greg Minshall) at SIGCOMM a year ago though: the problem with Nagle may not be exactly what we thought and say in our SIGCOM paper... A properly done Nagle implementation may not in fact be slowing down the connections; but what does happen is that the "every other packet" ack policy implemented by most TCP's interacts with Nagle, such that if it is an odd packet, you get a major delay at the END of a conversation (the application has flushed, but the OS holds onto the data). The comment of this wizard was that the every other packet acking optimization in TCP has been a lose (you get poorer clocking of data, and possibly slower slow start behavior than if every packet is acked). We tried to get a final verdict on exactly what is causing the observed delays in our TCP dumps from Van Jacobsen, but he's never gotten back to us, and the effect is the same: Nagle should be disabled in any case, and isn't needed once you have sane buffering, flushing and timeouts at a higher level where you know more. - Jim