]> asedeno.scripts.mit.edu Git - linux.git/commit
workqueue: Provide queue_work_node to queue work near a given NUMA node
authorAlexander Duyck <alexander.h.duyck@linux.intel.com>
Tue, 22 Jan 2019 18:39:26 +0000 (10:39 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 31 Jan 2019 13:20:54 +0000 (14:20 +0100)
commit8204e0c1113d6b7f599bcd7ebfbfde72e76c102f
tree3edc0e2dfbf5e67c763371c4c132b2f1b4ebc211
parentef0ff68351be4fd83bec2d797f0efdc0174a55a4
workqueue: Provide queue_work_node to queue work near a given NUMA node

Provide a new function, queue_work_node, which is meant to schedule work on
a "random" CPU of the requested NUMA node. The main motivation for this is
to help assist asynchronous init to better improve boot times for devices
that are local to a specific node.

For now we just default to the first CPU that is in the intersection of the
cpumask of the node and the online cpumask. The only exception is if the
CPU is local to the node we will just use the current CPU. This should work
for our purposes as we are currently only using this for unbound work so
the CPU will be translated to a node anyway instead of being directly used.

As we are only using the first CPU to represent the NUMA node for now I am
limiting the scope of the function so that it can only be used with unbound
workqueues.

Acked-by: Tejun Heo <tj@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/workqueue.h
kernel/workqueue.c