用户进程的亲和性可以通过设置cpuset(7)
。
内核创建的线程的亲和性可以通过cpuset(7)
?
我发现一些kthreads的affinity可以通过cpuset
确实([rcu_sched],[rcu_bh])设置,一些kthreads不能([nvme-delete-wq],[kthreadd],我得到了错误:“ echo: write错误:无效的参数”)。
如果您有更好的解决方案,请告诉我。
用户进程的亲和性可以通过设置cpuset(7)
。
内核创建的线程的亲和性可以通过cpuset(7)
?
我发现一些kthreads的affinity可以通过cpuset
确实([rcu_sched],[rcu_bh])设置,一些kthreads不能([nvme-delete-wq],[kthreadd],我得到了错误:“ echo: write错误:无效的参数”)。
如果您有更好的解决方案,请告诉我。
cpuset(7)
是一个描述 Linux用户空间API 的手册页。如页面所述,您可以使用sched_setaffinity(2)
系统调用将任务限制为一组特定的 CPU。
系统调用这一事实sched_setaffinity(2)
应该已经让您注意到该功能是为用户空间使用而设计的。如果您正在编写内核代码,内核线程为此目的具有不同的内部 API(请参阅 参考资料kthread.h
):
kthread_bind()
,可用于将 kthread 绑定到由其数字 ID 指定的单个 CPU。kthread_bind_mask()
,可用于将 kthread 绑定到由 a 定义的一个或多个 CPU struct cpumask
。您可以struct cpumask
通过cpumask_set_cpu()
. 此 API 类似于sched_setaffinity(2)
系统调用,但用于 kthreads。