Newsgroups: comp.parallel.pvm
From: orenl@mangal.cs.huji.ac.il (Oren Laden)
Subject: Re: What happens...
Organization: The Hebrew U. of Jerusalem, Computer Science Dept.
Date: 5 Apr 1995 17:43:29 GMT
Message-ID: <3luks1$9p4@pretzel.cs.huji.ac.il>

In article <D6AqAK.45E@dutiws.twi.tudelft.nl>, johan@pa.twi.tudelft.nl (Johan Meijdam) writes:
|> What happens when there are too many pvm_send()s and no pvm_recv()s and the
|> queue gets full?
|>
|> Do you loose messages, does pvm_send() return an error or will pvm_send()
|> block until there is 'space' for the message available?

We had this discussion a couple of months ago. The answer is that the pvmd will
eventually crash (out of memory ...). The reason is that PVM semantics provide
blocking send, and the pvm_send() call returns as soon as the message is sent
to the daemon. Now your program continues its execution, and the daemon cannot
tell it to reverse itself if it cannot actually transfer the data to the
destination machine ...
There are several solutions to this: if you use direct routing the send will
block (though to a limited period). Also, you can add flow control to your
program (e.g. acknoledgements). There are some systems, most of them built
on top of PVM which can take care of this. If you are interested you can e-mail
me (orenl@cs).

Regards,
	Oren.



