Re: TCP/IP Speed

From: Richard B. Johnson (root@chaos.analogic.com)
Date: Wed Jan 30 2002 - 16:54:46 EST


On Wed, 30 Jan 2002, Rob Landley wrote:

> On Wednesday 30 January 2002 11:07 am, Richard B. Johnson wrote:
> > When I ping two linux machines on a private link, I get 0.1 ms delay.
> > When I send large TCP/IP stream data between them, I get almost
> > 10 megabytes per second on a 100-base link. Wonderful.
> >
> > However, if I send 64 bytes from one machine and send it back, simple
> > TCP/IP strean connection, it takes 1 millisecond to get it back? There
> > seems to be some artifical delay somewhere. How do I turn this OFF?
>
> This is just a guess, but it sounds to me like a scheduling issue. When
> you're sending data from one network stack to another, how often the
> receiving program scoops data out of the incoming file descriptor isn't too
> much of a limiting factor, as long as you've got enough buffer space in the
> receiving network stack that the sender doesn't have to pause.
>
> But to bounce the data back, the program at the far end doing the receive and
> resend has be woken up and handed a time slice with which to receive,
> process, and return the packet.
>
> Have you tried ingo's O(1) scheduler? :)

No. I set all sockets, even the original listen() socket to
TCP_NODELAY. Nothing makes any difference. I tried it on a
600+ MHz machine with and a 133 MHz machine with no aparent
difference in the turn-around time. Of course the 600 MHz
machine sends large buffers of data faster:

   With a 64k buffer:

   600 MHz 133MHz RAM ~ 9.98 Megabytes/second.
   133 MHz 100MHz RAM ~ 6.50 Megabytes/second.

   With a 4 k buffer:

   600 MHz 133MHz RAM ~ 5.15 Megabytes/second.
   133 MHz 100MHz RAM ~ 3.30 Megabytes/second.

   With 64 bytes:

   600 MHz 133MHz RAM ~ 1.2 kilobytes/second.
   133 MHz 100MHz RAM ~ 1.1 kilobytes/second.

   Time from transmission to reception of a small buffer
   from the simplist echo server (read, write, no select):

   600 MHz 133MHz RAM ~ 0.9 millisecond.
   133 MHz 100MHz RAM ~ 1.0 millisecond.

   This is with two eepro100 network boards and two
   pairs of machines.

   The turn-around time for small buffers is about
   1 millisecond for both.

   `ping` shows low microseconds in all cases.

   The problem was discovered on an embedded system at
   a customer site so I set up two pairs of machines to
   see what performance is possible. I though first that
   there was a half/full/duplex problem or a hub problem.
   These two pair are connected with a X-over cable, no
   hubs.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).

    I was going to compile a list of innovations that could be
    attributed to Microsoft. Once I realized that Ctrl-Alt-Del
    was handled in the BIOS, I found that there aren't any.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jan 31 2002 - 21:01:25 EST