README.md suggests using isolcpus=2,3 and gives an example of how to run a single-threaded executor on CPU2 by taskset -c 2.
But there is a problem when someone wants to test a multi-threaded executor. isolcpus basically disables load balancing, so a process can use only one CPU even if ran with taskset -c 2,3. For a process to use multiple isolated CPUs, RT priority class (e.g., SCHED_FIFO) is needed since the Linux RT scheduler performs like a global work-conserving scheduler for all assigned CPUs. In short, we need something like:
taskset -c 2,3 chrt -f 90 <path_to_multithreaded_executor>
I guess colcon test scripts need to be updated so that, when TEST_PLATFORM is enabled, it runs executors with taskset and chrt.
README.md suggests using
isolcpus=2,3and gives an example of how to run a single-threaded executor on CPU2 bytaskset -c 2.But there is a problem when someone wants to test a multi-threaded executor.
isolcpusbasically disables load balancing, so a process can use only one CPU even if ran withtaskset -c 2,3. For a process to use multiple isolated CPUs, RT priority class (e.g., SCHED_FIFO) is needed since the Linux RT scheduler performs like a global work-conserving scheduler for all assigned CPUs. In short, we need something like:I guess
colcon testscripts need to be updated so that, whenTEST_PLATFORMis enabled, it runs executors with taskset and chrt.