用户进程的亲缘关系可以由cpuset(7)设置。
可以通过cpuset(7)设置内核创建的线程的亲和力吗?
我发现cpuset确实(rcu_sched,rcu_bh)可以设置某些k线程的亲缘关系,有些k线程不能设置(nvme wq,k线程d,我得到了错误:“echo:写错误:无效参数”)。
如果你有更好的解决办法,请告诉我。
发布于 2020-05-21 16:00:37
cpuset(7)是一个一般描述Linux的手册页面。如页面所述,您可以使用sched_setaffinity(2) syscall将任务限制为特定的CPU集。
sched_setaffinity(2)是一个syscall这一事实应该已经让您注意到,该功能是用于用户空间使用的。如果您正在编写内核代码,内核线程有不同的内部API(参见kthread.h):
kthread_bind(),,它可用于将线程绑定到由其数字ID指定的单个CPU。kthread_bind_mask(),可用于将该线程绑定到由struct cpumask定义的一个或多个CPU。您可以通过struct cpumask来初始化正确的cpumask_set_cpu()。此API类似于sched_setaffinity(2) syscall,但适用于klines.。
https://stackoverflow.com/questions/61933008
复制相似问题