Patrick Geoffray wrote:
>Eugene Loh wrote:
>>>replace the fifo¡¦s with a single link list per process in shared
>>>memory, with senders to this process adding match envelopes
>>>atomically, with each process reading its own link list (multiple
>>*) Doesn't strike me as a "simple" change.
>Actually, it's much simpler than trying to optimize/scale the N^2
1) The version I talk about is already done. Check my putbacks. "Already
done" is easier! :^)
2) The two ideas are largely orthogonal. The RFC talks about a variety
of things: cleaning up the sendi function, moving the sendi call up
higher in the PML, bypassing the PML receive-request structure (similar
to sendi), and stream-lining the data convertors in common cases. Only
one part of the RFC (directed polling) overlaps with having a single
FIFO per receiver.
>>*) Not sure this addresses all-to-all well. E.g., let's say you post a
>>receive for a particular source. Do you then wade through a long FIFO
>>to look for your match?
>The tradeoff is between demultiplexing by the sender, which cost in time
>and in space, or by the receiver, which cost an atomic inc. ANY_TAG
>forces you to demultiplex on the receive side anyway. Regarding
>all-to-all, it won't be more expensive if the receives are pre-posted,
>and they should be.
Not sure I understand this paragraph. I do, however, think there are
great benefits to the single-receiver-queue model. It implies congestion
on the receiver side in the many-to-one case, but if a single receiver
is reading all those messages anyhow, message-processing is already
going to throttle the message rate. The extra "bottleneck" at the FIFO
might never be seen.
>>What the RFC talks about is not the last SM development we'll ever
>>need. It's only supposed to be one step forward from where we are
>>today. The "single queue per receiver" approach has many advantages,
>>but I think it's a different topic.
>But is this intermediate step worth it or should we (well, you :-) ) go
>directly for the single queue model ?
1) The work is already done.
2) The single-queue model addresses only one of the RFC's issues.
3) I'm a fan of the single-queue model, but it's just a separate discussion.