有没有办法为未绑定的工作队列的k线程(那些名为kthread / uXX:y)设置CPU亲和力? 像普通工作队列的cpu掩码。 使用taskset为每个kthread设置它是个好主意吗?
Workqueue子系统导出sysfs属性,用于为未绑定的worker设置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掩码。
我希望这回答您的查询。