Re: The Superhighway Steamroller

Simon E Spero (ses@tipper.oit.unc.edu)
Sun, 03 Jul 94 02:26:25 -0400


gtn@ebt.com (Gavin Nicol) writes:

>(1) and (2) will be fixed with faster hardware, while (3) will get
>worse and worse. I have fond memories of 2k and 4k machines, and the
>machine language programming I did on them, but I wouldn't wish that
>on anyone nowadays; it's just not cost effective.
>
>I often wonder just how much header/message parsing costs HTTP...

Extensive headers cause problems over dialup connections; a 1K set of
headers can add almost a second to the transaction time for every single
request. This order of magnitude difference makes the cost parsing
insignificant.

Header parsing adds about 25% to the total transaction time for the
NCSA server (HTTP/0.9 vs a set of 1K HTTP/1.0 headers generated by xmosaic).
Measurements taken on a lightly loaded ethernet, using a sparc 10SX to generate
queries, and a SparcStation 20/512 as server.
I'll try and do the calculations for Plexus and CERN tommorow or Monday; I
only added support for header generation to web-killer last night, so I
haven't had a chance to do the full consumers' digest routine on this
feature yet.

The most intersting thing about headers is that about 99.99% of all
web transactions, they are absolutely useless. The best way to handle headers
is to ignore them unless you know that they might actually make some sort
of difference; i.e. if multiple types are available for a given URL, or
if a transaction needs authentication; otherwise, they're just a waste of
space.

The worst culprit is Accept; the negotiation format would be vaguely
defensible for a session involving several transactions, but is much too
expensive to be useful for one-shots.

I'll try and explain this more when I get the FHTTP spec out. I haven't
had time to finish this as I'm still documenting and commenting my multi-
threaded server <liemode> I love this part</liemode>.

Simon
I clocked the new server at just under 3 seconds per transaction
yesterday. Not that great, except it was running at nice +10,
with a simulated load of 100 simultaneous connections
with the machine compiling and recompiling the server in an
infinite loop, while I read news and used emacs under X.

(These figures were for a small data-set; your mileage may
vary depending on your hot-set to physical memory ratio. It's
probably worth while doing some more detailed studies on this.
I'll have to hack the log analyser to get some numbers on this.)