What would a multi-client/server protocol look like for two-way
session communication
using shared memory ring buffers? Especially during setup where both
processes needs to agree on where the in/out ring buffers reside in memory.
I'm guessing the initial mmap could be expensive?

On Fri, Mar 30, 2018 at 6:40 PM, Roman Leventov <[email protected]>
wrote:

> Right, 8 bytes, not 16, I've misread https://github.com/
> real-logic/agrona/blob/master/agrona/src/main/java/org/
> agrona/concurrent/ringbuffer/RecordDescriptor.java. Thanks for note.
>
> On Fri, 30 Mar 2018, 19:16 Martin Thompson, <[email protected]> wrote:
>
>> Aeron IPC is more functional than a plain queue but I get your point that
>> it is not a drop in replacement.
>>
>> The ring buffers are typical queue based semantics and use an 8 byte
>> header in Agrona and Aeron. 4 bytes for message length and 4 bytes for
>> message type to give some flexibility. Fixed format messages can optimise
>> well but have limited applicability.
>>
>> On Friday, 30 March 2018 16:36:09 UTC+1, Roman Leventov wrote:
>>>
>>> Martin, thanks a lot!
>>>
>>> I thought about Aeron IPC, but as far as I understand it maps to the
>>> queue model only when there is a single producer and a single consumer.
>>> Also it felt a little too heavyweight for small fixed-sized messages.
>>> Generally Aeron's Data frames have 32-byte headers. RingBuffers have only
>>> 16-byte headers, and it looks like it could be harmlessly reduced down to 8
>>> or even 0 for e. g. fixed format 32-byte messages.
>>>
>>> There are implementations of FIFO ring buffers for Java and C++ used in
>>>> Aeron for doing exactly this.
>>>>
>>>> https://github.com/real-logic/aeron/tree/master/aeron-
>>>> client/src/main/cpp/concurrent
>>>>
>>>> https://github.com/real-logic/agrona/tree/master/agrona/src/
>>>> main/java/org/agrona/concurrent
>>>>
>>>> You could also use Aeron IPC.
>>>>
>>>> On Friday, 30 March 2018 09:55:23 UTC+1, Roman Leventov wrote:
>>>>>
>>>>> I think about the possibility of building an asynchronous application
>>>>> with back pressure where some upstream operators are in Java and some
>>>>> downstream ones are in C++. For this purpose, some queues would be needed
>>>>> to pass the data between Java and C++ layers. It seems that porting
>>>>> JCTools's bounded array queues to off-heap should be doable, but I 
>>>>> couldn't
>>>>> find existing prototypes or discussions of such thing so maybe I overlook
>>>>> some inherent complications with this idea.
>>>>>
>>>>> Did anybody think about something like this or has implemented in
>>>>> proprietary systems?
>>>>>
>>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "mechanical-sympathy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to