-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a scheduler to the node api to manage fairness among inputs #728
Add a scheduler to the node api to manage fairness among inputs #728
Conversation
I don't think reordering events is a good idea. Events are not units of work, but rather things that happened. So I think we should try to report the events that happened as accurately as possible, including the order they happened in. The order can be very important in some use cases. For example, consider an |
To take you're example, if one of the input is spamming event at a very high frequency with a very long queue size, the node will never receive the There is no reordering of messages from each |
It will receive the error event, it just receives the events that happened earlier before it.
If the node is not interested in all the queue items, why not set a smaller queue size? Also, if the event really occurs at such a high frequency that the queue is filled considerably then the queue will also overflow quickly. In that case, we remove old events, thereby moving the error event further to front of the queue.
Yeah, but it recorders the events of different data_ids with respect to each other. So nodes can no longer rely that the events are returned in chronological order. |
The thing is that they can be a considerable time between the error event and the moment it reacts to it, which can be very dangerous. This also True for stop event.
So basically if there is two event with different frequency say.
And the compute time is always about 10Hz <-> 100ms, what is going to happen is that you will invalidate a lot of event A before reaching to event B which is going to be older than any latest event A, and so you will always return event B. This is why we need fairness between input.
I think that the issue is that people want to have the latest data of each topic not a chronological order of all topic. This is the priority. |
d5d647c
to
9fbb7e3
Compare
Added a control node for chongyoucar to receive text commands, 'forward' 'left' 'right' 'backward' and 'stop' to control the car's forward turning and backward stopping etc. Author: Leon <[email protected]>
…other is an array of six f64's - three f64 array [x, w, speed] - six f64 array [x, y, z, rx, ry, rz] only used x, rz, and the speed is default 0.2 https://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html Author: Leon <[email protected]>
- six f64 array [x, y, z, rx, ry, rz] only used x and rz see https://docs.ros.org/en/noetic/api/geometry_msgs/html/msg/Twist.html Author: Leon <[email protected]>
Author: Leon <[email protected]>
macos-12 is deprecated
9fbb7e3
to
1cc508c
Compare
4f3c6e4
into
move-queue-management-into-node
This PR contains a lot of commits that have nothing to do with the main changes. Some commits even seem to be duplicates of commits that were merged to |
This PR fixes the issue that dora node are not fair between inputs when frequency of both inputs are different and the processing time between input is high. What end up happening is that one input might be overwhelmingly called as it's frequency is higher or lower depending on the queue_size.
This PR fixes this issue by adding a scheduler that is always going to check that the next input is the one that has been waiting the longest within the queue making fairness between inputs.
This PR is a follow up PR to #724 that is rewriting the queue within nodes instead of the daemon.