*BSD News Article 9665


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA6231 ; Wed, 06 Jan 93 05:16:02 EST
Xref: sserve comp.unix.bsd:9722 comp.sys.sgi:25981 comp.sys.sgi.apps:37
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!olivea!sgigate!sgi!rhyolite!vjs
From: vjs@rhyolite.wpd.sgi.com (Vernon Schryver)
Newsgroups: comp.unix.bsd,comp.sys.sgi,comp.sys.sgi.apps
Subject: Re: Problem to transfer large data via socket communication - Need Help
Message-ID: <ukfuhr4@rhyolite.wpd.sgi.com>
Date: 8 Jan 93 17:25:55 GMT
References: <1993Jan8.071612.13716@news.uni-stuttgart.de> <106513@bu.edu>
Organization: Silicon Graphics, Inc.  Mountain View, CA
Lines: 40

In article <106513@bu.edu>, tasos@cs.bu.edu (Anastasios Kotsikonas) writes:
>...
> $>  But now we've problems sending/receiving large data for
> $>  example 50*50*50 matrix of floats or larger. Is there any
> $>  transfer-bufferlimitation by using streamsockets, that we can
> $>  manipulate ? Exists there no more comfortable possibility to
> $>  transfer the data ? Please mail me your informations
> 
> Depending on the system the limits may vary. For example, if you are on
> a CRAY there are routines to call which pack and unpack floats before
> sending them across. AIX poses a limit of 32K minus a few bytes per read.
> Most UNIX systems fail when sending over 50,000 bytes roughly (this is the
> limit on most UNIX systems). So, you should set the buffer size for the
> socket on both ends.


There are limits to the size of the buffers that can be read or written
over sockets in the Silicon Graphics operating system, but 50K is not
close to the limits.  I have not heard of a system that would be
limited to only 50KB; which are they?

125000 floats or doubles is only 1MByte, and should work.

Depending on the speed of the network, it may take more time to pack up
125,000 numbers that it would save to send them over the wire.  Even on
an ethernet, a pair of modern workstations should be able to move the
entire array in less than 2 seconds.  They could probably move the
array over an FDDI ring in less than 0.2 seconds.  2 seconds is
equivalent to only a modest number of cycles per floating point number,
and so is probably much less than the time spent by the application
doing its real work.  I would just use write() and read() and attempt
optimizations only when they are necessary.


By the way, I ignored the "Followup-To: comp.unix.bsd" line because the
original author seemed to be asking about the Silicon Graphics version
of UNIX.


Vernon Schryver,  vjs@sgi.com