Replies: 2 comments
-
@shuhaowu The jittering you observed is known and fixed on iceoryx master, see: #1374 The cause was the keep-alive monitoring which send a message via unix domain sockets which caused the jittering. This jittering should not occur as long as you do not start You can measure the latency yourself with the https://github.com/eclipse-iceoryx/iceoryx/tree/master/iceoryx_examples/iceperf example. The setup is that leader sends a message to the follower and the follower response to this message. The time from sending the message until the response is arriving is measured and divided by 2 to calculate the latency (2 since we are sending 2 messages). When I run the benchmark myself I have an average latency of ~1.2us. Could you please hint me where you saw the statement with the 0.9us? I think the number alone is not accurate enough (bad style on our side) and here I would make it more reproducible for the public. I would remeasure everything on a defined hardware like the raspberry pi 4b with raspbian so that everyone can reproduce it. |
Beta Was this translation helpful? Give feedback.
-
Thanks! I'll take a look at the master branch. About the 0.9us figure, I'm looking at this graph and reading it approximately: |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I'm looking at using Iceoryx 2.0.2 to do thread-to-thread communications within the same process in a real-time process (single process mode). My use case is most of the time going to be single-consumer-single-producer, although I don't necessarily want to limit myself to that. According to Iceoryx's documentation, it advertises the ability to pass messages with <1us of latency. I'm wondering how is Iceoryx configured for this to occur?
For reference, I've ran a benchmark where I send a single message from one thread to another for 20 minutes at 200Hz. The threads are running in real-time. This was done on a machine with the RT kernel and CPU pinned to C0, which should eliminate any jitter due to CPU frequency scaling. I also tested the scheduling latency of the computer, which is no more than 70us. The result are as follows. I also included using boost's spsc_queue doing the same thing as a reference.
So according to this, the mean latency for iceoryx is on the order of 3us, with maximum of about 18us. This is good enough for what I'm using it for, but it does raise a few questions:
Sorry for the lengthy question and thanks in advanced.
Beta Was this translation helpful? Give feedback.
All reactions