Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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 内核创建的线程的亲缘关系是否可以通过设置;cpuset“是什么;?_Linux_Multithreading_Linux Kernel_Scheduling_Cpuset - Fatal编程技术网

Linux 内核创建的线程的亲缘关系是否可以通过设置;cpuset“是什么;?

Linux 内核创建的线程的亲缘关系是否可以通过设置;cpuset“是什么;?,linux,multithreading,linux-kernel,scheduling,cpuset,Linux,Multithreading,Linux Kernel,Scheduling,Cpuset,用户进程的关联性可以通过cpuset(7)设置 内核创建的线程的亲和力可以通过cpuset(7)设置吗 我发现一些kthread的亲和性可以通过cpuset来设置实际上([rcu_sched],[rcu_bh]),一些kthread不能([nvme delete wq],[kthread],我得到了错误:“echo:write error:Invalid argument”) 如果您有更好的解决方案,请让我知道。cpuset(7)是一个手册页,介绍Linux用户空间API的一般情况。如页面所述,

用户进程的关联性可以通过
cpuset(7)
设置

内核创建的线程的亲和力可以通过
cpuset(7)
设置吗

我发现一些kthread的亲和性可以通过
cpuset
来设置实际上([rcu_sched],[rcu_bh]),一些kthread不能([nvme delete wq],[kthread],我得到了错误:“echo:write error:Invalid argument”)

如果您有更好的解决方案,请让我知道。

cpuset(7)
是一个手册页,介绍Linux用户空间API的一般情况。如页面所述,您可以使用
sched_setaffinity(2)
syscall将任务限制在特定的一组CPU上

sched_setaffinity(2)
是一个系统调用,这一事实应该已经让您注意到该功能是用于用户空间的。如果您正在编写内核代码,那么内核线程为此有不同的内部API(请参阅):

  • ,可用于将kthread绑定到由其数字ID指定的单个CPU
  • ,可用于将kthread绑定到由
    struct cpumask
    定义的一个或多个CPU。您可以通过初始化右侧的
    struct cpumask
    。此API类似于
    sched_setaffinity(2)
    syscall,但适用于kthreads
cpuset(7)
是一个手册页面,它一般描述Linux用户空间API。如页面所述,您可以使用
sched_setaffinity(2)
syscall将任务限制在特定的一组CPU上

sched_setaffinity(2)
是一个系统调用,这一事实应该已经让您注意到该功能是用于用户空间的。如果您正在编写内核代码,那么内核线程为此有不同的内部API(请参阅):

  • ,可用于将kthread绑定到由其数字ID指定的单个CPU
  • ,可用于将kthread绑定到由
    struct cpumask
    定义的一个或多个CPU。您可以通过初始化右侧的
    struct cpumask
    。此API类似于
    sched_setaffinity(2)
    syscall,但适用于kthreads

很高兴再次见到您。感谢您的帮助。我发现一些kthread的亲和性可以通过
cpuset
设置(
[rcu\u sched],[rcu\u bh]
),一些kthread无法(
[nvme delete wq],[kthread]
,我得到错误:“echo:write error:Invalid argument”)。出于某种原因,我认为您正在编写内核代码,并希望从创建线程的代码中设置优先级。嗯,我很困惑,为什么要修改kthread的关联?我真的要警告你,它可能会使你的系统崩溃。我主要开发用户空间应用程序。我对内核略知一二。我想做的是,我只想为我的进程保留一个内核。我希望尽可能多地将包含kthreads的线程迁移到其他cpu。@sunshilong369我根本不担心kthreads。在其他CPU上移动所有用户空间进程,并将进程固定在该CPU上。内核线程有时是必不可少的(例如,它们可能是为了服务系统调用或其他事情而创建的),并且无论如何都会重新出现,并且在任何情况下,通常对CPU负载的贡献几乎为零。事实上,如果你使用
htop
等工具查看内核线程的cpu时间,你会发现它非常低(例如,在我运行1天的pc上,我看到的最高cpu时间是
rcu_sched
,cpu时间为28分钟)。我明白了。谢谢你的帮助。很高兴再次见到你。谢谢你的帮助。我发现一些KThread的亲和性可以通过
cpuset
来设置。事实上(
[rcu\u sched],[rcu\u bh]
),一些KThread无法(
[nvme delete wq],[kthread]
),我得到了错误:“echo:write error:Invalid argument”)。出于某种原因,我认为您正在编写内核代码,并希望从创建线程的代码中设置优先级。嗯,我很困惑,为什么要修改kthread的关联?我真的要警告你,它可能会使你的系统崩溃。我主要开发用户空间应用程序。我对内核略知一二。我想做的是,我只想为我的进程保留一个内核。我希望尽可能多地将包含kthreads的线程迁移到其他cpu。@sunshilong369我根本不担心kthreads。在其他CPU上移动所有用户空间进程,并将进程固定在该CPU上。内核线程有时是必不可少的(例如,它们可能是为了服务系统调用或其他事情而创建的),并且无论如何都会重新出现,并且在任何情况下,通常对CPU负载的贡献几乎为零。事实上,如果你使用
htop
等工具查看内核线程的cpu时间,你会发现它非常低(例如,在我的pc上运行1天,我看到的最高cpu时间是
rcu_sched
,有28分钟的cpu时间)。我明白了。谢谢你的帮助。