isolcpus可以使选定的几个cpu核不参与负载均衡的调度,这样的话,我们可以在系统启动的时候,在cmdline中增加如下参数:
isolcpus=4,5,6,7(假如我们想保留这四个cpu核的话)
这样的话,系统通常的负载都会跑到系统其他的cpu核,我们保留了这四个核给实时任务。
然后,我们可以使用cpu affinity来将实时任务亲和到保留的几个核的其中一个,比如:
cyclictest -a 7 -- cyclictest使用pthread_setaffinity_np将实时任务亲和到指定CPU。
在我们自己的实时任务,可以用taskset来设置cpu affinity。
实测效果对实时指标确实提升了不少。
后续还可以使用cpuset和cgroup来组织用于实时的cpu核和实时任务,以达到上述目的。