Linux 如何设置内核线程的关联性?

Linux 如何设置内核线程的关联性?,linux,linux-kernel,affinity,Linux,Linux Kernel,Affinity,在Linux内核3.11.0-13-generic上,我无法设置内核线程的关联性,如下例所示: >ps -p 828 PID TTY TIME CMD 828 ? 00:00:00 nfsiod >sudo taskset -pc 7 828 pid 828's current affinity list: 0-11 taskset: failed to set pid 828's affinity: Invalid argument >

在Linux内核
3.11.0-13-generic
上,我无法设置内核线程的关联性,如下例所示:

>ps -p 828
  PID TTY          TIME CMD
  828 ?        00:00:00 nfsiod
>sudo taskset -pc 7 828
pid 828's current affinity list: 0-11
taskset: failed to set pid 828's affinity: Invalid argument
>sudo taskset -pc 7 17551
pid 17551's current affinity list: 7
pid 17551's new affinity list: 7
>

17551是一个用户进程,nfsiod是一个内核线程。如何更改作为内核线程运行的nfsiod deamon的关联性?

许多内核线程设置标志
PF\u NO\u SETAFFINITY

#define PF_NO_SETAFFINITY 0x04000000/*用户不允许干预CPU#*/

若要更改相关性,您必须更改内核。

是否假设您要查找“niceness”?
taskset
未进行编程。您是否正在寻找从代码内部执行此操作的方法?@MSalters否我正在寻找在现有内核线程上执行此操作的方法。@MSalters Arrrf,我明白您的意思,我应该在unix.stackexchange.com上发布taht,不是吗?有没有办法将问题迁移到那边,或者我应该手动再问一遍?@ManuelSelva:我认为没有从这里迁移到Unix.SE的路径,对不起。谢谢你的回答。启动参数isolcpus是否覆盖此限制?
isolcpus
只是添加了另一个限制。它添加了另一个限制是什么意思?例如,isolcpus=1,2,3是否确保内核线程将其亲缘关系设置为0,1,2,3(在四核处理器上,可以在任何地方运行)时仅在cpu 0上运行?isolcpus限制独立于
PF_NO_SETAFFINITY
检查。(它会影响整个系统,因此与这个问题无关。)你为什么不试试呢?