[4045] in linux-net channel archive

home help back first fref pref prev next nref lref last post

Re: Question on performance

daemon@ATHENA.MIT.EDU (Ingo Molnar)
Fri Aug 16 09:14:25 1996

Date: 	Fri, 16 Aug 1996 10:34:23 +0200 (MET DST)
From: Ingo Molnar <mingo@pc5829.hil.siemens.at>
To: Dave Platt <dplatt@iq.tvsoft.com>
Cc: Chris Albertson <chris@topdog.pas1.logicon.com>,
        linux-net@vger.rutgers.edu
In-Reply-To: <199608160027.RAA00405@iq.TVSoft.com>

On Thu, 15 Aug 1996, Dave Platt wrote:

> > This is a good question. "where is the overhead?"
> 
> It depends.  >>grin<<.

> Part of the key to getting this sort of good performance is having
> high-performance I/O adapters - specifically, adapters which can do
> the data transfer via a fast (PCI or VLB) busmastering.  Many of the
> less-expensive Ethernet and mass-storage interfaces use PIO, which
> requires a pretty substantial amount of the 486 or Pentium's
> processing time during each data block transfer (and often requires
> quite a few trips through the interrupt handler, too).

most Ethernet adapters work asyncron, and can buffer multiple Ethernet
frames. Thus if your implementation is below a certain latency, and has
sufficient throughput, then you will run at wire speed. On decent
hardware, Linux's local TCP bandwith (the rate at which the kernel is able
to stuff packets to the device driver) is near 20MByte/sec. So, from the
TCP implementation point of view, Linux can saturate 100MBit Fast Ethernet
networks too.

There are hopelessly broken or under-sized adapters with which you simply
cant send stuff at wire speed, but most 8390-based cards have quite a
big buffer space (8K usually), which is enough for 4K transmit and 4K
receive buffers, storing more than 2 frames each. Check out the
'ping-pong' code in drivers/net/8390.c. The 3C509 has a smaller buffer of
2 X 2048 bytes, but even with such small buffers you can reach wire speed
easily [personally i see 950K/sec on a 3c509 here]. PCI based cards are
all quite nice :)

So dont worry about interrupt latency or low ISA IO speed, if you send
data continuously, then your adapter will never stop transmitting and
receiving (on an idle network).

Problem can arise if the TCP implementations differ on the two
hosts, and packets get fast retransmitted unnecessarily. I dont know the
details, but i think Solaris is such a beast ... :) I'm quite sure that
most 'TCP speed problems' arise at the TCP level, not at the Ethernet
device driver level.

> A system with the same motherboard and processor, but with a "dumb"
> PIO Ethernet controller and a simple IDE controller (both on the ISA
> bus) will probably have substantially lower throughput.

A clear 'no' here. Linux saturates Ethernet networks happily, even on
'dumber' cards. [i wouldnt call 10M/sec PIO dumb though].

-- mingo



home help back first fref pref prev next nref lref last post