[MUD-Dev] Windows->Linux TCP/IP stack performance problems
J C Lawrence
claw at under.engr.sgi.com
Thu Sep 10 15:34:47 CEST 1998
The following came up as a result of DaveZ doing performance testing
on Apache. I've encluded part of the original post below to provide
context for the technical assertions of the second. Those that want
to find the entire original post as well as the rest of the thread are
referred to the SVLUG archives at:
http://www.findmail.com/list/svlug/
------- Begin Forwarded Message
Date: Wed, 9 Sep 1998 09:49:01 -0700 (PDT)
From: Dave Zarzycki <dave at c204500-a.frmt1.sfba.home.com>
To: svlug at svlug.org
Subject: [svlug] HELP! Apache performance on a Compaq Presario
...deletia...
Setup:
Compaq Presario 4880 (400MHz PII)
192MB of RAM
10GB hard drive (IDE, this is a desktop machine from marketing)
10/100 EtherExpress
4 port 10/100 DEC 21140 card
Red Hat Linux 5.1 plus all updates
The performance is roughly 50 connections per second. I know linux can
go faster, so what gives? The load average never passes over one and
the idle time is always above 90%. I've tried both WebBench (on PCs,
yuk), and WebStone (running on AIX). I've tried both Apache 1.2.1,
which comes with Red Hat Linux 5.1, and Apache 1.3.1. I've even tried
the 2.1.119 kernel to see if that made things better, but it was no
different. Lastly, I tried a silly little web server that I wrote in a
few hundred lines of C, and it experianced the same problems. (In
other words, it's not the server...)
Does anybody have any idea what's going on? I don't think the sniffer
will tell me much. Are there any kernel options I can tweak?
...deletia...
------- End of Forwarded Message
The conclusion:
------- Begin Forwarded Message
Date: Thu, 10 Sep 1998 08:05:12 -0700 (PDT)
From: Dave Zarzycki <dave at c204500-a.frmt1.sfba.home.com>
To: svlug at svlug.org
Subject: [svlug] web server problem found
First of all, thanks is due to everyone who tried to help.
What went wrong:
Rhapsody, AIX, and appearantly Windoz behave like each other and
presume that the slow start feature of TCP will initially send two
segments. According to RFC 2001, TCP slow start should send only one
segment. Linux follows this RFC and the following situation unfolds:
non-RFC OS sends http request.
Linux sends the first segment and waits for an ACK.
non-RFC OS waits 200ms for the seconds segment.
non-RFC OS gives up and sends ACK.
Linux sends more data...
200ms is a long time for a machine that is less than 1 ms away. So the
only thing that Linux did wrong, was follow the standards, which, IMHO,
was the right thing to do. Some of my co-workers might blow this off as
reality vs. specs, but this is of course is what leads to incompatibilty
and is only one step away from a Microsoft mentality of "screw the
standards, we dominate enough of the market to *write* the standards
anyway we see fit." Oh well.
I'm going to e-mail the netdev list to confirm my suspicions, and
hopefully get some insight in how this problem might be delt with.
davez
------- End of Forwarded Message
If he's right (I don't have any Windows boxes to test (but can confirm
that Irix does the right thing)) this is pretty critical, and
extremely <insert choice of pejoritive>. RFC 2001
(http://www.pasteur.fr/other/computer/RFC/20xx/2001) is quite plainly
written and extremely clear about the correct behaviour for slow start
and congestion handling.
This may or may not affect your client operations. Most likely it
wouldn't as most client designs use long term connections (ie the rate
of generating new connections is low) which is in direct contrast to
web servers (where this impacts hard).
--
J C Lawrence Internet: claw at null.net
(Contractor) Internet: coder at ibm.net
---------(*) Internet: claw at under.engr.sgi.com
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...
More information about the mud-dev-archive
mailing list