[comp.arch] Interprocess communication

mcdonley@dinl.uucp (alan mcdonley) (11/10/90)

I am new to this news group (didn't know it exists).  I have a few
questions about software architectures that require interprocess
communication both internal to the same processor and between
processors' applications.  

I currently have set up a test with two processes on a Cromemco (old
unix box the government bought a while back) and a Sun3/60.  I've got
all kinds of real programs running like X windows and other applications
along with the test processes.  The processes are connected by sockets.
The architecture has proc 1 talk to proc2 which retransmits the msg
across the ethernet to proc3 which retransmits the msg to proc4.  The
messages are 168 bytes long.  proc1 and proc2 are on the Cromemco and
proc3 and 4 are on the Sun3/60.  I am able to get about 5 msgs (1K) per
second from proc1 to proc4.  Is this for real??  Is this the kind of 
ballpark figure for interprocess comm with small msg sizes?

I have heard that within the same processor, pipes are the preferred
mechanism in POSIX systems.  Do pipes go faster?  I thought pipes were 
built ontop of sockets.

Back a while I used to tell people, new to Ada, to avoid tasking and the
associated rondezvous due to the time penalty.  Should I be nixing
designs in POSIX systems that use sockets/pipes and multiple processes
if the required interprocess bandwidth is over 1Kb/sec?


-- 

---------------------------------------------------------------------------
Alan McDonley,        Martin Marietta Information and Communication Systems
(303) 977-3347        mcdonley@inlatlas.den.mmc.com
P.O.Box 1260          ncar!dinl!mcdonley
Denver,CO 80201-1260  Opinions are my own, not my employer's.
--------------------------------------------------------------------------

my@dtg.nsc.com (Michael Yip) (11/11/90)

I am sure you can get more than 5 messages per second even the 
stations are loaded.  (Well, SUN3s are quite slow at today's 
standard but it got to do better than that.)  I think that the 
problem may be because you are not using the no-blocking option
(there is such a option, right?  iocntl() or setsockopt()) when
using the sockets.  Please check your program and options on using
sockets on UNIX.

-- Mike
   my@dtg.nsc.com

PS: I am not ssure about the no-blocking thing, but I kind of
    remember such an option when I used sockets a few years ago.