Re: Network compatibility and performance

From: Stephen Hemminger
Date: Thu Aug 10 2006 - 14:12:09 EST

On Thu, 10 Aug 2006 14:09:34 -0400
"linux-os \(Dick Johnson\)" <linux-os@xxxxxxxxxxxx> wrote:

> On Thu, 10 Aug 2006, Stephen Hemminger wrote:
> > On Thu, 10 Aug 2006 11:34:23 -0400
> > "linux-os \(Dick Johnson\)" <linux-os@xxxxxxxxxxxx> wrote:
> >
> >>
> >> Hello,
> >>
> >> Network throughput is seriously defective with linux-
> >> if the length given to 'write()' is a large number.
> >>
> >> Given this code on a connected socket........
> >
> > What protocol (TCP?) and what Ethernet hardware (does it support TSO)?
> > Did you set non-blocking?
> A connected TCP socket. The Ethernet hardware was also
> described (Intel using e1000 as shown) It's on PCI-X 133MHz, two
> devices on the motherboard, not really relevent because it worked
> previously as described. TSO?

TSO = TCP segmentation Offload, if you are using e1000 it gets enabled.
Only slightly relevant to this, because it would change the timing.

> They went away in 1972. The socket was set to non-blocking because the
> same socket is used for reading (not at the same time), using poll()
> to find when data are supposed to be available. BTW, read() code
> used to use poll() to find out when data were available, but if
> poll returned POLLIN, sometimes data would NOT be available and
> the code would hang <forever>. Therefore a work-around was to set
> the socket non-blocking. Under the conditions where poll() would
> return POLLIN and a read of a non-blocking socket returned no data,

Basic unix programming, errno only has meaning if system call returns -1.

Basic network programming. If read returns 0 it means other side
has disconnected.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at