linuxppc: TCP throughput problems

Shawn Ostermann ostermann at
Thu Sep 30 07:23:55 EST 1999

Now that I finally have a working interrupt-driven kernel for my
PB3400, I've been stress testing the driver.  I found something odd
when sending it a lot of TCP data over a mostly idle 10Mb ethernet.  I
used ttcp to both send data TO my laptop and then again to have the
laptop send the data out.

When my linux laptop is SENDING the data, I get:

>> ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp  -> picard
>> ttcp-t: 16777216 bytes in 15.10 real seconds = 8.48 Mbit/sec +++
>> ttcp-t: 2048 I/O calls, msec/call = 7.55, calls/sec = 135.67
>> ttcp-t: 0.0user 1.0sys 0:15real 7%

I get 8.48 Mbits/sec.  That's pretty good for a nearly idle 10Mb

HOWEVER, when my linuxppc laptop is RECEIVING the data, I get:

>> ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001  tcp  -> defiant
>> ttcp-t: 16777216 bytes in 19.55 real seconds = 6.55 Mbit/sec +++
>> ttcp-t: 2048 I/O calls, msec/call = 9.78, calls/sec = 104.75
>> ttcp-t: 0.0user 0.5sys 0:19real 2%

6.55 Mb/sec is "not so good".  Yes, I repeated these experiments many
times.  I even know what the problem is, but I don't understand why.
In the "linux receiving" case, there were NO retransmitted packets and
NO errors.  HOWEVER, what's happening is that linux is delaying ACK
packets for long periods of time (~10ms) causing the data sender to
stop.  The ACKs show up after the data stops arriving and then things
start up again.

Before I go digging too deeply, I want to know if this has been seen
before.  Could it be:

1) problems in the new interrupt handler (seems unlikely)
2) problems in the de4x5 device driver (possibly)
3) problems in the linux TCP/IP code (may be more likely)

If anybody is curious, the packet trace and analysis tools are here:

   Dr. Shawn Ostermann  -  Associate Professor  -  Ohio University
      140 Morton Hall, Ohio University, Athens, Ohio  45701-2979
 ostermann at -- FAX: (740)593-0406 -- Voice: (740)593-1242

** Sent via the linuxppc-dev mail list. See

More information about the Linuxppc-dev mailing list