Replies: 2 comments
-
@parai very interesting and nicely done! If you have a look at iceoryx2 you will see that we have adopted the virtio idea there but with some subtle and important difference. We do not use ref counting at all, otherwise one process destroys the ref count and everything goes to waste. Every connection has its own return channel (in your terms avail ring). Btw. iceoryx2 works without a central daemon. But getting rid of a central daemon comes with huge challenges. I think your initial idea is a very good first step, but soon you have to answer questions like:
These are the issues RouDi (our central daemon) addresses and iceoryx2 has here decentralized but much more complex algorithms in place to handle this. In iceoryx2 the used ring and available ring is implemented by the zero copy connection concept, we call the descriptor ring the data segment of the publisher which is implemented by the shared memory concept Btw. we founded a company called ekxide.io to provide services around the iceoryx eco-system. So if you would like to have a deep-dive, just mail us: "[email protected]". |
Beta Was this translation helpful? Give feedback.
-
Hi @elfenpiff : And for the questions you point out, I have noticed that's really a big problem and in my current VDDS, I have some monitor strategy to detect those issue such as a DESC is hold for a long time by consumers, but it's true that can't tell is that because of the consumer applicaiton crash or stuck. This VDDS is a concept project, not to compete with iceoryx, I just share the idea here that in case if possible that iceoryx can take such idea and this may help others, certain user may wish this features.
And for the iceoryx2 you shared, first time to notice this new rust project, let me check the design concept of how the virtio idea was used. Thanks! |
Beta Was this translation helpful? Give feedback.
-
For study purpose, I created this vdds project, that by utilizing the virtio ring buffer to implement a DDS for inter-process communication.
For more details, check this https://github.com/autoas/vdds/blob/master/README.md
This a concept project, and it can also be expand to support linux dma_buf as the shared memory between certain hardware and process applicaiton.
Beta Was this translation helpful? Give feedback.
All reactions