4

有没有办法为未绑定的工作队列的 kthreads(那些名为 kthread/uXX:y 的线程)设置 CPU 亲和性?像用于常规工作队列的 cpu 掩码之类的东西。使用任务集为每个 kthread 设置它是个好主意吗?

4

1 回答 1

4

Workqueue 子系统导出 sysfs 属性,用于为未绑定的工作人员设置 cpu 亲和性。代码可以在Workqueue.c

    5040 static ssize_t wq_unbound_cpumask_store(struct device *dev,
    5041                 struct device_attribute *attr, const char *buf, size_t count)
    5042 {
    5043         cpumask_var_t cpumask;
    5044         int ret;
    5045 
    5046         if (!zalloc_cpumask_var(&cpumask, GFP_KERNEL))
    5047                 return -ENOMEM;
    5048 
    5049         ret = cpumask_parse(buf, cpumask);
    5050         if (!ret)
    5051                 ret = workqueue_set_unbound_cpumask(cpumask);
    5052 
    5053         free_cpumask_var(cpumask);
    5054         return ret ? ret : count;
    5055 }
    5056 
    5057 static struct device_attribute wq_sysfs_cpumask_attr =
    5058         __ATTR(cpumask, 0644, wq_unbound_cpumask_show,
    5059                wq_unbound_cpumask_store)

因此任何用户空间应用程序都可以写入 sysfs 描述符以设置未绑定的工作队列 cpu 掩码。

我希望这能回答您的问题。

于 2015-11-27T09:29:08.267 回答