Added method to set thread affinity for a certain core #140
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
this PR adds an additional method which allows "binding" the calling thread to a certain core. In fact it sets the thread affinity to a certain core.
Even though @fmauch figured out in his tests (https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/60f08359f6/ur_robot_driver/doc/real_time_benchmarking.md) that setting the core affinity didn't change to much for his system, this can not be assumed in general. (See https://stackoverflow.com/questions/24645880/set-cpu-affinity-when-create-a-thread for a nice write up) Especially for more heterogene systems like the AMD Ryzen processes with 3D cache which is only connected to one processor die tying a thread to a certain core makes sense.
Having the scheduler preferre a certain core for a certain thread can reduce cache misses and avoid context switches.