从调度程序屏蔽 CPU - 如何从内核移动绑定的内核线程?

ell*_*iel 5 cpu scheduling centos interrupt multithreading

假设我有 4 个物理内核(索引为 0-3)并且我将内核 1-3 专用于用户应用程序的屏蔽,并尝试将所有系统线程引导到内核 0 上。我正在关注此处的答案并使用cset

# /usr/local/bin/cset shield --cpu 1-3  
cset: --> activating shielding:
cset: moving 145 tasks from root into system cpuset...
[==================================================]%
cset: "system" cpuset of CPUSPEC(0) with 145 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法将所有内核线程移动到核心 0 上:

# cset shield --kthread on
cset shield --kthread on
cset: --> activating kthread shielding
cset: kthread shield activated, moving 175 tasks into system cpuset...
[==================================================]%
cset: **> 30 tasks are not movable, impossible to move
cset: done
Run Code Online (Sandbox Code Playgroud)

Ubuntu的手册页说,该--kthread标志只适用于未绑定内核线程:

   -k on|off, --kthread=on|off
       shield from unbound interrupt threads as well
Run Code Online (Sandbox Code Playgroud)

所以我想我也需要将绑定的内核线程从内核 1-3 移开。我怎么做?(最好在 CentOS 上。)