Path: utzoo!utgpu!water!watmath!clyde!rutgers!sri-spam!ames!elroy!cit-vax!mangler
From: mangler@cit-vax.Caltech.Edu (Don Speck)
Newsgroups: comp.unix.wizards
Subject: Re: rdump, Ethernet slowness
Summary: tcp_sendspace tcp_recvspace
Message-ID: <4836@cit-vax.Caltech.Edu>
Date: 10 Dec 87 08:59:55 GMT
References: <788@hsi.UUCP> <14115@oddjob.UChicago.EDU>
Organization: California Institute of Technology
Lines: 22

In article <14115@oddjob.UChicago.EDU>, matt@oddjob.UChicago.EDU (Ke Kupua) writes:
> excruciating!  It takes about 4 hours to [r]restore a level 0 dump of a
> 175MB partition.

That's 12 Kbytes/sec, a magic number.  It's the rate you get if
tcp_recvspace is too much bigger than tcp_sendspace.

To save on acknowledgements, an ack is not sent until 35% of
tcp_recvspace bytes have been received.  The 4.3bsd /etc/rrestore
does an ioctl to raise the receive buffer for its socket (to the
same as the block size - 10K).	The sender's buffer is probably
smaller than 35% of 10K, and hence can't send that much data
without getting an acknowledgement; and things just sit there
until the receiver's TCP times out and decides to send an ack.

Try removing the SOL_SOCKET stuff from rrestore.  It was a nice
idea, but doesn't interoperate very well.

You have the same problem in rdumping from a 4.2bsd machine to
a 4.3bsd /etc/rmt.

Don Speck   speck@vlsi.caltech.edu  {amdahl,scgvaxd}!cit-vax!speck