Subject: Re: PF_PACKET ???
To: Danny Thomas <d.thomas@mailbox.uq.edu.au>
From: David Laight <David.Laight@btinternet.com>
List: tech-net
Date: 11/21/2001 23:19:47
> >I never saw an ethernet card for a 486 that got anywhere near LAN
> >saturation even with big packets - the best was the AMD PCnet-ISA!
> >Even many 32bit EISA cards wouldn't do it....
> 
> ISTR it couldn't quite achieve this if traffic consisted only of minimum
> size packets ... otherwise PCROUTE/PCBRIDGE could achieve close to 10M
> saturation on an 8086. Certainly with a 286

The processor doesn't matter much! the problem is the ISA bus speed.
In fact a straight ISA 486 is probably faster than a slow PCI pentium
system (I'm going back to P1 days).

To 'shovel' 10Mb ethernet across the ISA bus means moving a byte every
800ns.  I can't remember the exact figure, but a typical ISA bus cycle
is around 600ns (some of the cards I've seen actually add wait states!).
So for an 8-bit card the data transfer takes 75% of your cpu time - and
that isn't allowing for the memory cycle...

To bridge/route data you need 2 16bit cards - and you have little cpu
left for doing any work.  Try running Unix and transfering data to/from
userland and you'll never make it.

We were running SVR4.3 on 20MHz 386, 25MHz 486 and VMEbus sparc systems
when I make these measurements....

Obviously CPU speeds are much faster these days, but network speed has
gone up as well. The same factors probably still apply.

Interestingly I often found that the 'zero copy' driver was slower that
a well written one that did a copy at the h/w interface.  This is
particularly true for systems with IOMMU - or physical memory that can't
all be accessed by the network hardware for some reason.

(I used to write ethernet/fddi/token ring drivers and parts of the ISO
transport stack for a living.)

    David