Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何将某些内核线程绑定到给定的内核?_Linux_Multithreading_Performance_Process_Linux Kernel - Fatal编程技术网

Linux 如何将某些内核线程绑定到给定的内核?

Linux 如何将某些内核线程绑定到给定的内核?,linux,multithreading,performance,process,linux-kernel,Linux,Multithreading,Performance,Process,Linux Kernel,出于性能方面的原因,我有许多内核线程想要从给定的内核中删除。其中有些我可以使用taskset移动,但有些我不能 特别是,我看到迁移、看门狗、rcuc等进程对我尝试重新绑定它们没有响应 例如,如果我尝试重新绑定看门狗进程,我会得到以下结果: # taskset -pc 0 207 pid 207's current affinity list: 0 sched_setaffinity: Invalid argument failed to set pid 207's affinity. 如何从内

出于性能方面的原因,我有许多内核线程想要从给定的内核中删除。其中有些我可以使用taskset移动,但有些我不能

特别是,我看到迁移、看门狗、rcuc等进程对我尝试重新绑定它们没有响应

例如,如果我尝试重新绑定看门狗进程,我会得到以下结果:

# taskset -pc 0 207
pid 207's current affinity list: 0
sched_setaffinity: Invalid argument
failed to set pid 207's affinity.
如何从内核中取出这些,以便出于性能原因正确隔离它们


我怀疑这些过程正在干扰我的完整dynticks模式

几个内核线程绑定到一个特定的内核,以实现SMP基础设施所需的功能,如同步、中断处理等。例如,
kworker
migration
ksoftirqd
线程通常每个虚拟处理器有一个实例(例如,4核8线程CPU上有8个线程)

您不能(也不应该能够)移动这些线程——没有它们,处理器将无法再被系统完全使用


到底为什么要移动这些线程?

我怀疑它们干扰了我的内核3.10中的完整dynticks模式。我在内核上只运行了另外一个进程,我在内核构建中启用了tickless模式,我在不同线程上调用了rcu,但它仍然不工作。我猜是内核线程。@Nathandromal:你能定义“不工作”吗?你想实现什么?如果我的进程是唯一在该内核上运行的东西,那么在启用全dynticks的情况下,我希望每秒只有一个本地计时器中断fire。但是,当我在核心上设置了亲和力的情况下运行进程时,本地计时器中断继续每秒触发1000次。@Nathandromal:这对进程有何影响?你是在试图解决一个特定的问题,还是仅仅出于好奇?我有一个16核的CPU,我正在使用前8核的高性能虚拟机。我正在运行实时任务,我正在尽我所能减少延迟和口吃。到目前为止,我已经成功地将这些内核与用户区进程隔离(使用cpuset),但是内核线程和中断仍然在它们上面处理。甚至在我启动虚拟机之前,我就可以在内核上看到一些活动峰值。当我的虚拟机运行时,我能做什么来阻止我的主机系统使用这些内核呢?