[coyotos-dev] Re-thinking FCRBs

Valerio Bellizzomi devbox at selnet.org
Tue Feb 20 15:40:59 CST 2007


On 20/02/2007, at 12.33, Jonathan S. Shapiro wrote:

>On Tue, 2007-02-20 at 15:23 +0100, Marcus Brinkmann wrote:
>> At Thu, 15 Feb 2007 14:15:19 -0500,
>> "Jonathan S. Shapiro" <shap at eros-os.com> wrote:
>> > ** So what about asynchronous *sends* ??
>> > 
>> > If we need a mechanism for asynchronous completion, what about a
>> > mechanism for asynchronous sends?
>> > 
>> > My answer is "no". If the use of asynchronous receive is properly
>> > engineered, sends will not block. If they do you have a systemic
issue
>> > and my sense is that you want to see it rather than obscure it. I
could
>> > be completely wrong on this, and I'ld appreciate input on this point.
>> 
>> I have only come up with one use case for asynchronous send.  It's the
>> case where one does not want to allocate a stall queue in the server
>> for "blocking" RPCs like reading from an empty pipe (which is a
>> read-only operation and presumably should not allocate server
>> resources).  In principle, it is not clear why the server should need
>> to allocate a queue for such client operations, as there already is a
>> kernel queue that could be used for this purpose. However, pushing a
>> client back to a send() operation on an end point that the server is
>> not listening on (until the operation can potentially be completed)
>> makes send() a blocking operation.
>
>I'm confused, because there is no mechanism for a server to allocate a
>stall queue at all.
>
>In the read on empty pipe case, where server does not listen actively,
>sender will block.
>
>The motivation for asynchronous send in this case would be to allow the
>*sender* to avoid blocking, or to enqueue multiple operations.
>
>My feeling is: if the server is correctly implemented for its
>requirements this becomes a non-issue (because the server will arrange
>to be listening). If it is not, you have bigger problems than
>asynchronous send can solve for you.

If there are bigger problems probably you want to make them visible to
allow easier debugging.


val




More information about the coyotos-dev mailing list