Dreadful tar with remote device

Richard Wendland Richard Wendland richard at wendland.org.uk
Wed Aug 16 21:17:53 BST 2000

> which I think proves that something very screwy is going on. I suggest

I suspect you're seeing an unfortunate interaction of the delays
introduced by the TCP Nagle algorithm for small blocks, the rmt protocol,
and perhaps the streaming data needs of the tape drive.

As an experiment try setting sysctl net.inet.tcp.delayed_ack to 0 at
both ends and seeing what happens.  (Probably only the tape drive end
needs this changed for writing tapes, but I'm not certain).

This makes the

	time tar cvf localhost:/tmp/fff.tar meg

speed up from 21 secs to 0.19 secs for me!

Ideally some source code would be changed to setsockopt TCP_NODELAY to
directly disable the Nagle algorithm.  net.inet.tcp.delayed_ack=0 is
a workaround, and you probably wouldn't want to leave this set on any
Internet talkative machine, as it'll cause unnecessary ACK packets.

I suppose a sysctl to disable Nagle (like setting TCP_NODELAY) system
wide might be handy for when you don't want to fiddle with the source.

BTW does anyone know where the net.inet.tcp sysctls are documented?
I hunted around a while, including searching for delayed_ack at
www.freebsd.org and couldn't find any.

Richard Wendland				richard at wendland.org.uk

More information about the Ukfreebsd mailing list