Perfomance regression between 2.2 and 2.4?

Gilad Ben-Yossef <[email protected]> Tue, 16 Dec 2003 15:51:48 +0200
Newsgroups gmane.linux.drivers.tulip.general
Organization Codefidence. A name you can trust(tm)
Message-ID <[email protected]>
Howdie,

I have a system with a Tulip chipset based NIC which I've been using with the 
v0.97 version of the Tulip driver on 2.2.x kernel.

I'm trying to move over to the 2.4.x kernels and discovered that using the 
very same driver gives reduced performance on 2.4 then I got on 2.2: on 2.2 I 
can forward (IP routing) 65k frames/sec with no loss, on 2.4 I can only get 
50k frames/sec before loss starts).  

This regression is only visible if I try to route the frames so that they are 
received and transmitted on the same interface. If I try receiving on one 
interface and send on another (both are tulip chipset based - see below for 
the details) there is no performance difference between 2.2 and 2.4 and we 
can move 65k in both cases.

Hardware setup:
Pentium III, DECchip 21142/43 (rev 65).

Testing setup:

Shomiti (network traffic generator), is connected to eth2 on a Linux station. 
All sent packets to the Linux station and the received packets from it are 
recorded. Small valid UDP packets (64 bytes long) with src 192.168.2.100 and 
dst 192.168.3.100 are sent to the Linux. A proper forwarded packets is 
received from the Linux.

Linux configuration: 

ifconfig eth2 192.168.2.2 up
ifconfig eth2:1 192.168.3.3 up
arp -s 192.168.2.100 22:22:22:22:22:22
arp -s 192.168.3.100 33:33:33:33:33:33

Compiler and linker:
gcc-2.95.3 and binutils-2.9.1.0.25.

Now, I'm not really sure if this is really a tulip driver problem. I've 
actually ran into the problem with a modified old version of the tulip driver 
I've "inherited" (which is polling based and not interrupt based and I'd be 
happy to supply in case anyone is interested but it doesn't seem relevant to 
the problem at hand), but the very same behavior happens with the current 
version from the Scyld web site.

As I mentioned, this only happen if both Rx and Tx are done on the same 
interface. On 2.2 the performance penalty for this is small, on 2.4 it's 15k 
frames/sec.

Any feedback as to what might be causing it and how it can be fixed will be 
greatly appreciated. I'd be happy to supply any information request or code 
my way through debugging it - I just need a direction to look into :-)

Many thanks,
Gilad


-- 
Gilad Ben-Yossef <[email protected]>
Codefidence. A name you can trust (tm)
http://www.codefidence.com

_______________________________________________
tulip mailing list, [email protected]
To change to digest mode or unsubscribe visit
http://www.scyld.com/mailman/listinfo/tulip