4 ms·
Thanks for sharing here -- yeah these are definitely huge issues that make shared memory hard -- the when-things-go-wrong case is definitely quite hairy. I won
by hardwaresofton 2y ago
Thanks for sharing here -- yeah these are definitely huge issues that make shared memory hard -- the when-things-go-wrong case is definitely quite hairy.
I wonder if it would work well as a sort of opt-in specialization? Start with TCP/UDS/STDIN/whatever, and then maybe graduate, and if anything goes wrong, report errors via the fallback?
I do agree it's rarely worth it (and same-machine UDS is probably good enough), but with the 10x gain essentially I'm quite surprised.
One thing I've also found that actually performed very well is ipc-channel[0]. I tried it because I wanted to see how something I might actually use would perform, and it was basically 1/10th the perf of shared memory.
[0]: https://crates.io/crates/ipc-channel https://crates.io/crates/ipc-channel
- a_t48 2y agoThe other thing is 10x improvement on basically nothing is quite small. Whatever time it takes for a message to be processed is going to be dominated by actually consuming the message. If you have a great abstraction, cool - use it anyhow, but it's probably not worth developing a shared memory library yourself.
- hardwaresofton 2y agoAgree, but it's also a question of where do you start from -- 10x is a lot to give up, and knowing you're giving it up is pretty important. That said, the people who built iceoryx2 obviously believe it's worth investing in, which is interesting.
- a_t48 2y agoI'm glad the team is putting in the work to get it working for the rest of us.